From f5900596513e4359fc839ba361da085674e90b68 Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Mon, 13 Nov 2023 19:33:49 +0000 Subject: [PATCH] SIM-115: update simulator to use latest E2SM KPM version 3 Change-Id: I79978420dd6e2242e16514b81f9817db330725cb Signed-off-by: Tuan Nguyen --- e2sim/CMakeLists.txt | 2 +- e2sim/Dockerfile_kpm | 88 + e2sim/asn1c/AMF-UE-NGAP-ID.c | 77 + e2sim/asn1c/AMF-UE-NGAP-ID.h | 45 + e2sim/asn1c/AMFName.c | 116 + e2sim/asn1c/AMFName.h | 45 + e2sim/asn1c/AMFPointer.c | 77 + e2sim/asn1c/AMFPointer.h | 45 + e2sim/asn1c/AMFRegionID.c | 77 + e2sim/asn1c/AMFRegionID.h | 45 + e2sim/asn1c/AMFSetID.c | 77 + e2sim/asn1c/AMFSetID.h | 45 + e2sim/asn1c/ANY.c | 80 + e2sim/asn1c/ANY.h | 84 + e2sim/asn1c/ANY_aper.c | 190 + e2sim/asn1c/ANY_ber.c | 116 + e2sim/asn1c/ANY_jer.c | 17 + e2sim/asn1c/ANY_uper.c | 108 + e2sim/asn1c/ANY_xer.c | 22 + e2sim/asn1c/BIT_STRING.c | 213 + e2sim/asn1c/BIT_STRING.h | 75 + e2sim/asn1c/BIT_STRING_jer.c | 70 + e2sim/asn1c/BIT_STRING_print.c | 69 + e2sim/asn1c/BIT_STRING_rfill.c | 124 + e2sim/asn1c/BIT_STRING_uper.c | 244 + e2sim/asn1c/BIT_STRING_xer.c | 70 + e2sim/asn1c/BOOLEAN.c | 128 + e2sim/asn1c/BOOLEAN.h | 70 + e2sim/asn1c/BOOLEAN_aper.c | 61 + e2sim/asn1c/BOOLEAN_ber.c | 104 + e2sim/asn1c/BOOLEAN_jer.c | 32 + e2sim/asn1c/BOOLEAN_print.c | 33 + e2sim/asn1c/BOOLEAN_rfill.c | 56 + e2sim/asn1c/BOOLEAN_uper.c | 58 + e2sim/asn1c/BOOLEAN_xer.c | 74 + e2sim/asn1c/BinIndex.c | 71 + e2sim/asn1c/BinIndex.h | 45 + e2sim/asn1c/BinRangeDefinition.c | 105 + e2sim/asn1c/BinRangeDefinition.h | 49 + e2sim/asn1c/BinRangeItem.c | 102 + e2sim/asn1c/BinRangeItem.h | 47 + e2sim/asn1c/BinRangeList.c | 68 + e2sim/asn1c/BinRangeList.h | 44 + e2sim/asn1c/BinRangeValue.c | 88 + e2sim/asn1c/BinRangeValue.h | 59 + e2sim/asn1c/CGI.c | 90 + e2sim/asn1c/CGI.h | 61 + e2sim/{src/ASN1c => asn1c}/CMakeLists.txt | 0 e2sim/asn1c/Cause.c | 160 + e2sim/asn1c/Cause.h | 71 + e2sim/asn1c/CauseE2node.c | 63 + e2sim/asn1c/CauseE2node.h | 54 + e2sim/asn1c/CauseMisc.c | 69 + e2sim/asn1c/CauseMisc.h | 57 + e2sim/asn1c/CauseProtocol.c | 75 + e2sim/asn1c/CauseProtocol.h | 60 + e2sim/asn1c/CauseRICrequest.c | 101 + e2sim/asn1c/CauseRICrequest.h | 73 + e2sim/asn1c/CauseRICservice.c | 67 + e2sim/asn1c/CauseRICservice.h | 56 + e2sim/asn1c/CauseTransport.c | 65 + e2sim/asn1c/CauseTransport.h | 55 + e2sim/asn1c/CoreCPID.c | 90 + e2sim/asn1c/CoreCPID.h | 58 + e2sim/asn1c/Criticality.c | 65 + e2sim/asn1c/Criticality.h | 53 + e2sim/asn1c/CriticalityDiagnostics-IE-Item.c | 102 + e2sim/asn1c/CriticalityDiagnostics-IE-Item.h | 48 + e2sim/asn1c/CriticalityDiagnostics-IE-List.c | 68 + e2sim/asn1c/CriticalityDiagnostics-IE-List.h | 44 + e2sim/asn1c/CriticalityDiagnostics.c | 142 + e2sim/asn1c/CriticalityDiagnostics.h | 54 + e2sim/asn1c/DistMeasurementBinRangeItem.c | 84 + e2sim/asn1c/DistMeasurementBinRangeItem.h | 46 + e2sim/asn1c/DistMeasurementBinRangeList.c | 68 + e2sim/asn1c/DistMeasurementBinRangeList.h | 44 + e2sim/asn1c/E-UTRA-ARFCN.c | 71 + e2sim/asn1c/E-UTRA-ARFCN.h | 45 + e2sim/asn1c/E-UTRA-PCI.c | 71 + e2sim/asn1c/E-UTRA-PCI.h | 45 + e2sim/asn1c/E-UTRA-TAC.c | 72 + e2sim/asn1c/E-UTRA-TAC.h | 44 + e2sim/asn1c/E2AP-IEs_ENB-ID.c | 276 + e2sim/asn1c/E2AP-IEs_ENB-ID.h | 61 + e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.c | 77 + e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.h | 45 + e2sim/asn1c/E2AP-IEs_GNB-DU-ID.c | 77 + e2sim/asn1c/E2AP-IEs_GNB-DU-ID.h | 45 + e2sim/asn1c/E2AP-IEs_GlobalENB-ID.c | 84 + e2sim/asn1c/E2AP-IEs_GlobalENB-ID.h | 46 + e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.c | 84 + e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.h | 46 + e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.c | 77 + e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.h | 45 + e2sim/asn1c/E2AP-PDU.c | 109 + e2sim/asn1c/E2AP-PDU.h | 61 + e2sim/asn1c/E2RemovalFailure.c | 66 + e2sim/asn1c/E2RemovalFailure.h | 44 + e2sim/asn1c/E2RemovalRequest.c | 66 + e2sim/asn1c/E2RemovalRequest.h | 44 + e2sim/asn1c/E2RemovalResponse.c | 66 + e2sim/asn1c/E2RemovalResponse.h | 44 + e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.c | 276 + e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.h | 61 + e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.c | 77 + e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.h | 45 + e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.c | 77 + e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.h | 45 + e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.c | 84 + e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.h | 46 + e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.c | 84 + e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.h | 46 + e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.c | 77 + e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.h | 45 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.c | 124 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.h | 52 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.c | 84 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.h | 46 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.c | 105 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.h | 50 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.c | 84 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.h | 46 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.c | 84 + e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.h | 46 + e2sim/asn1c/E2SM-KPM-ActionDefinition.c | 223 + e2sim/asn1c/E2SM-KPM-ActionDefinition.h | 78 + .../E2SM-KPM-EventTriggerDefinition-Format1.c | 167 + .../E2SM-KPM-EventTriggerDefinition-Format1.h | 45 + e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.c | 129 + e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.h | 65 + e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.c | 448 + e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.h | 49 + e2sim/asn1c/E2SM-KPM-IndicationHeader.c | 129 + e2sim/asn1c/E2SM-KPM-IndicationHeader.h | 65 + e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.c | 105 + e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.h | 50 + e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.c | 104 + e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.h | 48 + e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.c | 66 + e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.h | 44 + e2sim/asn1c/E2SM-KPM-IndicationMessage.c | 167 + e2sim/asn1c/E2SM-KPM-IndicationMessage.h | 70 + e2sim/asn1c/E2SM-KPM-RANfunction-Description.c | 292 + e2sim/asn1c/E2SM-KPM-RANfunction-Description.h | 60 + e2sim/asn1c/E2connectionSetupFailed-Item.c | 84 + e2sim/asn1c/E2connectionSetupFailed-Item.h | 46 + e2sim/asn1c/E2connectionSetupFailed-List.c | 68 + e2sim/asn1c/E2connectionSetupFailed-List.h | 44 + e2sim/asn1c/E2connectionUpdate-Item.c | 84 + e2sim/asn1c/E2connectionUpdate-Item.h | 46 + e2sim/asn1c/E2connectionUpdate-List.c | 68 + e2sim/asn1c/E2connectionUpdate-List.h | 44 + e2sim/asn1c/E2connectionUpdate.c | 66 + e2sim/asn1c/E2connectionUpdate.h | 44 + e2sim/asn1c/E2connectionUpdateAcknowledge.c | 66 + e2sim/asn1c/E2connectionUpdateAcknowledge.h | 44 + e2sim/asn1c/E2connectionUpdateFailure.c | 66 + e2sim/asn1c/E2connectionUpdateFailure.h | 44 + e2sim/asn1c/E2connectionUpdateRemove-Item.c | 66 + e2sim/asn1c/E2connectionUpdateRemove-Item.h | 44 + e2sim/asn1c/E2connectionUpdateRemove-List.c | 68 + e2sim/asn1c/E2connectionUpdateRemove-List.h | 44 + e2sim/asn1c/E2nodeComponentConfigAddition-Item.c | 102 + e2sim/asn1c/E2nodeComponentConfigAddition-Item.h | 48 + e2sim/asn1c/E2nodeComponentConfigAddition-List.c | 68 + e2sim/asn1c/E2nodeComponentConfigAddition-List.h | 44 + .../asn1c/E2nodeComponentConfigAdditionAck-Item.c | 102 + .../asn1c/E2nodeComponentConfigAdditionAck-Item.h | 48 + .../asn1c/E2nodeComponentConfigAdditionAck-List.c | 68 + .../asn1c/E2nodeComponentConfigAdditionAck-List.h | 44 + e2sim/asn1c/E2nodeComponentConfigRemoval-Item.c | 84 + e2sim/asn1c/E2nodeComponentConfigRemoval-Item.h | 46 + e2sim/asn1c/E2nodeComponentConfigRemoval-List.c | 68 + e2sim/asn1c/E2nodeComponentConfigRemoval-List.h | 44 + e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.c | 102 + e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.h | 48 + e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.c | 68 + e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.h | 44 + e2sim/asn1c/E2nodeComponentConfigUpdate-Item.c | 102 + e2sim/asn1c/E2nodeComponentConfigUpdate-Item.h | 48 + e2sim/asn1c/E2nodeComponentConfigUpdate-List.c | 68 + e2sim/asn1c/E2nodeComponentConfigUpdate-List.h | 44 + e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.c | 102 + e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.h | 48 + e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.c | 68 + e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.h | 44 + e2sim/asn1c/E2nodeComponentConfiguration.c | 84 + e2sim/asn1c/E2nodeComponentConfiguration.h | 45 + e2sim/asn1c/E2nodeComponentConfigurationAck.c | 145 + e2sim/asn1c/E2nodeComponentConfigurationAck.h | 58 + e2sim/asn1c/E2nodeComponentID.c | 185 + e2sim/asn1c/E2nodeComponentID.h | 76 + e2sim/asn1c/E2nodeComponentInterfaceE1.c | 66 + e2sim/asn1c/E2nodeComponentInterfaceE1.h | 44 + e2sim/asn1c/E2nodeComponentInterfaceF1.c | 66 + e2sim/asn1c/E2nodeComponentInterfaceF1.h | 44 + e2sim/asn1c/E2nodeComponentInterfaceNG.c | 66 + e2sim/asn1c/E2nodeComponentInterfaceNG.h | 44 + e2sim/asn1c/E2nodeComponentInterfaceS1.c | 66 + e2sim/asn1c/E2nodeComponentInterfaceS1.h | 44 + e2sim/asn1c/E2nodeComponentInterfaceType.c | 75 + e2sim/asn1c/E2nodeComponentInterfaceType.h | 60 + e2sim/asn1c/E2nodeComponentInterfaceW1.c | 66 + e2sim/asn1c/E2nodeComponentInterfaceW1.h | 44 + e2sim/asn1c/E2nodeComponentInterfaceX2.c | 88 + e2sim/asn1c/E2nodeComponentInterfaceX2.h | 48 + e2sim/asn1c/E2nodeComponentInterfaceXn.c | 66 + e2sim/asn1c/E2nodeComponentInterfaceXn.h | 44 + e2sim/asn1c/E2nodeConfigurationUpdate.c | 66 + e2sim/asn1c/E2nodeConfigurationUpdate.h | 44 + e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.c | 66 + e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.h | 44 + e2sim/asn1c/E2nodeConfigurationUpdateFailure.c | 66 + e2sim/asn1c/E2nodeConfigurationUpdateFailure.h | 44 + e2sim/asn1c/E2nodeTNLassociationRemoval-Item.c | 84 + e2sim/asn1c/E2nodeTNLassociationRemoval-Item.h | 45 + e2sim/asn1c/E2nodeTNLassociationRemoval-List.c | 68 + e2sim/asn1c/E2nodeTNLassociationRemoval-List.h | 44 + e2sim/asn1c/E2setupFailure.c | 66 + e2sim/asn1c/E2setupFailure.h | 44 + e2sim/asn1c/E2setupRequest.c | 66 + e2sim/asn1c/E2setupRequest.h | 44 + e2sim/asn1c/E2setupResponse.c | 66 + e2sim/asn1c/E2setupResponse.h | 44 + e2sim/asn1c/EN-GNB-ID.c | 108 + e2sim/asn1c/EN-GNB-ID.h | 56 + e2sim/asn1c/ENB-ID-Choice.c | 220 + e2sim/asn1c/ENB-ID-Choice.h | 60 + e2sim/asn1c/ENB-UE-X2AP-ID-Extension.c | 71 + e2sim/asn1c/ENB-UE-X2AP-ID-Extension.h | 45 + e2sim/asn1c/ENB-UE-X2AP-ID.c | 71 + e2sim/asn1c/ENB-UE-X2AP-ID.h | 45 + e2sim/asn1c/ENGNB-ID.c | 108 + e2sim/asn1c/ENGNB-ID.h | 56 + e2sim/asn1c/EUTRA-CGI.c | 84 + e2sim/asn1c/EUTRA-CGI.h | 46 + e2sim/asn1c/EUTRACellIdentity.c | 77 + e2sim/asn1c/EUTRACellIdentity.h | 45 + e2sim/asn1c/EXTERNAL.c | 223 + e2sim/asn1c/EXTERNAL.h | 65 + e2sim/asn1c/ErrorIndication.c | 66 + e2sim/asn1c/ErrorIndication.h | 44 + e2sim/asn1c/FiveGS-TAC.c | 72 + e2sim/asn1c/FiveGS-TAC.h | 44 + e2sim/asn1c/FiveQI.c | 71 + e2sim/asn1c/FiveQI.h | 45 + e2sim/asn1c/FreqBandNrItem.c | 98 + e2sim/asn1c/FreqBandNrItem.h | 42 + e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.c | 67 + e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.h | 46 + e2sim/asn1c/GNB-CU-UE-F1AP-ID.c | 67 + e2sim/asn1c/GNB-CU-UE-F1AP-ID.h | 46 + e2sim/asn1c/GNB-ID-Choice.c | 108 + e2sim/asn1c/GNB-ID-Choice.h | 56 + e2sim/asn1c/GNB-ID.c | 108 + e2sim/asn1c/GNB-ID.h | 56 + e2sim/asn1c/GUAMI.c | 120 + e2sim/asn1c/GUAMI.h | 50 + e2sim/asn1c/GUMMEI.c | 102 + e2sim/asn1c/GUMMEI.h | 48 + e2sim/asn1c/GlobalE2node-ID.c | 128 + e2sim/asn1c/GlobalE2node-ID.h | 67 + e2sim/asn1c/GlobalE2node-eNB-ID.c | 66 + e2sim/asn1c/GlobalE2node-eNB-ID.h | 44 + e2sim/asn1c/GlobalE2node-en-gNB-ID.c | 104 + e2sim/asn1c/GlobalE2node-en-gNB-ID.h | 48 + e2sim/asn1c/GlobalE2node-gNB-ID.c | 123 + e2sim/asn1c/GlobalE2node-gNB-ID.h | 52 + e2sim/asn1c/GlobalE2node-ng-eNB-ID.c | 105 + e2sim/asn1c/GlobalE2node-ng-eNB-ID.h | 50 + e2sim/asn1c/GlobalGNB-ID.c | 84 + e2sim/asn1c/GlobalGNB-ID.h | 46 + e2sim/asn1c/GlobalNG-RANNode-ID.c | 90 + e2sim/asn1c/GlobalNG-RANNode-ID.h | 61 + e2sim/asn1c/GlobalNGRANNodeID.c | 90 + e2sim/asn1c/GlobalNGRANNodeID.h | 61 + e2sim/asn1c/GlobalNgENB-ID.c | 84 + e2sim/asn1c/GlobalNgENB-ID.h | 46 + e2sim/asn1c/GlobalRIC-ID.c | 122 + e2sim/asn1c/GlobalRIC-ID.h | 46 + e2sim/asn1c/GlobalgNB-ID.c | 84 + e2sim/asn1c/GlobalgNB-ID.h | 46 + e2sim/asn1c/GlobalngeNB-ID.c | 84 + e2sim/asn1c/GlobalngeNB-ID.h | 46 + e2sim/asn1c/GranularityPeriod.c | 76 + e2sim/asn1c/GranularityPeriod.h | 46 + e2sim/asn1c/GraphicString.c | 91 + e2sim/asn1c/GraphicString.h | 56 + e2sim/asn1c/GroupID.c | 88 + e2sim/asn1c/GroupID.h | 56 + e2sim/asn1c/INTEGER.c | 738 + e2sim/asn1c/INTEGER.h | 139 + e2sim/asn1c/INTEGER_aper.c | 308 + e2sim/asn1c/INTEGER_ber.c | 72 + e2sim/asn1c/INTEGER_jer.c | 26 + e2sim/asn1c/INTEGER_print.c | 26 + e2sim/asn1c/INTEGER_rfill.c | 92 + e2sim/asn1c/INTEGER_uper.c | 236 + e2sim/asn1c/INTEGER_xer.c | 351 + e2sim/asn1c/IndexToRFSP.c | 71 + e2sim/asn1c/IndexToRFSP.h | 44 + e2sim/asn1c/InitiatingMessage.c | 682 + e2sim/asn1c/InitiatingMessage.h | 130 + e2sim/asn1c/Interface-MessageID.c | 144 + e2sim/asn1c/Interface-MessageID.h | 55 + e2sim/asn1c/InterfaceID-E1.c | 84 + e2sim/asn1c/InterfaceID-E1.h | 46 + e2sim/asn1c/InterfaceID-F1.c | 84 + e2sim/asn1c/InterfaceID-F1.h | 46 + e2sim/asn1c/InterfaceID-NG.c | 66 + e2sim/asn1c/InterfaceID-NG.h | 44 + e2sim/asn1c/InterfaceID-S1.c | 66 + e2sim/asn1c/InterfaceID-S1.h | 44 + e2sim/asn1c/InterfaceID-W1.c | 84 + e2sim/asn1c/InterfaceID-W1.h | 46 + e2sim/asn1c/InterfaceID-X2.c | 148 + e2sim/asn1c/InterfaceID-X2.h | 70 + e2sim/asn1c/InterfaceID-Xn.c | 66 + e2sim/asn1c/InterfaceID-Xn.h | 44 + e2sim/asn1c/InterfaceIdentifier.c | 185 + e2sim/asn1c/InterfaceIdentifier.h | 73 + e2sim/asn1c/InterfaceType.c | 75 + e2sim/asn1c/InterfaceType.h | 58 + e2sim/asn1c/LabelInfoItem.c | 66 + e2sim/asn1c/LabelInfoItem.h | 44 + e2sim/asn1c/LabelInfoList.c | 68 + e2sim/asn1c/LabelInfoList.h | 44 + e2sim/asn1c/LogicalOR.c | 63 + e2sim/asn1c/LogicalOR.h | 54 + e2sim/asn1c/MME-Code.c | 72 + e2sim/asn1c/MME-Code.h | 45 + e2sim/asn1c/MME-Group-ID.c | 72 + e2sim/asn1c/MME-Group-ID.h | 45 + e2sim/asn1c/MME-UE-S1AP-ID.c | 67 + e2sim/asn1c/MME-UE-S1AP-ID.h | 46 + e2sim/asn1c/MMEname.c | 116 + e2sim/asn1c/MMEname.h | 45 + e2sim/asn1c/Makefile.am.libasncodec | 903 + e2sim/asn1c/MatchingCondItem-Choice.c | 90 + e2sim/asn1c/MatchingCondItem-Choice.h | 61 + e2sim/asn1c/MatchingCondItem.c | 86 + e2sim/asn1c/MatchingCondItem.h | 46 + e2sim/asn1c/MatchingCondList.c | 68 + e2sim/asn1c/MatchingCondList.h | 44 + e2sim/asn1c/MatchingUEidItem-PerGP.c | 66 + e2sim/asn1c/MatchingUEidItem-PerGP.h | 44 + e2sim/asn1c/MatchingUEidItem.c | 66 + e2sim/asn1c/MatchingUEidItem.h | 44 + e2sim/asn1c/MatchingUEidList-PerGP.c | 68 + e2sim/asn1c/MatchingUEidList-PerGP.h | 44 + e2sim/asn1c/MatchingUEidList.c | 68 + e2sim/asn1c/MatchingUEidList.h | 44 + e2sim/asn1c/MatchingUEidPerGP-Item.c | 203 + e2sim/asn1c/MatchingUEidPerGP-Item.h | 77 + e2sim/asn1c/MatchingUEidPerGP.c | 68 + e2sim/asn1c/MatchingUEidPerGP.h | 44 + e2sim/asn1c/MatchingUEidPerSubItem.c | 66 + e2sim/asn1c/MatchingUEidPerSubItem.h | 44 + e2sim/asn1c/MatchingUEidPerSubList.c | 68 + e2sim/asn1c/MatchingUEidPerSubList.h | 44 + e2sim/asn1c/MatchingUeCondPerSubItem.c | 86 + e2sim/asn1c/MatchingUeCondPerSubItem.h | 46 + e2sim/asn1c/MatchingUeCondPerSubList.c | 68 + e2sim/asn1c/MatchingUeCondPerSubList.h | 44 + e2sim/asn1c/MeasurementCondItem.c | 105 + e2sim/asn1c/MeasurementCondItem.h | 50 + e2sim/asn1c/MeasurementCondList.c | 68 + e2sim/asn1c/MeasurementCondList.h | 44 + e2sim/asn1c/MeasurementCondUEidItem.c | 124 + e2sim/asn1c/MeasurementCondUEidItem.h | 52 + e2sim/asn1c/MeasurementCondUEidList.c | 68 + e2sim/asn1c/MeasurementCondUEidList.h | 44 + e2sim/asn1c/MeasurementData.c | 68 + e2sim/asn1c/MeasurementData.h | 44 + e2sim/asn1c/MeasurementDataItem.c | 142 + e2sim/asn1c/MeasurementDataItem.h | 55 + e2sim/asn1c/MeasurementInfo-Action-Item.c | 105 + e2sim/asn1c/MeasurementInfo-Action-Item.h | 50 + e2sim/asn1c/MeasurementInfo-Action-List.c | 68 + e2sim/asn1c/MeasurementInfo-Action-List.h | 44 + e2sim/asn1c/MeasurementInfoItem.c | 84 + e2sim/asn1c/MeasurementInfoItem.h | 46 + e2sim/asn1c/MeasurementInfoList.c | 68 + e2sim/asn1c/MeasurementInfoList.h | 44 + e2sim/asn1c/MeasurementLabel.c | 1197 + e2sim/asn1c/MeasurementLabel.h | 127 + e2sim/asn1c/MeasurementRecord.c | 68 + e2sim/asn1c/MeasurementRecord.h | 44 + e2sim/asn1c/MeasurementRecordItem.c | 189 + e2sim/asn1c/MeasurementRecordItem.h | 63 + e2sim/asn1c/MeasurementType.c | 88 + e2sim/asn1c/MeasurementType.h | 59 + e2sim/asn1c/MeasurementTypeID.c | 71 + e2sim/asn1c/MeasurementTypeID.h | 45 + e2sim/asn1c/MeasurementTypeName.c | 116 + e2sim/asn1c/MeasurementTypeName.h | 45 + e2sim/asn1c/NG-RANnodeUEXnAPID.c | 67 + e2sim/asn1c/NG-RANnodeUEXnAPID.h | 46 + e2sim/asn1c/NGENB-CU-UE-W1AP-ID.c | 67 + e2sim/asn1c/NGENB-CU-UE-W1AP-ID.h | 46 + e2sim/asn1c/NR-ARFCN.c | 98 + e2sim/asn1c/NR-ARFCN.h | 44 + e2sim/asn1c/NR-CGI.c | 84 + e2sim/asn1c/NR-CGI.h | 46 + e2sim/asn1c/NR-PCI.c | 71 + e2sim/asn1c/NR-PCI.h | 45 + e2sim/asn1c/NRCellIdentity.c | 77 + e2sim/asn1c/NRCellIdentity.h | 45 + e2sim/asn1c/NRFrequencyBand-List.c | 68 + e2sim/asn1c/NRFrequencyBand-List.h | 44 + e2sim/asn1c/NRFrequencyBandItem.c | 116 + e2sim/asn1c/NRFrequencyBandItem.h | 46 + e2sim/asn1c/NRFrequencyInfo.c | 104 + e2sim/asn1c/NRFrequencyInfo.h | 46 + e2sim/asn1c/NRFrequencyShift7p5khz.c | 65 + e2sim/asn1c/NRFrequencyShift7p5khz.h | 55 + e2sim/asn1c/NULL.c | 113 + e2sim/asn1c/NULL.h | 69 + e2sim/asn1c/NULL_aper.c | 52 + e2sim/asn1c/NULL_ber.c | 63 + e2sim/asn1c/NULL_jer.c | 26 + e2sim/asn1c/NULL_print.c | 20 + e2sim/asn1c/NULL_rfill.c | 31 + e2sim/asn1c/NULL_uper.c | 52 + e2sim/asn1c/NULL_xer.c | 52 + e2sim/asn1c/NativeEnumerated.c | 108 + e2sim/asn1c/NativeEnumerated.h | 76 + e2sim/asn1c/NativeEnumerated_aper.c | 157 + e2sim/asn1c/NativeEnumerated_jer.c | 36 + e2sim/asn1c/NativeEnumerated_uper.c | 135 + e2sim/asn1c/NativeEnumerated_xer.c | 36 + e2sim/asn1c/NativeInteger.c | 152 + e2sim/asn1c/NativeInteger.h | 71 + e2sim/asn1c/NativeInteger_aper.c | 69 + e2sim/asn1c/NativeInteger_ber.c | 130 + e2sim/asn1c/NativeInteger_jer.c | 32 + e2sim/asn1c/NativeInteger_print.c | 43 + e2sim/asn1c/NativeInteger_rfill.c | 83 + e2sim/asn1c/NativeInteger_uper.c | 70 + e2sim/asn1c/NativeInteger_xer.c | 78 + e2sim/asn1c/NativeReal.c | 218 + e2sim/asn1c/NativeReal.h | 79 + e2sim/asn1c/NativeReal_aper.c | 74 + e2sim/asn1c/NativeReal_ber.c | 120 + e2sim/asn1c/NativeReal_jer.c | 23 + e2sim/asn1c/NativeReal_print.c | 24 + e2sim/asn1c/NativeReal_rfill.c | 69 + e2sim/asn1c/NativeReal_uper.c | 73 + e2sim/asn1c/NativeReal_xer.c | 50 + e2sim/asn1c/NgENB-ID.c | 220 + e2sim/asn1c/NgENB-ID.h | 60 + e2sim/asn1c/OBJECT_IDENTIFIER.c | 532 + e2sim/asn1c/OBJECT_IDENTIFIER.h | 184 + e2sim/asn1c/OBJECT_IDENTIFIER_jer.c | 28 + e2sim/asn1c/OBJECT_IDENTIFIER_print.c | 30 + e2sim/asn1c/OBJECT_IDENTIFIER_rfill.c | 73 + e2sim/asn1c/OBJECT_IDENTIFIER_xer.c | 80 + e2sim/asn1c/OCTET_STRING.c | 383 + e2sim/asn1c/OCTET_STRING.h | 165 + e2sim/asn1c/OCTET_STRING_aper.c | 414 + e2sim/asn1c/OCTET_STRING_ber.c | 525 + e2sim/asn1c/OCTET_STRING_jer.c | 151 + e2sim/asn1c/OCTET_STRING_print.c | 65 + e2sim/asn1c/OCTET_STRING_rfill.c | 209 + e2sim/asn1c/OCTET_STRING_uper.c | 319 + e2sim/asn1c/OCTET_STRING_xer.c | 627 + e2sim/asn1c/OPEN_TYPE.c | 63 + e2sim/asn1c/OPEN_TYPE.h | 117 + e2sim/asn1c/OPEN_TYPE_aper.c | 173 + e2sim/asn1c/OPEN_TYPE_ber.c | 90 + e2sim/asn1c/OPEN_TYPE_uper.c | 119 + e2sim/asn1c/OPEN_TYPE_xer.c | 166 + e2sim/asn1c/ObjectDescriptor.c | 91 + e2sim/asn1c/ObjectDescriptor.h | 54 + e2sim/asn1c/PLMN-Identity.c | 72 + e2sim/asn1c/PLMN-Identity.h | 45 + e2sim/asn1c/PLMNIdentity.c | 72 + e2sim/asn1c/PLMNIdentity.h | 45 + e2sim/asn1c/Presence.c | 65 + e2sim/asn1c/Presence.h | 53 + e2sim/asn1c/PrintableString.c | 165 + e2sim/asn1c/PrintableString.h | 56 + e2sim/asn1c/ProcedureCode.c | 71 + e2sim/asn1c/ProcedureCode.h | 61 + e2sim/asn1c/ProtocolIE-Container.c | 2272 ++ e2sim/asn1c/ProtocolIE-Container.h | 462 + e2sim/asn1c/ProtocolIE-ContainerList.c | 9 + e2sim/asn1c/ProtocolIE-ContainerList.h | 23 + e2sim/asn1c/ProtocolIE-ContainerPair.c | 9 + e2sim/asn1c/ProtocolIE-ContainerPair.h | 23 + e2sim/asn1c/ProtocolIE-ContainerPairList.c | 9 + e2sim/asn1c/ProtocolIE-ContainerPairList.h | 23 + e2sim/asn1c/ProtocolIE-Field.c | 24173 +++++++++++++++++++ e2sim/asn1c/ProtocolIE-Field.h | 1994 ++ e2sim/asn1c/ProtocolIE-FieldPair.c | 9 + e2sim/asn1c/ProtocolIE-FieldPair.h | 23 + e2sim/asn1c/ProtocolIE-ID.c | 71 + e2sim/asn1c/ProtocolIE-ID.h | 140 + e2sim/asn1c/ProtocolIE-SingleContainer.c | 1001 + e2sim/asn1c/ProtocolIE-SingleContainer.h | 478 + e2sim/asn1c/QCI.c | 71 + e2sim/asn1c/QCI.h | 45 + e2sim/asn1c/QoSID.c | 88 + e2sim/asn1c/QoSID.h | 56 + e2sim/asn1c/QosFlowIdentifier.c | 71 + e2sim/asn1c/QosFlowIdentifier.h | 45 + e2sim/asn1c/RANUEID.c | 72 + e2sim/asn1c/RANUEID.h | 45 + e2sim/asn1c/RANfunction-Item.c | 120 + e2sim/asn1c/RANfunction-Item.h | 50 + e2sim/asn1c/RANfunction-Name.c | 353 + e2sim/asn1c/RANfunction-Name.h | 48 + e2sim/asn1c/RANfunctionDefinition.c | 39 + e2sim/asn1c/RANfunctionDefinition.h | 44 + e2sim/asn1c/RANfunctionID-Item.c | 84 + e2sim/asn1c/RANfunctionID-Item.h | 46 + e2sim/asn1c/RANfunctionID.c | 71 + e2sim/asn1c/RANfunctionID.h | 45 + e2sim/asn1c/RANfunctionIDcause-Item.c | 84 + e2sim/asn1c/RANfunctionIDcause-Item.h | 46 + e2sim/asn1c/RANfunctionOID.c | 116 + e2sim/asn1c/RANfunctionOID.h | 45 + e2sim/asn1c/RANfunctionRevision.c | 71 + e2sim/asn1c/RANfunctionRevision.h | 45 + e2sim/asn1c/RANfunctions-List.c | 68 + e2sim/asn1c/RANfunctions-List.h | 44 + e2sim/asn1c/RANfunctionsID-List.c | 68 + e2sim/asn1c/RANfunctionsID-List.h | 44 + e2sim/asn1c/RANfunctionsIDcause-List.c | 68 + e2sim/asn1c/RANfunctionsIDcause-List.h | 44 + e2sim/asn1c/REAL.c | 734 + e2sim/asn1c/REAL.h | 122 + e2sim/asn1c/REAL_aper.c | 25 + e2sim/asn1c/REAL_jer.c | 26 + e2sim/asn1c/REAL_print.c | 27 + e2sim/asn1c/REAL_rfill.c | 66 + e2sim/asn1c/REAL_uper.c | 25 + e2sim/asn1c/REAL_xer.c | 103 + e2sim/asn1c/RIC-EventTriggerStyle-Item.c | 102 + e2sim/asn1c/RIC-EventTriggerStyle-Item.h | 48 + e2sim/asn1c/RIC-Format-Type.c | 39 + e2sim/asn1c/RIC-Format-Type.h | 44 + e2sim/asn1c/RIC-ReportStyle-Item.c | 156 + e2sim/asn1c/RIC-ReportStyle-Item.h | 52 + e2sim/asn1c/RIC-Style-Name.c | 116 + e2sim/asn1c/RIC-Style-Name.h | 45 + e2sim/asn1c/RIC-Style-Type.c | 39 + e2sim/asn1c/RIC-Style-Type.h | 44 + e2sim/asn1c/RICQueryFailure.c | 66 + e2sim/asn1c/RICQueryFailure.h | 44 + e2sim/asn1c/RICQueryRequest.c | 66 + e2sim/asn1c/RICQueryRequest.h | 44 + e2sim/asn1c/RICQueryResponse.c | 66 + e2sim/asn1c/RICQueryResponse.h | 44 + e2sim/asn1c/RICaction-AddedForModification-Item.c | 66 + e2sim/asn1c/RICaction-AddedForModification-Item.h | 44 + e2sim/asn1c/RICaction-Admitted-Item.c | 66 + e2sim/asn1c/RICaction-Admitted-Item.h | 44 + e2sim/asn1c/RICaction-Admitted-List.c | 68 + e2sim/asn1c/RICaction-Admitted-List.h | 44 + .../RICaction-ConfirmedForModification-Item.c | 66 + .../RICaction-ConfirmedForModification-Item.h | 44 + e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.c | 66 + e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.h | 44 + ...RICaction-FailedToBeAddedForModification-Item.c | 84 + ...RICaction-FailedToBeAddedForModification-Item.h | 46 + ...action-FailedToBeModifiedForModification-Item.c | 84 + ...action-FailedToBeModifiedForModification-Item.h | 46 + ...Caction-FailedToBeRemovedForModification-Item.c | 84 + ...Caction-FailedToBeRemovedForModification-Item.h | 46 + .../asn1c/RICaction-ModifiedForModification-Item.c | 66 + .../asn1c/RICaction-ModifiedForModification-Item.h | 44 + e2sim/asn1c/RICaction-NotAdmitted-Item.c | 84 + e2sim/asn1c/RICaction-NotAdmitted-Item.h | 46 + e2sim/asn1c/RICaction-NotAdmitted-List.c | 68 + e2sim/asn1c/RICaction-NotAdmitted-List.h | 44 + e2sim/asn1c/RICaction-RefusedToBeModified-Item.c | 84 + e2sim/asn1c/RICaction-RefusedToBeModified-Item.h | 46 + e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.c | 84 + e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.h | 46 + .../asn1c/RICaction-RemovedForModification-Item.c | 66 + .../asn1c/RICaction-RemovedForModification-Item.h | 44 + e2sim/asn1c/RICaction-RequiredToBeModified-Item.c | 84 + e2sim/asn1c/RICaction-RequiredToBeModified-Item.h | 46 + e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.c | 84 + e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.h | 46 + .../RICaction-ToBeAddedForModification-Item.c | 141 + .../RICaction-ToBeAddedForModification-Item.h | 54 + .../RICaction-ToBeModifiedForModification-Item.c | 123 + .../RICaction-ToBeModifiedForModification-Item.h | 52 + .../RICaction-ToBeRemovedForModification-Item.c | 66 + .../RICaction-ToBeRemovedForModification-Item.h | 44 + e2sim/asn1c/RICaction-ToBeSetup-Item.c | 141 + e2sim/asn1c/RICaction-ToBeSetup-Item.h | 54 + e2sim/asn1c/RICactionDefinition.c | 39 + e2sim/asn1c/RICactionDefinition.h | 44 + e2sim/asn1c/RICactionExecutionOrder.c | 71 + e2sim/asn1c/RICactionExecutionOrder.h | 45 + e2sim/asn1c/RICactionID.c | 71 + e2sim/asn1c/RICactionID.h | 45 + e2sim/asn1c/RICactionType.c | 67 + e2sim/asn1c/RICactionType.h | 56 + e2sim/asn1c/RICactions-AddedForModification-List.c | 68 + e2sim/asn1c/RICactions-AddedForModification-List.h | 44 + .../RICactions-ConfirmedForModification-List.c | 68 + .../RICactions-ConfirmedForModification-List.h | 44 + e2sim/asn1c/RICactions-ConfirmedForRemoval-List.c | 68 + e2sim/asn1c/RICactions-ConfirmedForRemoval-List.h | 44 + ...ICactions-FailedToBeAddedForModification-List.c | 68 + ...ICactions-FailedToBeAddedForModification-List.h | 44 + ...ctions-FailedToBeModifiedForModification-List.c | 68 + ...ctions-FailedToBeModifiedForModification-List.h | 44 + ...actions-FailedToBeRemovedForModification-List.c | 68 + ...actions-FailedToBeRemovedForModification-List.h | 44 + .../RICactions-ModifiedForModification-List.c | 68 + .../RICactions-ModifiedForModification-List.h | 44 + e2sim/asn1c/RICactions-RefusedToBeModified-List.c | 68 + e2sim/asn1c/RICactions-RefusedToBeModified-List.h | 44 + e2sim/asn1c/RICactions-RefusedToBeRemoved-List.c | 68 + e2sim/asn1c/RICactions-RefusedToBeRemoved-List.h | 44 + .../asn1c/RICactions-RemovedForModification-List.c | 68 + .../asn1c/RICactions-RemovedForModification-List.h | 44 + e2sim/asn1c/RICactions-RequiredToBeModified-List.c | 68 + e2sim/asn1c/RICactions-RequiredToBeModified-List.h | 44 + e2sim/asn1c/RICactions-RequiredToBeRemoved-List.c | 68 + e2sim/asn1c/RICactions-RequiredToBeRemoved-List.h | 44 + .../RICactions-ToBeAddedForModification-List.c | 68 + .../RICactions-ToBeAddedForModification-List.h | 44 + .../RICactions-ToBeModifiedForModification-List.c | 68 + .../RICactions-ToBeModifiedForModification-List.h | 44 + .../RICactions-ToBeRemovedForModification-List.c | 68 + .../RICactions-ToBeRemovedForModification-List.h | 44 + e2sim/asn1c/RICactions-ToBeSetup-List.c | 68 + e2sim/asn1c/RICactions-ToBeSetup-List.h | 44 + e2sim/asn1c/RICcallProcessID.c | 39 + e2sim/asn1c/RICcallProcessID.h | 44 + e2sim/asn1c/RICcontrolAckRequest.c | 65 + e2sim/asn1c/RICcontrolAckRequest.h | 55 + e2sim/asn1c/RICcontrolAcknowledge.c | 66 + e2sim/asn1c/RICcontrolAcknowledge.h | 44 + e2sim/asn1c/RICcontrolFailure.c | 66 + e2sim/asn1c/RICcontrolFailure.h | 44 + e2sim/asn1c/RICcontrolHeader.c | 39 + e2sim/asn1c/RICcontrolHeader.h | 44 + e2sim/asn1c/RICcontrolMessage.c | 39 + e2sim/asn1c/RICcontrolMessage.h | 44 + e2sim/asn1c/RICcontrolOutcome.c | 39 + e2sim/asn1c/RICcontrolOutcome.h | 44 + e2sim/asn1c/RICcontrolRequest.c | 66 + e2sim/asn1c/RICcontrolRequest.h | 44 + e2sim/asn1c/RICeventTriggerDefinition.c | 39 + e2sim/asn1c/RICeventTriggerDefinition.h | 44 + e2sim/asn1c/RICindication.c | 66 + e2sim/asn1c/RICindication.h | 44 + e2sim/asn1c/RICindicationHeader.c | 39 + e2sim/asn1c/RICindicationHeader.h | 44 + e2sim/asn1c/RICindicationMessage.c | 39 + e2sim/asn1c/RICindicationMessage.h | 44 + e2sim/asn1c/RICindicationSN.c | 71 + e2sim/asn1c/RICindicationSN.h | 45 + e2sim/asn1c/RICindicationType.c | 65 + e2sim/asn1c/RICindicationType.h | 55 + e2sim/asn1c/RICqueryDefinition.c | 39 + e2sim/asn1c/RICqueryDefinition.h | 44 + e2sim/asn1c/RICqueryHeader.c | 39 + e2sim/asn1c/RICqueryHeader.h | 44 + e2sim/asn1c/RICqueryOutcome.c | 39 + e2sim/asn1c/RICqueryOutcome.h | 44 + e2sim/asn1c/RICrequestID.c | 148 + e2sim/asn1c/RICrequestID.h | 45 + e2sim/asn1c/RICserviceQuery.c | 66 + e2sim/asn1c/RICserviceQuery.h | 44 + e2sim/asn1c/RICserviceUpdate.c | 66 + e2sim/asn1c/RICserviceUpdate.h | 44 + e2sim/asn1c/RICserviceUpdateAcknowledge.c | 66 + e2sim/asn1c/RICserviceUpdateAcknowledge.h | 44 + e2sim/asn1c/RICserviceUpdateFailure.c | 66 + e2sim/asn1c/RICserviceUpdateFailure.h | 44 + e2sim/asn1c/RICsubscription-List-withCause.c | 68 + e2sim/asn1c/RICsubscription-List-withCause.h | 44 + e2sim/asn1c/RICsubscription-withCause-Item.c | 102 + e2sim/asn1c/RICsubscription-withCause-Item.h | 48 + e2sim/asn1c/RICsubscriptionDeleteFailure.c | 66 + e2sim/asn1c/RICsubscriptionDeleteFailure.h | 44 + e2sim/asn1c/RICsubscriptionDeleteRequest.c | 66 + e2sim/asn1c/RICsubscriptionDeleteRequest.h | 44 + e2sim/asn1c/RICsubscriptionDeleteRequired.c | 66 + e2sim/asn1c/RICsubscriptionDeleteRequired.h | 44 + e2sim/asn1c/RICsubscriptionDeleteResponse.c | 66 + e2sim/asn1c/RICsubscriptionDeleteResponse.h | 44 + e2sim/asn1c/RICsubscriptionDetails.c | 84 + e2sim/asn1c/RICsubscriptionDetails.h | 46 + e2sim/asn1c/RICsubscriptionFailure.c | 66 + e2sim/asn1c/RICsubscriptionFailure.h | 44 + e2sim/asn1c/RICsubscriptionModificationConfirm.c | 66 + e2sim/asn1c/RICsubscriptionModificationConfirm.h | 44 + e2sim/asn1c/RICsubscriptionModificationFailure.c | 66 + e2sim/asn1c/RICsubscriptionModificationFailure.h | 44 + e2sim/asn1c/RICsubscriptionModificationRefuse.c | 66 + e2sim/asn1c/RICsubscriptionModificationRefuse.h | 44 + e2sim/asn1c/RICsubscriptionModificationRequest.c | 66 + e2sim/asn1c/RICsubscriptionModificationRequest.h | 44 + e2sim/asn1c/RICsubscriptionModificationRequired.c | 66 + e2sim/asn1c/RICsubscriptionModificationRequired.h | 44 + e2sim/asn1c/RICsubscriptionModificationResponse.c | 66 + e2sim/asn1c/RICsubscriptionModificationResponse.h | 44 + e2sim/asn1c/RICsubscriptionRequest.c | 66 + e2sim/asn1c/RICsubscriptionRequest.h | 44 + e2sim/asn1c/RICsubscriptionResponse.c | 66 + e2sim/asn1c/RICsubscriptionResponse.h | 44 + e2sim/asn1c/RICsubscriptionTime.c | 72 + e2sim/asn1c/RICsubscriptionTime.h | 45 + e2sim/asn1c/RICsubsequentAction.c | 84 + e2sim/asn1c/RICsubsequentAction.h | 46 + e2sim/asn1c/RICsubsequentActionType.c | 65 + e2sim/asn1c/RICsubsequentActionType.h | 55 + e2sim/asn1c/RICtimeToWait.c | 95 + e2sim/asn1c/RICtimeToWait.h | 70 + e2sim/asn1c/RRC-MessageID.c | 164 + e2sim/asn1c/RRC-MessageID.h | 68 + e2sim/asn1c/RRCclass-LTE.c | 85 + e2sim/asn1c/RRCclass-LTE.h | 65 + e2sim/asn1c/RRCclass-NR.c | 77 + e2sim/asn1c/RRCclass-NR.h | 61 + e2sim/asn1c/ResetRequest.c | 66 + e2sim/asn1c/ResetRequest.h | 44 + e2sim/asn1c/ResetResponse.c | 66 + e2sim/asn1c/ResetResponse.h | 44 + e2sim/asn1c/S-NSSAI.c | 86 + e2sim/asn1c/S-NSSAI.h | 46 + e2sim/asn1c/SD.c | 72 + e2sim/asn1c/SD.h | 45 + e2sim/asn1c/SST.c | 72 + e2sim/asn1c/SST.h | 45 + e2sim/asn1c/ServingCell-ARFCN.c | 89 + e2sim/asn1c/ServingCell-ARFCN.h | 58 + e2sim/asn1c/ServingCell-PCI.c | 88 + e2sim/asn1c/ServingCell-PCI.h | 56 + e2sim/asn1c/SubscriberProfileIDforRFP.c | 71 + e2sim/asn1c/SubscriberProfileIDforRFP.h | 44 + e2sim/asn1c/SuccessfulOutcome.c | 610 + e2sim/asn1c/SuccessfulOutcome.h | 122 + e2sim/asn1c/SupportedSULBandList.c | 68 + e2sim/asn1c/SupportedSULBandList.h | 44 + e2sim/asn1c/SupportedSULFreqBandItem.c | 98 + e2sim/asn1c/SupportedSULFreqBandItem.h | 44 + e2sim/asn1c/TNLinformation.c | 162 + e2sim/asn1c/TNLinformation.h | 45 + e2sim/asn1c/TNLusage.c | 67 + e2sim/asn1c/TNLusage.h | 56 + e2sim/asn1c/TestCond-Expression.c | 71 + e2sim/asn1c/TestCond-Expression.h | 58 + e2sim/asn1c/TestCond-Type.c | 866 + e2sim/asn1c/TestCond-Type.h | 152 + e2sim/asn1c/TestCond-Value.c | 178 + e2sim/asn1c/TestCond-Value.h | 72 + e2sim/asn1c/TestCondInfo.c | 105 + e2sim/asn1c/TestCondInfo.h | 50 + e2sim/asn1c/TimeStamp.c | 72 + e2sim/asn1c/TimeStamp.h | 45 + e2sim/asn1c/TimeToWait.c | 73 + e2sim/asn1c/TimeToWait.h | 59 + e2sim/asn1c/TransactionID.c | 71 + e2sim/asn1c/TransactionID.h | 45 + e2sim/asn1c/TriggeringMessage.c | 65 + e2sim/asn1c/TriggeringMessage.h | 53 + e2sim/asn1c/TypeOfError.c | 65 + e2sim/asn1c/TypeOfError.h | 55 + e2sim/asn1c/UEID-EN-GNB.c | 159 + e2sim/asn1c/UEID-EN-GNB.h | 56 + e2sim/asn1c/UEID-ENB.c | 141 + e2sim/asn1c/UEID-ENB.h | 54 + e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.c | 66 + e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.h | 44 + e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.c | 68 + e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.h | 44 + e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.c | 66 + e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.h | 44 + e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.c | 68 + e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.h | 44 + e2sim/asn1c/UEID-GNB-CU-UP.c | 86 + e2sim/asn1c/UEID-GNB-CU-UP.h | 46 + e2sim/asn1c/UEID-GNB-DU.c | 86 + e2sim/asn1c/UEID-GNB-DU.h | 46 + e2sim/asn1c/UEID-GNB.c | 198 + e2sim/asn1c/UEID-GNB.h | 60 + e2sim/asn1c/UEID-NG-ENB-DU.c | 66 + e2sim/asn1c/UEID-NG-ENB-DU.h | 44 + e2sim/asn1c/UEID-NG-ENB.c | 160 + e2sim/asn1c/UEID-NG-ENB.h | 56 + e2sim/asn1c/UEID.c | 185 + e2sim/asn1c/UEID.h | 76 + e2sim/asn1c/UEMeasurementReportItem.c | 84 + e2sim/asn1c/UEMeasurementReportItem.h | 46 + e2sim/asn1c/UEMeasurementReportList.c | 68 + e2sim/asn1c/UEMeasurementReportList.h | 44 + e2sim/asn1c/UnsuccessfulOutcome.c | 592 + e2sim/asn1c/UnsuccessfulOutcome.h | 120 + e2sim/asn1c/aper_decoder.c | 91 + e2sim/asn1c/aper_decoder.h | 47 + e2sim/asn1c/aper_encoder.c | 129 + e2sim/asn1c/aper_encoder.h | 63 + e2sim/asn1c/aper_opentype.c | 149 + e2sim/asn1c/aper_opentype.h | 30 + e2sim/asn1c/aper_support.c | 239 + e2sim/asn1c/aper_support.h | 63 + e2sim/asn1c/asn/v03/e2ap-common-v03.01.asn | 27 + e2sim/asn1c/asn/v03/e2ap-constant-v03.01.asn | 165 + e2sim/asn1c/asn/v03/e2ap-container-v03.01.asn | 130 + e2sim/asn1c/asn/v03/e2ap-epd-v03.01.asn | 304 + e2sim/asn1c/asn/v03/e2ap-ied-v03.01.asn | 530 + e2sim/asn1c/asn/v03/e2ap-pdu-v03.01.asn | 1412 ++ e2sim/asn1c/asn/v03/e2sm-kpm-v03.00.asn | 448 + e2sim/asn1c/asn/v03/e2sm-v03.01.asn | 573 + .../kpm_e2sm/ASN1c => asn1c}/asn_SEQUENCE_OF.c | 0 .../kpm_e2sm/ASN1c => asn1c}/asn_SEQUENCE_OF.h | 0 .../kpm_e2sm/ASN1c => asn1c}/asn_SET_OF.c | 0 .../kpm_e2sm/ASN1c => asn1c}/asn_SET_OF.h | 0 e2sim/asn1c/asn_application.c | 538 + e2sim/asn1c/asn_application.h | 173 + .../kpm_e2sm/ASN1c => asn1c}/asn_bit_data.c | 0 e2sim/asn1c/asn_bit_data.h | 83 + .../kpm_e2sm/ASN1c => asn1c}/asn_codecs.h | 0 e2sim/asn1c/asn_codecs_prim.c | 31 + e2sim/asn1c/asn_codecs_prim.h | 56 + e2sim/asn1c/asn_codecs_prim_ber.c | 115 + e2sim/asn1c/asn_codecs_prim_xer.c | 184 + e2sim/asn1c/asn_config.h | 3 + e2sim/asn1c/asn_constant.h | 90 + e2sim/asn1c/asn_internal.c | 48 + e2sim/asn1c/asn_internal.h | 187 + .../kpm_e2sm/ASN1c => asn1c}/asn_ioc.h | 0 e2sim/asn1c/asn_random_fill.c | 66 + .../kpm_e2sm/ASN1c => asn1c}/asn_random_fill.h | 0 e2sim/asn1c/asn_system.h | 169 + .../kpm_e2sm/ASN1c => asn1c}/ber_decoder.c | 0 .../kpm_e2sm/ASN1c => asn1c}/ber_decoder.h | 0 .../kpm_e2sm/ASN1c => asn1c}/ber_tlv_length.c | 0 .../kpm_e2sm/ASN1c => asn1c}/ber_tlv_length.h | 0 e2sim/asn1c/ber_tlv_tag.c | 144 + .../kpm_e2sm/ASN1c => asn1c}/ber_tlv_tag.h | 0 e2sim/asn1c/constr_CHOICE.c | 358 + e2sim/asn1c/constr_CHOICE.h | 119 + e2sim/asn1c/constr_CHOICE_aper.c | 181 + e2sim/asn1c/constr_CHOICE_ber.c | 447 + e2sim/asn1c/constr_CHOICE_jer.c | 79 + e2sim/asn1c/constr_CHOICE_print.c | 48 + e2sim/asn1c/constr_CHOICE_rfill.c | 60 + e2sim/asn1c/constr_CHOICE_uper.c | 191 + e2sim/asn1c/constr_CHOICE_xer.c | 316 + e2sim/asn1c/constr_SEQUENCE.c | 197 + e2sim/asn1c/constr_SEQUENCE.h | 95 + e2sim/asn1c/constr_SEQUENCE_OF.c | 92 + e2sim/asn1c/constr_SEQUENCE_OF.h | 67 + e2sim/asn1c/constr_SEQUENCE_OF_aper.c | 88 + e2sim/asn1c/constr_SEQUENCE_OF_ber.c | 88 + e2sim/asn1c/constr_SEQUENCE_OF_jer.c | 65 + e2sim/asn1c/constr_SEQUENCE_OF_uper.c | 92 + e2sim/asn1c/constr_SEQUENCE_OF_xer.c | 60 + e2sim/asn1c/constr_SEQUENCE_aper.c | 457 + e2sim/asn1c/constr_SEQUENCE_ber.c | 612 + e2sim/asn1c/constr_SEQUENCE_jer.c | 84 + e2sim/asn1c/constr_SEQUENCE_print.c | 55 + e2sim/asn1c/constr_SEQUENCE_rfill.c | 74 + e2sim/asn1c/constr_SEQUENCE_uper.c | 429 + e2sim/asn1c/constr_SEQUENCE_xer.c | 348 + e2sim/asn1c/constr_SET_OF.c | 371 + e2sim/asn1c/constr_SET_OF.h | 102 + e2sim/asn1c/constr_SET_OF_aper.c | 186 + e2sim/asn1c/constr_SET_OF_ber.c | 355 + e2sim/asn1c/constr_SET_OF_jer.c | 144 + e2sim/asn1c/constr_SET_OF_print.c | 39 + e2sim/asn1c/constr_SET_OF_rfill.c | 152 + e2sim/asn1c/constr_SET_OF_uper.c | 201 + e2sim/asn1c/constr_SET_OF_xer.c | 314 + e2sim/asn1c/constr_TYPE.c | 80 + e2sim/asn1c/constr_TYPE.h | 295 + e2sim/asn1c/constraints.c | 94 + e2sim/asn1c/constraints.h | 63 + .../kpm_e2sm/ASN1c => asn1c}/der_encoder.c | 0 .../kpm_e2sm/ASN1c => asn1c}/der_encoder.h | 0 e2sim/asn1c/jer_encoder.c | 69 + e2sim/asn1c/jer_encoder.h | 86 + e2sim/asn1c/per_decoder.c | 5 + e2sim/asn1c/per_decoder.h | 30 + e2sim/asn1c/per_encoder.c | 35 + e2sim/asn1c/per_encoder.h | 38 + e2sim/asn1c/per_opentype.c | 28 + e2sim/asn1c/per_opentype.h | 24 + e2sim/asn1c/per_support.c | 9 + e2sim/asn1c/per_support.h | 54 + e2sim/asn1c/uper_decoder.c | 96 + e2sim/asn1c/uper_decoder.h | 47 + e2sim/asn1c/uper_encoder.c | 127 + e2sim/asn1c/uper_encoder.h | 62 + e2sim/asn1c/uper_opentype.c | 372 + e2sim/asn1c/uper_opentype.h | 34 + e2sim/asn1c/uper_support.c | 311 + e2sim/asn1c/uper_support.h | 77 + e2sim/asn1c/xer_decoder.c | 369 + .../kpm_e2sm/ASN1c => asn1c}/xer_decoder.h | 0 .../kpm_e2sm/ASN1c => asn1c}/xer_encoder.c | 0 e2sim/asn1c/xer_encoder.h | 83 + .../kpm_e2sm/ASN1c => asn1c}/xer_support.c | 0 e2sim/asn1c/xer_support.h | 55 + e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.c | 450 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.h | 65 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.c | 656 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.h | 48 - .../e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING_oer.c | 174 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.c | 65 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.h | 46 - .../CU-CP-Usage-Report-CellResourceReportItem.c | 139 - .../CU-CP-Usage-Report-CellResourceReportItem.h | 58 - .../kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.c | 129 - .../kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.h | 56 - .../CU-CP-Usage-Report-UeResourceReportItem.c | 72 - .../CU-CP-Usage-Report-UeResourceReportItem.h | 47 - .../CU-UP-Usage-Report-CellResourceReportItem.c | 139 - .../CU-UP-Usage-Report-CellResourceReportItem.h | 58 - .../kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.c | 129 - .../kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.h | 56 - .../CU-UP-Usage-Report-UeResourceReportItem.c | 150 - .../CU-UP-Usage-Report-UeResourceReportItem.h | 47 - .../kpm_e2sm/ASN1c/CUUPMeasurement-Container.c | 129 - .../kpm_e2sm/ASN1c/CUUPMeasurement-Container.h | 56 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.c | 92 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.h | 68 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.c | 59 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.h | 56 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.c | 65 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.h | 59 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.c | 73 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.h | 63 - .../e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.c | 57 - .../e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.h | 55 - .../e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.c | 55 - .../e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.h | 54 - .../kpm_e2sm/ASN1c/CellResourceReportListItem.c | 227 - .../kpm_e2sm/ASN1c/CellResourceReportListItem.h | 61 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.c | 55 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.h | 52 - .../ASN1c/CriticalityDiagnostics-IE-Item.c | 70 - .../ASN1c/CriticalityDiagnostics-IE-Item.h | 48 - .../ASN1c/CriticalityDiagnostics-IE-List.c | 50 - .../ASN1c/CriticalityDiagnostics-IE-List.h | 44 - .../kpm_e2sm/ASN1c/CriticalityDiagnostics.c | 94 - .../kpm_e2sm/ASN1c/CriticalityDiagnostics.h | 52 - .../ASN1c/DU-Usage-Report-CellResourceReportItem.c | 139 - .../ASN1c/DU-Usage-Report-CellResourceReportItem.h | 58 - .../kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.c | 129 - .../kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.h | 56 - .../ASN1c/DU-Usage-Report-UeResourceReportItem.c | 138 - .../ASN1c/DU-Usage-Report-UeResourceReportItem.h | 47 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.c | 75 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.h | 61 - .../kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.c | 50 - .../kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.h | 42 - .../E2SM-KPM-EventTriggerDefinition-Format1.c | 131 - .../E2SM-KPM-EventTriggerDefinition-Format1.h | 56 - .../ASN1c/E2SM-KPM-EventTriggerDefinition.c | 55 - .../ASN1c/E2SM-KPM-EventTriggerDefinition.h | 53 - .../ASN1c/E2SM-KPM-IndicationHeader-Format1.c | 208 - .../ASN1c/E2SM-KPM-IndicationHeader-Format1.h | 70 - .../kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.c | 55 - .../kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.h | 53 - .../ASN1c/E2SM-KPM-IndicationMessage-Format1.c | 129 - .../ASN1c/E2SM-KPM-IndicationMessage-Format1.h | 56 - .../kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.c | 107 - .../kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.h | 65 - .../ASN1c/E2SM-KPM-RANfunction-Description.c | 273 - .../ASN1c/E2SM-KPM-RANfunction-Description.h | 73 - .../e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.c | 50 - .../e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.h | 44 - .../e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.c | 50 - .../e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.h | 44 - .../e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.c | 50 - .../e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.h | 44 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.c | 192 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.h | 60 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.c | 241 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.h | 61 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.c | 94 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.h | 56 - .../kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.c | 129 - .../kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.h | 56 - .../kpm_e2sm/ASN1c/EPC-DU-PM-Container.c | 129 - .../kpm_e2sm/ASN1c/EPC-DU-PM-Container.h | 56 - .../e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.c | 50 - .../e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.h | 44 - .../kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.c | 129 - .../kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.h | 56 - .../kpm_e2sm/ASN1c/FGC-DU-PM-Container.c | 129 - .../kpm_e2sm/ASN1c/FGC-DU-PM-Container.h | 56 - .../kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.c | 183 - .../kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.h | 47 - .../ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c | 171 - .../ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h | 46 - .../e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.c | 109 - .../e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.h | 46 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.c | 70 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.h | 46 - .../e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.c | 109 - .../e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.h | 46 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.c | 70 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.h | 46 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.c | 109 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.h | 46 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.c | 94 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.h | 56 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.c | 75 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.h | 62 - .../e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.c | 86 - .../e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.h | 64 - .../kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.c | 50 - .../kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.h | 44 - .../kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.c | 50 - .../kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.h | 44 - .../kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.c | 72 - .../kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.h | 48 - .../kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.c | 50 - .../kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.h | 44 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.c | 60 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.h | 46 - .../kpm_e2sm/ASN1c/GlobalKPMnode-ID.c | 85 - .../kpm_e2sm/ASN1c/GlobalKPMnode-ID.h | 65 - .../kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.c | 50 - .../kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.h | 44 - .../kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.c | 50 - .../kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.h | 44 - .../kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.c | 72 - .../kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.h | 48 - .../kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.c | 50 - .../kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.h | 44 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.c | 96 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.h | 44 - .../e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.c | 60 - .../e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.h | 46 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.c | 60 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.h | 46 - .../e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.c | 60 - .../e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.h | 46 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.c | 1735 -- e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.h | 108 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER_oer.c | 179 - .../kpm_e2sm/ASN1c/InitiatingMessage.c | 389 - .../kpm_e2sm/ASN1c/InitiatingMessage.h | 97 - .../kpm_e2sm/ASN1c/Makefile.am.asn1convert | 14 - .../kpm_e2sm/ASN1c/Makefile.am.libasncodec | 240 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.c | 60 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.h | 57 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.c | 60 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.h | 42 - .../e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.c | 70 - .../e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.h | 46 - .../kpm_e2sm/ASN1c/NativeEnumerated.c | 367 - .../kpm_e2sm/ASN1c/NativeEnumerated.h | 45 - .../kpm_e2sm/ASN1c/NativeEnumerated_oer.c | 149 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.c | 550 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.h | 46 - .../kpm_e2sm/ASN1c/NativeInteger_oer.c | 99 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.c | 2411 -- e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.h | 102 - .../kpm_e2sm/ASN1c/OCTET_STRING_oer.c | 171 - .../kpm_e2sm/ASN1c/OCUCP-PF-Container.c | 140 - .../kpm_e2sm/ASN1c/OCUCP-PF-Container.h | 47 - .../kpm_e2sm/ASN1c/OCUUP-PF-Container.c | 141 - .../kpm_e2sm/ASN1c/OCUUP-PF-Container.h | 58 - .../kpm_e2sm/ASN1c/ODU-PF-Container.c | 129 - .../kpm_e2sm/ASN1c/ODU-PF-Container.h | 56 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.c | 509 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.h | 77 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE_oer.c | 92 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.c | 75 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.h | 62 - .../kpm_e2sm/ASN1c/PF-ContainerListItem.c | 60 - .../kpm_e2sm/ASN1c/PF-ContainerListItem.h | 46 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.c | 65 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.h | 46 - .../kpm_e2sm/ASN1c/PM-Containers-List.c | 62 - .../kpm_e2sm/ASN1c/PM-Containers-List.h | 52 - .../kpm_e2sm/ASN1c/PerQCIReportListItem.c | 171 - .../kpm_e2sm/ASN1c/PerQCIReportListItem.h | 46 - .../kpm_e2sm/ASN1c/PerQCIReportListItemFormat.c | 183 - .../kpm_e2sm/ASN1c/PerQCIReportListItemFormat.h | 47 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.c | 72 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.h | 54 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.c | 55 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.h | 52 - .../e2sm_examples/kpm_e2sm/ASN1c/PrintableString.c | 130 - .../e2sm_examples/kpm_e2sm/ASN1c/PrintableString.h | 37 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.c | 61 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.h | 53 - .../kpm_e2sm/ASN1c/ProtocolIE-Container.c | 810 - .../kpm_e2sm/ASN1c/ProtocolIE-Container.h | 253 - .../kpm_e2sm/ASN1c/ProtocolIE-ContainerList.c | 9 - .../kpm_e2sm/ASN1c/ProtocolIE-ContainerList.h | 23 - .../kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.c | 9 - .../kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.h | 23 - .../kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.c | 9 - .../kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.h | 23 - .../kpm_e2sm/ASN1c/ProtocolIE-Field.c | 7190 ------ .../kpm_e2sm/ASN1c/ProtocolIE-Field.h | 757 - .../kpm_e2sm/ASN1c/ProtocolIE-FieldPair.c | 9 - .../kpm_e2sm/ASN1c/ProtocolIE-FieldPair.h | 23 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.c | 61 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.h | 76 - .../kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.c | 147 - .../kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.h | 108 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.c | 127 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.h | 73 - .../kpm_e2sm/ASN1c/RANcallProcess-ID-string.c | 109 - .../kpm_e2sm/ASN1c/RANcallProcess-ID-string.h | 45 - .../kpm_e2sm/ASN1c/RANfunction-Item.c | 70 - .../kpm_e2sm/ASN1c/RANfunction-Item.h | 46 - .../kpm_e2sm/ASN1c/RANfunction-Name.c | 316 - .../kpm_e2sm/ASN1c/RANfunction-Name.h | 48 - .../kpm_e2sm/ASN1c/RANfunctionDefinition.c | 31 - .../kpm_e2sm/ASN1c/RANfunctionDefinition.h | 43 - .../kpm_e2sm/ASN1c/RANfunctionID-Item.c | 60 - .../kpm_e2sm/ASN1c/RANfunctionID-Item.h | 44 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.c | 61 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.h | 44 - .../kpm_e2sm/ASN1c/RANfunctionIDcause-Item.c | 60 - .../kpm_e2sm/ASN1c/RANfunctionIDcause-Item.h | 44 - .../kpm_e2sm/ASN1c/RANfunctionRevision.c | 61 - .../kpm_e2sm/ASN1c/RANfunctionRevision.h | 44 - .../kpm_e2sm/ASN1c/RANfunctions-List.c | 50 - .../kpm_e2sm/ASN1c/RANfunctions-List.h | 41 - .../kpm_e2sm/ASN1c/RANfunctionsID-List.c | 50 - .../kpm_e2sm/ASN1c/RANfunctionsID-List.h | 41 - .../kpm_e2sm/ASN1c/RANfunctionsIDcause-List.c | 50 - .../kpm_e2sm/ASN1c/RANfunctionsIDcause-List.h | 41 - .../kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.c | 70 - .../kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.h | 48 - .../e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.c | 31 - .../e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.h | 45 - .../kpm_e2sm/ASN1c/RIC-ReportStyle-List.c | 80 - .../kpm_e2sm/ASN1c/RIC-ReportStyle-List.h | 49 - .../e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.c | 109 - .../e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.h | 46 - .../e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.c | 31 - .../e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.h | 45 - .../kpm_e2sm/ASN1c/RICaction-Admitted-Item.c | 50 - .../kpm_e2sm/ASN1c/RICaction-Admitted-Item.h | 42 - .../kpm_e2sm/ASN1c/RICaction-Admitted-List.c | 50 - .../kpm_e2sm/ASN1c/RICaction-Admitted-List.h | 41 - .../kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.c | 60 - .../kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.h | 44 - .../kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.c | 50 - .../kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.h | 41 - .../kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.c | 83 - .../kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.h | 50 - .../kpm_e2sm/ASN1c/RICactionDefinition.c | 31 - .../kpm_e2sm/ASN1c/RICactionDefinition.h | 43 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.c | 61 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.h | 44 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.c | 57 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.h | 55 - .../kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.c | 50 - .../kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.h | 44 - .../kpm_e2sm/ASN1c/RICcallProcessID.c | 31 - .../kpm_e2sm/ASN1c/RICcallProcessID.h | 43 - .../kpm_e2sm/ASN1c/RICcontrolAckRequest.c | 57 - .../kpm_e2sm/ASN1c/RICcontrolAckRequest.h | 53 - .../kpm_e2sm/ASN1c/RICcontrolAcknowledge.c | 50 - .../kpm_e2sm/ASN1c/RICcontrolAcknowledge.h | 44 - .../kpm_e2sm/ASN1c/RICcontrolFailure.c | 50 - .../kpm_e2sm/ASN1c/RICcontrolFailure.h | 44 - .../kpm_e2sm/ASN1c/RICcontrolHeader.c | 31 - .../kpm_e2sm/ASN1c/RICcontrolHeader.h | 43 - .../kpm_e2sm/ASN1c/RICcontrolMessage.c | 31 - .../kpm_e2sm/ASN1c/RICcontrolMessage.h | 43 - .../kpm_e2sm/ASN1c/RICcontrolOutcome.c | 31 - .../kpm_e2sm/ASN1c/RICcontrolOutcome.h | 43 - .../kpm_e2sm/ASN1c/RICcontrolRequest.c | 50 - .../kpm_e2sm/ASN1c/RICcontrolRequest.h | 44 - .../kpm_e2sm/ASN1c/RICcontrolStatus.c | 57 - .../kpm_e2sm/ASN1c/RICcontrolStatus.h | 53 - .../kpm_e2sm/ASN1c/RICeventTriggerDefinition.c | 31 - .../kpm_e2sm/ASN1c/RICeventTriggerDefinition.h | 43 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.c | 50 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.h | 44 - .../kpm_e2sm/ASN1c/RICindicationHeader.c | 31 - .../kpm_e2sm/ASN1c/RICindicationHeader.h | 43 - .../kpm_e2sm/ASN1c/RICindicationMessage.c | 31 - .../kpm_e2sm/ASN1c/RICindicationMessage.h | 43 - .../e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.c | 61 - .../e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.h | 43 - .../kpm_e2sm/ASN1c/RICindicationType.c | 55 - .../kpm_e2sm/ASN1c/RICindicationType.h | 52 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.c | 120 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.h | 45 - .../e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.c | 50 - .../e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.h | 44 - .../kpm_e2sm/ASN1c/RICserviceUpdate.c | 50 - .../kpm_e2sm/ASN1c/RICserviceUpdate.h | 44 - .../kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.c | 50 - .../kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.h | 44 - .../kpm_e2sm/ASN1c/RICserviceUpdateFailure.c | 50 - .../kpm_e2sm/ASN1c/RICserviceUpdateFailure.h | 44 - .../kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.c | 50 - .../kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.h | 44 - .../kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.c | 50 - .../kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.h | 44 - .../kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.c | 50 - .../kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.h | 44 - .../kpm_e2sm/ASN1c/RICsubscriptionDetails.c | 60 - .../kpm_e2sm/ASN1c/RICsubscriptionDetails.h | 44 - .../kpm_e2sm/ASN1c/RICsubscriptionFailure.c | 50 - .../kpm_e2sm/ASN1c/RICsubscriptionFailure.h | 44 - .../kpm_e2sm/ASN1c/RICsubscriptionRequest.c | 50 - .../kpm_e2sm/ASN1c/RICsubscriptionRequest.h | 44 - .../kpm_e2sm/ASN1c/RICsubscriptionResponse.c | 50 - .../kpm_e2sm/ASN1c/RICsubscriptionResponse.h | 44 - .../kpm_e2sm/ASN1c/RICsubsequentAction.c | 60 - .../kpm_e2sm/ASN1c/RICsubsequentAction.h | 46 - .../kpm_e2sm/ASN1c/RICsubsequentActionType.c | 55 - .../kpm_e2sm/ASN1c/RICsubsequentActionType.h | 54 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.c | 87 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.h | 70 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.c | 94 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.h | 74 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.c | 50 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.h | 44 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.c | 50 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.h | 44 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.c | 130 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.h | 41 - .../kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.c | 72 - .../kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.h | 54 - .../kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.c | 139 - .../kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.h | 58 - .../kpm_e2sm/ASN1c/SliceToReportListItem.c | 139 - .../kpm_e2sm/ASN1c/SliceToReportListItem.h | 58 - .../kpm_e2sm/ASN1c/SuccessfulOutcome.c | 359 - .../kpm_e2sm/ASN1c/SuccessfulOutcome.h | 91 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.c | 63 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.h | 56 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.c | 31 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.h | 45 - .../kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.c | 50 - .../kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.h | 44 - .../kpm_e2sm/ASN1c/TriggeringMessage.c | 55 - .../kpm_e2sm/ASN1c/TriggeringMessage.h | 52 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.c | 55 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.h | 54 - .../e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.c | 60 - .../e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.h | 57 - .../kpm_e2sm/ASN1c/UnsuccessfulOutcome.c | 349 - .../kpm_e2sm/ASN1c/UnsuccessfulOutcome.h | 89 - .../e2sm_examples/kpm_e2sm/ASN1c/asn_application.c | 481 - .../e2sm_examples/kpm_e2sm/ASN1c/asn_application.h | 171 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_bit_data.h | 83 - .../e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.c | 317 - .../e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.h | 51 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_constant.h | 30 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.c | 48 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.h | 159 - .../e2sm_examples/kpm_e2sm/ASN1c/asn_random_fill.c | 56 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_system.h | 150 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_tag.c | 144 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.c | 1533 -- e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.h | 80 - .../kpm_e2sm/ASN1c/constr_CHOICE_oer.c | 380 - .../e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.c | 2059 -- .../e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.h | 68 - .../kpm_e2sm/ASN1c/constr_SEQUENCE_OF.c | 358 - .../kpm_e2sm/ASN1c/constr_SEQUENCE_OF.h | 41 - .../kpm_e2sm/ASN1c/constr_SEQUENCE_oer.c | 561 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.c | 1441 -- e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.h | 49 - .../kpm_e2sm/ASN1c/constr_SET_OF_oer.c | 285 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.c | 80 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.h | 262 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.c | 93 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.h | 62 - .../kpm_e2sm/ASN1c/converter-example.mk | 33 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.c | 152 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.h | 72 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.c | 141 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.h | 70 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.c | 122 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.h | 47 - .../e2sm_examples/kpm_e2sm/ASN1c/pdu_collection.c | 25 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.c | 185 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.h | 82 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.c | 265 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.h | 93 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.c | 533 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.h | 44 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.c | 489 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.h | 127 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_decoder.c | 369 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_encoder.h | 83 - e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_support.h | 55 - e2sim/e2sm_examples/kpm_e2sm/CMakeLists.txt | 2 +- e2sim/e2sm_examples/kpm_e2sm/Dockerfile | 106 - .../kpm_e2sm/e2sim-dev_1.0.0_amd64.deb | Bin 401840 -> 508242 bytes e2sim/e2sm_examples/kpm_e2sm/e2sim_1.0.0_amd64.deb | Bin 228328 -> 267308 bytes e2sim/e2sm_examples/kpm_e2sm/nlohmann_json_release | 1 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/AMFName.c | 109 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/AMFName.h | 46 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.c | 450 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.h | 65 - .../e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.c | 656 - .../e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.h | 48 - .../kpm_e2sm/src/ASN1c/BIT_STRING_oer.c | 174 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.c | 65 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.h | 46 - .../kpm_e2sm/src/ASN1c/CMakeLists.txt | 31 - .../CU-CP-Usage-Report-CellResourceReportItem.c | 139 - .../CU-CP-Usage-Report-CellResourceReportItem.h | 58 - .../kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.c | 129 - .../kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.h | 56 - .../CU-CP-Usage-Report-UeResourceReportItem.c | 72 - .../CU-CP-Usage-Report-UeResourceReportItem.h | 47 - .../CU-UP-Usage-Report-CellResourceReportItem.c | 139 - .../CU-UP-Usage-Report-CellResourceReportItem.h | 58 - .../kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.c | 129 - .../kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.h | 56 - .../CU-UP-Usage-Report-UeResourceReportItem.c | 150 - .../CU-UP-Usage-Report-UeResourceReportItem.h | 47 - .../kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.c | 129 - .../kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.h | 56 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.c | 105 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.h | 71 - .../e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.c | 56 - .../e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.h | 55 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.c | 62 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.h | 58 - .../kpm_e2sm/src/ASN1c/CauseProtocol.c | 68 - .../kpm_e2sm/src/ASN1c/CauseProtocol.h | 61 - .../kpm_e2sm/src/ASN1c/CauseRICrequest.c | 82 - .../kpm_e2sm/src/ASN1c/CauseRICrequest.h | 68 - .../kpm_e2sm/src/ASN1c/CauseRICservice.c | 60 - .../kpm_e2sm/src/ASN1c/CauseRICservice.h | 57 - .../kpm_e2sm/src/ASN1c/CauseTransport.c | 58 - .../kpm_e2sm/src/ASN1c/CauseTransport.h | 56 - .../src/ASN1c/CellResourceReportListItem.c | 227 - .../src/ASN1c/CellResourceReportListItem.h | 61 - .../e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.c | 58 - .../e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.h | 54 - .../src/ASN1c/CriticalityDiagnostics-IE-Item.c | 70 - .../src/ASN1c/CriticalityDiagnostics-IE-Item.h | 48 - .../src/ASN1c/CriticalityDiagnostics-IE-List.c | 53 - .../src/ASN1c/CriticalityDiagnostics-IE-List.h | 44 - .../kpm_e2sm/src/ASN1c/CriticalityDiagnostics.c | 94 - .../kpm_e2sm/src/ASN1c/CriticalityDiagnostics.h | 52 - .../ASN1c/DU-Usage-Report-CellResourceReportItem.c | 139 - .../ASN1c/DU-Usage-Report-CellResourceReportItem.h | 58 - .../kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.c | 129 - .../kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.h | 56 - .../ASN1c/DU-Usage-Report-UeResourceReportItem.c | 138 - .../ASN1c/DU-Usage-Report-UeResourceReportItem.h | 47 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.c | 78 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.h | 61 - .../kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.c | 50 - .../kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.h | 42 - .../E2SM-KPM-EventTriggerDefinition-Format1.c | 131 - .../E2SM-KPM-EventTriggerDefinition-Format1.h | 56 - .../src/ASN1c/E2SM-KPM-EventTriggerDefinition.c | 55 - .../src/ASN1c/E2SM-KPM-EventTriggerDefinition.h | 53 - .../src/ASN1c/E2SM-KPM-IndicationHeader-Format1.c | 208 - .../src/ASN1c/E2SM-KPM-IndicationHeader-Format1.h | 70 - .../kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.c | 55 - .../kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.h | 53 - .../src/ASN1c/E2SM-KPM-IndicationMessage-Format1.c | 129 - .../src/ASN1c/E2SM-KPM-IndicationMessage-Format1.h | 56 - .../src/ASN1c/E2SM-KPM-IndicationMessage.c | 107 - .../src/ASN1c/E2SM-KPM-IndicationMessage.h | 65 - .../src/ASN1c/E2SM-KPM-RANfunction-Description.c | 273 - .../src/ASN1c/E2SM-KPM-RANfunction-Description.h | 73 - .../src/ASN1c/E2connectionSetupFailed-Item.c | 60 - .../src/ASN1c/E2connectionSetupFailed-Item.h | 44 - .../src/ASN1c/E2connectionSetupFailed-List.c | 53 - .../src/ASN1c/E2connectionSetupFailed-List.h | 41 - .../kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.c | 60 - .../kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.h | 44 - .../kpm_e2sm/src/ASN1c/E2connectionUpdate-List.c | 53 - .../kpm_e2sm/src/ASN1c/E2connectionUpdate-List.h | 41 - .../kpm_e2sm/src/ASN1c/E2connectionUpdate.c | 50 - .../kpm_e2sm/src/ASN1c/E2connectionUpdate.h | 44 - .../src/ASN1c/E2connectionUpdateAcknowledge.c | 50 - .../src/ASN1c/E2connectionUpdateAcknowledge.h | 44 - .../kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.c | 50 - .../kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.h | 44 - .../src/ASN1c/E2connectionUpdateRemove-Item.c | 50 - .../src/ASN1c/E2connectionUpdateRemove-Item.h | 42 - .../src/ASN1c/E2connectionUpdateRemove-List.c | 53 - .../src/ASN1c/E2connectionUpdateRemove-List.h | 41 - .../src/ASN1c/E2nodeComponentConfigAddition-Item.c | 70 - .../src/ASN1c/E2nodeComponentConfigAddition-Item.h | 46 - .../src/ASN1c/E2nodeComponentConfigAddition-List.c | 53 - .../src/ASN1c/E2nodeComponentConfigAddition-List.h | 41 - .../ASN1c/E2nodeComponentConfigAdditionAck-Item.c | 70 - .../ASN1c/E2nodeComponentConfigAdditionAck-Item.h | 46 - .../ASN1c/E2nodeComponentConfigAdditionAck-List.c | 53 - .../ASN1c/E2nodeComponentConfigAdditionAck-List.h | 41 - .../src/ASN1c/E2nodeComponentConfigRemoval-Item.c | 60 - .../src/ASN1c/E2nodeComponentConfigRemoval-Item.h | 44 - .../src/ASN1c/E2nodeComponentConfigRemoval-List.c | 53 - .../src/ASN1c/E2nodeComponentConfigRemoval-List.h | 41 - .../ASN1c/E2nodeComponentConfigRemovalAck-Item.c | 70 - .../ASN1c/E2nodeComponentConfigRemovalAck-Item.h | 46 - .../ASN1c/E2nodeComponentConfigRemovalAck-List.c | 53 - .../ASN1c/E2nodeComponentConfigRemovalAck-List.h | 41 - .../src/ASN1c/E2nodeComponentConfigUpdate-Item.c | 70 - .../src/ASN1c/E2nodeComponentConfigUpdate-Item.h | 46 - .../src/ASN1c/E2nodeComponentConfigUpdate-List.c | 53 - .../src/ASN1c/E2nodeComponentConfigUpdate-List.h | 41 - .../ASN1c/E2nodeComponentConfigUpdateAck-Item.c | 70 - .../ASN1c/E2nodeComponentConfigUpdateAck-Item.h | 46 - .../ASN1c/E2nodeComponentConfigUpdateAck-List.c | 53 - .../ASN1c/E2nodeComponentConfigUpdateAck-List.h | 41 - .../src/ASN1c/E2nodeComponentConfiguration.c | 60 - .../src/ASN1c/E2nodeComponentConfiguration.h | 45 - .../src/ASN1c/E2nodeComponentConfigurationAck.c | 114 - .../src/ASN1c/E2nodeComponentConfigurationAck.h | 58 - .../kpm_e2sm/src/ASN1c/E2nodeComponentID.c | 122 - .../kpm_e2sm/src/ASN1c/E2nodeComponentID.h | 76 - .../src/ASN1c/E2nodeComponentInterfaceE1.c | 50 - .../src/ASN1c/E2nodeComponentInterfaceE1.h | 44 - .../src/ASN1c/E2nodeComponentInterfaceF1.c | 50 - .../src/ASN1c/E2nodeComponentInterfaceF1.h | 44 - .../src/ASN1c/E2nodeComponentInterfaceNG.c | 50 - .../src/ASN1c/E2nodeComponentInterfaceNG.h | 44 - .../src/ASN1c/E2nodeComponentInterfaceS1.c | 50 - .../src/ASN1c/E2nodeComponentInterfaceS1.h | 44 - .../src/ASN1c/E2nodeComponentInterfaceType.c | 68 - .../src/ASN1c/E2nodeComponentInterfaceType.h | 61 - .../src/ASN1c/E2nodeComponentInterfaceW1.c | 50 - .../src/ASN1c/E2nodeComponentInterfaceW1.h | 44 - .../src/ASN1c/E2nodeComponentInterfaceX2.c | 64 - .../src/ASN1c/E2nodeComponentInterfaceX2.h | 48 - .../src/ASN1c/E2nodeComponentInterfaceXn.c | 50 - .../src/ASN1c/E2nodeComponentInterfaceXn.h | 44 - .../kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.c | 50 - .../kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.h | 44 - .../ASN1c/E2nodeConfigurationUpdateAcknowledge.c | 50 - .../ASN1c/E2nodeConfigurationUpdateAcknowledge.h | 44 - .../src/ASN1c/E2nodeConfigurationUpdateFailure.c | 50 - .../src/ASN1c/E2nodeConfigurationUpdateFailure.h | 44 - .../src/ASN1c/E2nodeTNLassociationRemoval-Item.c | 60 - .../src/ASN1c/E2nodeTNLassociationRemoval-Item.h | 43 - .../src/ASN1c/E2nodeTNLassociationRemoval-List.c | 53 - .../src/ASN1c/E2nodeTNLassociationRemoval-List.h | 41 - .../kpm_e2sm/src/ASN1c/E2setupFailure.c | 50 - .../kpm_e2sm/src/ASN1c/E2setupFailure.h | 44 - .../kpm_e2sm/src/ASN1c/E2setupRequest.c | 50 - .../kpm_e2sm/src/ASN1c/E2setupRequest.h | 44 - .../kpm_e2sm/src/ASN1c/E2setupResponse.c | 50 - .../kpm_e2sm/src/ASN1c/E2setupResponse.h | 44 - .../kpm_e2sm/src/ASN1c/ENB-ID-Choice.c | 192 - .../kpm_e2sm/src/ASN1c/ENB-ID-Choice.h | 60 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.c | 241 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.h | 61 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.c | 94 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.h | 56 - .../kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.c | 129 - .../kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.h | 56 - .../kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.c | 129 - .../kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.h | 56 - .../kpm_e2sm/src/ASN1c/ErrorIndication.c | 50 - .../kpm_e2sm/src/ASN1c/ErrorIndication.h | 44 - .../kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.c | 129 - .../kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.h | 56 - .../kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.c | 129 - .../kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.h | 56 - .../src/ASN1c/FQIPERSlicesPerPlmnListItem.c | 183 - .../src/ASN1c/FQIPERSlicesPerPlmnListItem.h | 47 - .../src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c | 171 - .../src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h | 46 - .../kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.c | 109 - .../kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.h | 46 - .../kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.c | 70 - .../kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.h | 46 - .../kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.c | 109 - .../kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.h | 46 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.c | 70 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.h | 46 - .../e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.c | 109 - .../e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.h | 46 - .../kpm_e2sm/src/ASN1c/GNB-ID-Choice.c | 94 - .../kpm_e2sm/src/ASN1c/GNB-ID-Choice.h | 56 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.c | 75 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.h | 62 - .../kpm_e2sm/src/ASN1c/GlobalE2node-ID.c | 89 - .../kpm_e2sm/src/ASN1c/GlobalE2node-ID.h | 64 - .../kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.c | 50 - .../kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.h | 44 - .../kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.c | 72 - .../kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.h | 48 - .../kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.c | 83 - .../kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.h | 52 - .../kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.c | 73 - .../kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.h | 50 - .../kpm_e2sm/src/ASN1c/GlobalENB-ID.c | 60 - .../kpm_e2sm/src/ASN1c/GlobalENB-ID.h | 46 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.c | 85 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.h | 65 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.c | 50 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.h | 44 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.c | 50 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.h | 44 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.c | 72 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.h | 48 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.c | 50 - .../kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.h | 44 - .../kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.c | 67 - .../kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.h | 61 - .../kpm_e2sm/src/ASN1c/GlobalRIC-ID.c | 99 - .../kpm_e2sm/src/ASN1c/GlobalRIC-ID.h | 44 - .../kpm_e2sm/src/ASN1c/GlobalenGNB-ID.c | 60 - .../kpm_e2sm/src/ASN1c/GlobalenGNB-ID.h | 46 - .../kpm_e2sm/src/ASN1c/GlobalgNB-ID.c | 60 - .../kpm_e2sm/src/ASN1c/GlobalgNB-ID.h | 46 - .../kpm_e2sm/src/ASN1c/GlobalngeNB-ID.c | 60 - .../kpm_e2sm/src/ASN1c/GlobalngeNB-ID.h | 46 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.c | 1735 -- e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.h | 108 - .../e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER_oer.c | 179 - .../kpm_e2sm/src/ASN1c/InitiatingMessage.c | 449 - .../kpm_e2sm/src/ASN1c/InitiatingMessage.h | 110 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.c | 109 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.h | 46 - .../kpm_e2sm/src/ASN1c/Makefile.am.asn1convert | 14 - .../e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.c | 70 - .../e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.h | 46 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.c | 60 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.h | 57 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.c | 60 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.h | 42 - .../kpm_e2sm/src/ASN1c/NRCellIdentity.c | 70 - .../kpm_e2sm/src/ASN1c/NRCellIdentity.h | 46 - .../kpm_e2sm/src/ASN1c/NativeEnumerated.c | 367 - .../kpm_e2sm/src/ASN1c/NativeEnumerated.h | 45 - .../kpm_e2sm/src/ASN1c/NativeEnumerated_oer.c | 149 - .../kpm_e2sm/src/ASN1c/NativeInteger.c | 550 - .../kpm_e2sm/src/ASN1c/NativeInteger.h | 46 - .../kpm_e2sm/src/ASN1c/NativeInteger_oer.c | 99 - .../kpm_e2sm/src/ASN1c/OCTET_STRING.c | 2411 -- .../kpm_e2sm/src/ASN1c/OCTET_STRING.h | 102 - .../kpm_e2sm/src/ASN1c/OCTET_STRING_oer.c | 171 - .../kpm_e2sm/src/ASN1c/OCUCP-PF-Container.c | 140 - .../kpm_e2sm/src/ASN1c/OCUCP-PF-Container.h | 47 - .../kpm_e2sm/src/ASN1c/OCUUP-PF-Container.c | 141 - .../kpm_e2sm/src/ASN1c/OCUUP-PF-Container.h | 58 - .../kpm_e2sm/src/ASN1c/ODU-PF-Container.c | 129 - .../kpm_e2sm/src/ASN1c/ODU-PF-Container.h | 56 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.c | 509 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.h | 77 - .../kpm_e2sm/src/ASN1c/OPEN_TYPE_oer.c | 92 - .../kpm_e2sm/src/ASN1c/PF-Container.c | 75 - .../kpm_e2sm/src/ASN1c/PF-Container.h | 62 - .../kpm_e2sm/src/ASN1c/PF-ContainerListItem.c | 60 - .../kpm_e2sm/src/ASN1c/PF-ContainerListItem.h | 46 - .../kpm_e2sm/src/ASN1c/PLMN-Identity.c | 65 - .../kpm_e2sm/src/ASN1c/PLMN-Identity.h | 46 - .../kpm_e2sm/src/ASN1c/PM-Containers-List.c | 62 - .../kpm_e2sm/src/ASN1c/PM-Containers-List.h | 52 - .../kpm_e2sm/src/ASN1c/PerQCIReportListItem.c | 171 - .../kpm_e2sm/src/ASN1c/PerQCIReportListItem.h | 46 - .../src/ASN1c/PerQCIReportListItemFormat.c | 183 - .../src/ASN1c/PerQCIReportListItemFormat.h | 47 - .../e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.c | 72 - .../e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.h | 54 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.c | 58 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.h | 54 - .../kpm_e2sm/src/ASN1c/PrintableString.c | 130 - .../kpm_e2sm/src/ASN1c/PrintableString.h | 37 - .../kpm_e2sm/src/ASN1c/ProcedureCode.c | 64 - .../kpm_e2sm/src/ASN1c/ProcedureCode.h | 58 - .../kpm_e2sm/src/ASN1c/ProtocolIE-Container.c | 1171 - .../kpm_e2sm/src/ASN1c/ProtocolIE-Container.h | 330 - .../kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.c | 9 - .../kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.h | 23 - .../kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.c | 9 - .../kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.h | 23 - .../src/ASN1c/ProtocolIE-ContainerPairList.c | 9 - .../src/ASN1c/ProtocolIE-ContainerPairList.h | 23 - .../kpm_e2sm/src/ASN1c/ProtocolIE-Field.c | 12546 ---------- .../kpm_e2sm/src/ASN1c/ProtocolIE-Field.h | 1254 - .../kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.c | 9 - .../kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.h | 23 - .../kpm_e2sm/src/ASN1c/ProtocolIE-ID.c | 64 - .../kpm_e2sm/src/ASN1c/ProtocolIE-ID.h | 105 - .../src/ASN1c/ProtocolIE-SingleContainer.c | 400 - .../src/ASN1c/ProtocolIE-SingleContainer.h | 285 - .../kpm_e2sm/src/ASN1c/RAN-Container.c | 127 - .../kpm_e2sm/src/ASN1c/RAN-Container.h | 73 - .../kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.c | 109 - .../kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.h | 45 - .../kpm_e2sm/src/ASN1c/RANfunction-Item.c | 80 - .../kpm_e2sm/src/ASN1c/RANfunction-Item.h | 48 - .../kpm_e2sm/src/ASN1c/RANfunction-Name.c | 316 - .../kpm_e2sm/src/ASN1c/RANfunction-Name.h | 48 - .../kpm_e2sm/src/ASN1c/RANfunctionDefinition.c | 31 - .../kpm_e2sm/src/ASN1c/RANfunctionDefinition.h | 45 - .../kpm_e2sm/src/ASN1c/RANfunctionID-Item.c | 60 - .../kpm_e2sm/src/ASN1c/RANfunctionID-Item.h | 44 - .../kpm_e2sm/src/ASN1c/RANfunctionID.c | 64 - .../kpm_e2sm/src/ASN1c/RANfunctionID.h | 46 - .../kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.c | 60 - .../kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.h | 44 - .../kpm_e2sm/src/ASN1c/RANfunctionOID.c | 109 - .../kpm_e2sm/src/ASN1c/RANfunctionOID.h | 46 - .../kpm_e2sm/src/ASN1c/RANfunctionRevision.c | 64 - .../kpm_e2sm/src/ASN1c/RANfunctionRevision.h | 46 - .../kpm_e2sm/src/ASN1c/RANfunctions-List.c | 53 - .../kpm_e2sm/src/ASN1c/RANfunctions-List.h | 41 - .../kpm_e2sm/src/ASN1c/RANfunctionsID-List.c | 53 - .../kpm_e2sm/src/ASN1c/RANfunctionsID-List.h | 41 - .../kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.c | 53 - .../kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.h | 41 - .../src/ASN1c/RIC-EventTriggerStyle-List.c | 70 - .../src/ASN1c/RIC-EventTriggerStyle-List.h | 48 - .../kpm_e2sm/src/ASN1c/RIC-Format-Type.c | 31 - .../kpm_e2sm/src/ASN1c/RIC-Format-Type.h | 45 - .../kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.c | 80 - .../kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.h | 49 - .../kpm_e2sm/src/ASN1c/RIC-Style-Name.c | 109 - .../kpm_e2sm/src/ASN1c/RIC-Style-Name.h | 46 - .../kpm_e2sm/src/ASN1c/RIC-Style-Type.c | 31 - .../kpm_e2sm/src/ASN1c/RIC-Style-Type.h | 45 - .../kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.c | 50 - .../kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.h | 42 - .../kpm_e2sm/src/ASN1c/RICaction-Admitted-List.c | 53 - .../kpm_e2sm/src/ASN1c/RICaction-Admitted-List.h | 41 - .../src/ASN1c/RICaction-NotAdmitted-Item.c | 60 - .../src/ASN1c/RICaction-NotAdmitted-Item.h | 44 - .../src/ASN1c/RICaction-NotAdmitted-List.c | 53 - .../src/ASN1c/RICaction-NotAdmitted-List.h | 41 - .../kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.c | 83 - .../kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.h | 50 - .../kpm_e2sm/src/ASN1c/RICactionDefinition.c | 31 - .../kpm_e2sm/src/ASN1c/RICactionDefinition.h | 45 - .../e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.c | 64 - .../e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.h | 46 - .../kpm_e2sm/src/ASN1c/RICactionType.c | 60 - .../kpm_e2sm/src/ASN1c/RICactionType.h | 57 - .../kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.c | 53 - .../kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.h | 44 - .../kpm_e2sm/src/ASN1c/RICcallProcessID.c | 31 - .../kpm_e2sm/src/ASN1c/RICcallProcessID.h | 45 - .../kpm_e2sm/src/ASN1c/RICcontrolAckRequest.c | 58 - .../kpm_e2sm/src/ASN1c/RICcontrolAckRequest.h | 54 - .../kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.c | 50 - .../kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.h | 44 - .../kpm_e2sm/src/ASN1c/RICcontrolFailure.c | 50 - .../kpm_e2sm/src/ASN1c/RICcontrolFailure.h | 44 - .../kpm_e2sm/src/ASN1c/RICcontrolHeader.c | 31 - .../kpm_e2sm/src/ASN1c/RICcontrolHeader.h | 45 - .../kpm_e2sm/src/ASN1c/RICcontrolMessage.c | 31 - .../kpm_e2sm/src/ASN1c/RICcontrolMessage.h | 45 - .../kpm_e2sm/src/ASN1c/RICcontrolOutcome.c | 31 - .../kpm_e2sm/src/ASN1c/RICcontrolOutcome.h | 45 - .../kpm_e2sm/src/ASN1c/RICcontrolRequest.c | 50 - .../kpm_e2sm/src/ASN1c/RICcontrolRequest.h | 44 - .../kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.c | 31 - .../kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.h | 45 - .../kpm_e2sm/src/ASN1c/RICindication.c | 50 - .../kpm_e2sm/src/ASN1c/RICindication.h | 44 - .../kpm_e2sm/src/ASN1c/RICindicationHeader.c | 31 - .../kpm_e2sm/src/ASN1c/RICindicationHeader.h | 45 - .../kpm_e2sm/src/ASN1c/RICindicationMessage.c | 31 - .../kpm_e2sm/src/ASN1c/RICindicationMessage.h | 45 - .../kpm_e2sm/src/ASN1c/RICindicationSN.c | 64 - .../kpm_e2sm/src/ASN1c/RICindicationSN.h | 45 - .../kpm_e2sm/src/ASN1c/RICindicationType.c | 58 - .../kpm_e2sm/src/ASN1c/RICindicationType.h | 54 - .../kpm_e2sm/src/ASN1c/RICrequestID.c | 126 - .../kpm_e2sm/src/ASN1c/RICrequestID.h | 45 - .../kpm_e2sm/src/ASN1c/RICserviceQuery.c | 50 - .../kpm_e2sm/src/ASN1c/RICserviceQuery.h | 44 - .../kpm_e2sm/src/ASN1c/RICserviceUpdate.c | 50 - .../kpm_e2sm/src/ASN1c/RICserviceUpdate.h | 44 - .../src/ASN1c/RICserviceUpdateAcknowledge.c | 50 - .../src/ASN1c/RICserviceUpdateAcknowledge.h | 44 - .../kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.c | 50 - .../kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.h | 44 - .../src/ASN1c/RICsubscription-List-withCause.c | 53 - .../src/ASN1c/RICsubscription-List-withCause.h | 41 - .../src/ASN1c/RICsubscription-withCause-Item.c | 70 - .../src/ASN1c/RICsubscription-withCause-Item.h | 46 - .../src/ASN1c/RICsubscriptionDeleteFailure.c | 50 - .../src/ASN1c/RICsubscriptionDeleteFailure.h | 44 - .../src/ASN1c/RICsubscriptionDeleteRequest.c | 50 - .../src/ASN1c/RICsubscriptionDeleteRequest.h | 44 - .../src/ASN1c/RICsubscriptionDeleteRequired.c | 50 - .../src/ASN1c/RICsubscriptionDeleteRequired.h | 44 - .../src/ASN1c/RICsubscriptionDeleteResponse.c | 50 - .../src/ASN1c/RICsubscriptionDeleteResponse.h | 44 - .../kpm_e2sm/src/ASN1c/RICsubscriptionDetails.c | 60 - .../kpm_e2sm/src/ASN1c/RICsubscriptionDetails.h | 44 - .../kpm_e2sm/src/ASN1c/RICsubscriptionFailure.c | 50 - .../kpm_e2sm/src/ASN1c/RICsubscriptionFailure.h | 44 - .../kpm_e2sm/src/ASN1c/RICsubscriptionRequest.c | 50 - .../kpm_e2sm/src/ASN1c/RICsubscriptionRequest.h | 44 - .../kpm_e2sm/src/ASN1c/RICsubscriptionResponse.c | 50 - .../kpm_e2sm/src/ASN1c/RICsubscriptionResponse.h | 44 - .../kpm_e2sm/src/ASN1c/RICsubsequentAction.c | 60 - .../kpm_e2sm/src/ASN1c/RICsubsequentAction.h | 46 - .../kpm_e2sm/src/ASN1c/RICsubsequentActionType.c | 58 - .../kpm_e2sm/src/ASN1c/RICsubsequentActionType.h | 56 - .../kpm_e2sm/src/ASN1c/RICtimeToWait.c | 88 - .../kpm_e2sm/src/ASN1c/RICtimeToWait.h | 71 - .../kpm_e2sm/src/ASN1c/RT-Period-IE.c | 94 - .../kpm_e2sm/src/ASN1c/RT-Period-IE.h | 74 - .../kpm_e2sm/src/ASN1c/ResetRequest.c | 50 - .../kpm_e2sm/src/ASN1c/ResetRequest.h | 44 - .../kpm_e2sm/src/ASN1c/ResetResponse.c | 50 - .../kpm_e2sm/src/ASN1c/ResetResponse.h | 44 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.c | 130 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.h | 41 - .../kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.c | 72 - .../kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.h | 54 - .../src/ASN1c/SlicePerPlmnPerCellListItem.c | 139 - .../src/ASN1c/SlicePerPlmnPerCellListItem.h | 58 - .../kpm_e2sm/src/ASN1c/SliceToReportListItem.c | 139 - .../kpm_e2sm/src/ASN1c/SliceToReportListItem.h | 58 - .../kpm_e2sm/src/ASN1c/SuccessfulOutcome.c | 409 - .../kpm_e2sm/src/ASN1c/SuccessfulOutcome.h | 102 - .../kpm_e2sm/src/ASN1c/TNLinformation.c | 140 - .../kpm_e2sm/src/ASN1c/TNLinformation.h | 45 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.c | 60 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.h | 57 - .../e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.c | 66 - .../e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.h | 58 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.c | 31 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.h | 45 - .../kpm_e2sm/src/ASN1c/TransactionID.c | 64 - .../kpm_e2sm/src/ASN1c/TransactionID.h | 45 - .../kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.c | 50 - .../kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.h | 44 - .../kpm_e2sm/src/ASN1c/TriggeringMessage.c | 58 - .../kpm_e2sm/src/ASN1c/TriggeringMessage.h | 54 - .../e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.c | 58 - .../e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.h | 56 - .../kpm_e2sm/src/ASN1c/UE-Report-Type.c | 60 - .../kpm_e2sm/src/ASN1c/UE-Report-Type.h | 57 - .../kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.c | 399 - .../kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.h | 100 - .../kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.c | 41 - .../kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.h | 52 - .../e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.c | 88 - .../e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.h | 72 - .../kpm_e2sm/src/ASN1c/asn_application.c | 481 - .../kpm_e2sm/src/ASN1c/asn_application.h | 171 - .../kpm_e2sm/src/ASN1c/asn_bit_data.c | 333 - .../kpm_e2sm/src/ASN1c/asn_bit_data.h | 83 - .../e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs.h | 108 - .../kpm_e2sm/src/ASN1c/asn_codecs_prim.c | 317 - .../kpm_e2sm/src/ASN1c/asn_codecs_prim.h | 51 - .../kpm_e2sm/src/ASN1c/asn_constant.h | 25 - .../kpm_e2sm/src/ASN1c/asn_internal.c | 49 - .../kpm_e2sm/src/ASN1c/asn_internal.h | 159 - e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_ioc.h | 51 - .../kpm_e2sm/src/ASN1c/asn_random_fill.c | 56 - .../kpm_e2sm/src/ASN1c/asn_random_fill.h | 51 - .../e2sm_examples/kpm_e2sm/src/ASN1c/asn_system.h | 150 - .../e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.c | 283 - .../e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.h | 66 - .../kpm_e2sm/src/ASN1c/ber_tlv_length.c | 168 - .../kpm_e2sm/src/ASN1c/ber_tlv_length.h | 50 - .../e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.c | 144 - .../e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.h | 60 - .../kpm_e2sm/src/ASN1c/constr_CHOICE.c | 1533 -- .../kpm_e2sm/src/ASN1c/constr_CHOICE.h | 80 - .../kpm_e2sm/src/ASN1c/constr_CHOICE_oer.c | 380 - .../kpm_e2sm/src/ASN1c/constr_SEQUENCE.c | 2059 -- .../kpm_e2sm/src/ASN1c/constr_SEQUENCE.h | 68 - .../kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.c | 358 - .../kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.h | 41 - .../kpm_e2sm/src/ASN1c/constr_SEQUENCE_oer.c | 561 - .../kpm_e2sm/src/ASN1c/constr_SET_OF.c | 1441 -- .../kpm_e2sm/src/ASN1c/constr_SET_OF.h | 49 - .../kpm_e2sm/src/ASN1c/constr_SET_OF_oer.c | 285 - .../e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.c | 80 - .../e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.h | 262 - .../e2sm_examples/kpm_e2sm/src/ASN1c/constraints.c | 93 - .../e2sm_examples/kpm_e2sm/src/ASN1c/constraints.h | 62 - .../kpm_e2sm/src/ASN1c/converter-example.mk | 33 - .../e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.c | 194 - .../e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.h | 68 - .../e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.c | 152 - .../e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.h | 72 - .../e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.c | 141 - .../e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.h | 70 - .../e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.c | 122 - .../e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.h | 47 - .../kpm_e2sm/src/ASN1c/pdu_collection.c | 15 - .../e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.c | 185 - .../e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.h | 82 - .../e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.c | 265 - .../e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.h | 93 - .../kpm_e2sm/src/ASN1c/per_opentype.c | 533 - .../kpm_e2sm/src/ASN1c/per_opentype.h | 44 - .../e2sm_examples/kpm_e2sm/src/ASN1c/per_support.c | 492 - .../e2sm_examples/kpm_e2sm/src/ASN1c/per_support.h | 127 - .../e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.c | 369 - .../e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.h | 106 - .../e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.c | 237 - .../e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.h | 83 - .../e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.c | 227 - .../e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.h | 55 - .../e2sm_examples/kpm_e2sm/src/kpm/CMakeLists.txt | 2 +- .../e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.cpp | 2250 +- .../e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.hpp | 39 +- .../kpm_e2sm/src/kpm/kpm_callbacks.cpp | 935 +- .../kpm_e2sm/src/kpm/kpm_callbacks.hpp | 0 .../kpm_e2sm/src/kpm/viavi_connector.hpp | 0 e2sim/src/ASN1c/AMFName.c | 106 - e2sim/src/ASN1c/AMFName.h | 44 - e2sim/src/ASN1c/ANY.c | 450 - e2sim/src/ASN1c/ANY.h | 65 - e2sim/src/ASN1c/BIT_STRING.c | 656 - e2sim/src/ASN1c/BIT_STRING.h | 48 - e2sim/src/ASN1c/Cause.c | 102 - e2sim/src/ASN1c/Cause.h | 71 - e2sim/src/ASN1c/CauseE2node.c | 53 - e2sim/src/ASN1c/CauseE2node.h | 53 - e2sim/src/ASN1c/CauseMisc.c | 59 - e2sim/src/ASN1c/CauseMisc.h | 56 - e2sim/src/ASN1c/CauseProtocol.c | 65 - e2sim/src/ASN1c/CauseProtocol.h | 59 - e2sim/src/ASN1c/CauseRICrequest.c | 79 - e2sim/src/ASN1c/CauseRICrequest.h | 66 - e2sim/src/ASN1c/CauseRICservice.c | 57 - e2sim/src/ASN1c/CauseRICservice.h | 55 - e2sim/src/ASN1c/CauseTransport.c | 55 - e2sim/src/ASN1c/CauseTransport.h | 54 - e2sim/src/ASN1c/Criticality.c | 55 - e2sim/src/ASN1c/Criticality.h | 52 - e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.c | 70 - e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.h | 48 - e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.c | 50 - e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.h | 44 - e2sim/src/ASN1c/CriticalityDiagnostics.c | 94 - e2sim/src/ASN1c/CriticalityDiagnostics.h | 52 - e2sim/src/ASN1c/E2AP-PDU.c | 75 - e2sim/src/ASN1c/E2AP-PDU.h | 61 - e2sim/src/ASN1c/E2connectionSetupFailed-Item.c | 60 - e2sim/src/ASN1c/E2connectionSetupFailed-Item.h | 44 - e2sim/src/ASN1c/E2connectionSetupFailed-List.c | 50 - e2sim/src/ASN1c/E2connectionSetupFailed-List.h | 41 - e2sim/src/ASN1c/E2connectionUpdate-Item.c | 60 - e2sim/src/ASN1c/E2connectionUpdate-Item.h | 44 - e2sim/src/ASN1c/E2connectionUpdate-List.c | 50 - e2sim/src/ASN1c/E2connectionUpdate-List.h | 41 - e2sim/src/ASN1c/E2connectionUpdate.c | 50 - e2sim/src/ASN1c/E2connectionUpdate.h | 44 - e2sim/src/ASN1c/E2connectionUpdateAcknowledge.c | 50 - e2sim/src/ASN1c/E2connectionUpdateAcknowledge.h | 44 - e2sim/src/ASN1c/E2connectionUpdateFailure.c | 50 - e2sim/src/ASN1c/E2connectionUpdateFailure.h | 44 - e2sim/src/ASN1c/E2connectionUpdateRemove-Item.c | 50 - e2sim/src/ASN1c/E2connectionUpdateRemove-Item.h | 42 - e2sim/src/ASN1c/E2connectionUpdateRemove-List.c | 50 - e2sim/src/ASN1c/E2connectionUpdateRemove-List.h | 41 - .../src/ASN1c/E2nodeComponentConfigAddition-Item.c | 70 - .../src/ASN1c/E2nodeComponentConfigAddition-Item.h | 46 - .../src/ASN1c/E2nodeComponentConfigAddition-List.c | 50 - .../src/ASN1c/E2nodeComponentConfigAddition-List.h | 41 - .../ASN1c/E2nodeComponentConfigAdditionAck-Item.c | 70 - .../ASN1c/E2nodeComponentConfigAdditionAck-Item.h | 46 - .../ASN1c/E2nodeComponentConfigAdditionAck-List.c | 50 - .../ASN1c/E2nodeComponentConfigAdditionAck-List.h | 41 - .../src/ASN1c/E2nodeComponentConfigRemoval-Item.c | 60 - .../src/ASN1c/E2nodeComponentConfigRemoval-Item.h | 44 - .../src/ASN1c/E2nodeComponentConfigRemoval-List.c | 50 - .../src/ASN1c/E2nodeComponentConfigRemoval-List.h | 41 - .../ASN1c/E2nodeComponentConfigRemovalAck-Item.c | 70 - .../ASN1c/E2nodeComponentConfigRemovalAck-Item.h | 46 - .../ASN1c/E2nodeComponentConfigRemovalAck-List.c | 50 - .../ASN1c/E2nodeComponentConfigRemovalAck-List.h | 41 - e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.c | 70 - e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.h | 46 - e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.c | 50 - e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.h | 41 - .../ASN1c/E2nodeComponentConfigUpdateAck-Item.c | 70 - .../ASN1c/E2nodeComponentConfigUpdateAck-Item.h | 46 - .../ASN1c/E2nodeComponentConfigUpdateAck-List.c | 50 - .../ASN1c/E2nodeComponentConfigUpdateAck-List.h | 41 - e2sim/src/ASN1c/E2nodeComponentConfiguration.c | 60 - e2sim/src/ASN1c/E2nodeComponentConfiguration.h | 45 - e2sim/src/ASN1c/E2nodeComponentConfigurationAck.c | 111 - e2sim/src/ASN1c/E2nodeComponentConfigurationAck.h | 58 - e2sim/src/ASN1c/E2nodeComponentID.c | 119 - e2sim/src/ASN1c/E2nodeComponentID.h | 76 - e2sim/src/ASN1c/E2nodeComponentInterfaceE1.c | 50 - e2sim/src/ASN1c/E2nodeComponentInterfaceE1.h | 44 - e2sim/src/ASN1c/E2nodeComponentInterfaceF1.c | 50 - e2sim/src/ASN1c/E2nodeComponentInterfaceF1.h | 44 - e2sim/src/ASN1c/E2nodeComponentInterfaceNG.c | 50 - e2sim/src/ASN1c/E2nodeComponentInterfaceNG.h | 44 - e2sim/src/ASN1c/E2nodeComponentInterfaceS1.c | 50 - e2sim/src/ASN1c/E2nodeComponentInterfaceS1.h | 44 - e2sim/src/ASN1c/E2nodeComponentInterfaceType.c | 65 - e2sim/src/ASN1c/E2nodeComponentInterfaceType.h | 59 - e2sim/src/ASN1c/E2nodeComponentInterfaceW1.c | 50 - e2sim/src/ASN1c/E2nodeComponentInterfaceW1.h | 44 - e2sim/src/ASN1c/E2nodeComponentInterfaceX2.c | 64 - e2sim/src/ASN1c/E2nodeComponentInterfaceX2.h | 48 - e2sim/src/ASN1c/E2nodeComponentInterfaceXn.c | 50 - e2sim/src/ASN1c/E2nodeComponentInterfaceXn.h | 44 - e2sim/src/ASN1c/E2nodeConfigurationUpdate.c | 50 - e2sim/src/ASN1c/E2nodeConfigurationUpdate.h | 44 - .../ASN1c/E2nodeConfigurationUpdateAcknowledge.c | 50 - .../ASN1c/E2nodeConfigurationUpdateAcknowledge.h | 44 - e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.c | 50 - e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.h | 44 - e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.c | 60 - e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.h | 43 - e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.c | 50 - e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.h | 41 - e2sim/src/ASN1c/E2setupFailure.c | 50 - e2sim/src/ASN1c/E2setupFailure.h | 44 - e2sim/src/ASN1c/E2setupRequest.c | 50 - e2sim/src/ASN1c/E2setupRequest.h | 44 - e2sim/src/ASN1c/E2setupResponse.c | 50 - e2sim/src/ASN1c/E2setupResponse.h | 44 - e2sim/src/ASN1c/ENB-ID-Choice.c | 180 - e2sim/src/ASN1c/ENB-ID-Choice.h | 60 - e2sim/src/ASN1c/ENB-ID.c | 226 - e2sim/src/ASN1c/ENB-ID.h | 61 - e2sim/src/ASN1c/ENGNB-ID.c | 88 - e2sim/src/ASN1c/ENGNB-ID.h | 56 - e2sim/src/ASN1c/ErrorIndication.c | 50 - e2sim/src/ASN1c/ErrorIndication.h | 44 - e2sim/src/ASN1c/GNB-CU-UP-ID.c | 67 - e2sim/src/ASN1c/GNB-CU-UP-ID.h | 44 - e2sim/src/ASN1c/GNB-DU-ID.c | 67 - e2sim/src/ASN1c/GNB-DU-ID.h | 44 - e2sim/src/ASN1c/GNB-ID-Choice.c | 88 - e2sim/src/ASN1c/GNB-ID-Choice.h | 56 - e2sim/src/ASN1c/GlobalE2node-ID.c | 86 - e2sim/src/ASN1c/GlobalE2node-ID.h | 64 - e2sim/src/ASN1c/GlobalE2node-eNB-ID.c | 50 - e2sim/src/ASN1c/GlobalE2node-eNB-ID.h | 44 - e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.c | 72 - e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.h | 48 - e2sim/src/ASN1c/GlobalE2node-gNB-ID.c | 83 - e2sim/src/ASN1c/GlobalE2node-gNB-ID.h | 52 - e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.c | 73 - e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.h | 50 - e2sim/src/ASN1c/GlobalENB-ID.c | 60 - e2sim/src/ASN1c/GlobalENB-ID.h | 46 - e2sim/src/ASN1c/GlobalNG-RANNode-ID.c | 64 - e2sim/src/ASN1c/GlobalNG-RANNode-ID.h | 61 - e2sim/src/ASN1c/GlobalRIC-ID.c | 96 - e2sim/src/ASN1c/GlobalRIC-ID.h | 44 - e2sim/src/ASN1c/GlobalenGNB-ID.c | 60 - e2sim/src/ASN1c/GlobalenGNB-ID.h | 46 - e2sim/src/ASN1c/GlobalgNB-ID.c | 60 - e2sim/src/ASN1c/GlobalgNB-ID.h | 46 - e2sim/src/ASN1c/GlobalngeNB-ID.c | 60 - e2sim/src/ASN1c/GlobalngeNB-ID.h | 46 - e2sim/src/ASN1c/INTEGER.c | 1735 -- e2sim/src/ASN1c/INTEGER.h | 108 - e2sim/src/ASN1c/InitiatingMessage.c | 440 - e2sim/src/ASN1c/InitiatingMessage.h | 110 - e2sim/src/ASN1c/MMEname.c | 106 - e2sim/src/ASN1c/MMEname.h | 44 - e2sim/src/ASN1c/Makefile.am.libasncodec | 371 - e2sim/src/ASN1c/NGENB-DU-ID.c | 67 - e2sim/src/ASN1c/NGENB-DU-ID.h | 44 - e2sim/src/ASN1c/NativeEnumerated.c | 367 - e2sim/src/ASN1c/NativeEnumerated.h | 45 - e2sim/src/ASN1c/NativeInteger.c | 550 - e2sim/src/ASN1c/NativeInteger.h | 46 - e2sim/src/ASN1c/OCTET_STRING.c | 2411 -- e2sim/src/ASN1c/OCTET_STRING.h | 102 - e2sim/src/ASN1c/OPEN_TYPE.c | 509 - e2sim/src/ASN1c/OPEN_TYPE.h | 77 - e2sim/src/ASN1c/PLMN-Identity.c | 62 - e2sim/src/ASN1c/PLMN-Identity.h | 44 - e2sim/src/ASN1c/Presence.c | 55 - e2sim/src/ASN1c/Presence.h | 52 - e2sim/src/ASN1c/PrintableString.c | 130 - e2sim/src/ASN1c/PrintableString.h | 37 - e2sim/src/ASN1c/ProcedureCode.c | 61 - e2sim/src/ASN1c/ProcedureCode.h | 56 - e2sim/src/ASN1c/ProtocolIE-Container.c | 1090 - e2sim/src/ASN1c/ProtocolIE-Container.h | 330 - e2sim/src/ASN1c/ProtocolIE-ContainerList.c | 9 - e2sim/src/ASN1c/ProtocolIE-ContainerList.h | 23 - e2sim/src/ASN1c/ProtocolIE-ContainerPair.c | 9 - e2sim/src/ASN1c/ProtocolIE-ContainerPair.h | 23 - e2sim/src/ASN1c/ProtocolIE-ContainerPairList.c | 9 - e2sim/src/ASN1c/ProtocolIE-ContainerPairList.h | 23 - e2sim/src/ASN1c/ProtocolIE-Field.c | 12150 ---------- e2sim/src/ASN1c/ProtocolIE-Field.h | 1254 - e2sim/src/ASN1c/ProtocolIE-FieldPair.c | 9 - e2sim/src/ASN1c/ProtocolIE-FieldPair.h | 23 - e2sim/src/ASN1c/ProtocolIE-ID.c | 61 - e2sim/src/ASN1c/ProtocolIE-ID.h | 103 - e2sim/src/ASN1c/ProtocolIE-SingleContainer.c | 400 - e2sim/src/ASN1c/ProtocolIE-SingleContainer.h | 251 - e2sim/src/ASN1c/RANfunction-Item.c | 80 - e2sim/src/ASN1c/RANfunction-Item.h | 48 - e2sim/src/ASN1c/RANfunctionDefinition.c | 31 - e2sim/src/ASN1c/RANfunctionDefinition.h | 43 - e2sim/src/ASN1c/RANfunctionID-Item.c | 60 - e2sim/src/ASN1c/RANfunctionID-Item.h | 44 - e2sim/src/ASN1c/RANfunctionID.c | 61 - e2sim/src/ASN1c/RANfunctionID.h | 44 - e2sim/src/ASN1c/RANfunctionIDcause-Item.c | 60 - e2sim/src/ASN1c/RANfunctionIDcause-Item.h | 44 - e2sim/src/ASN1c/RANfunctionOID.c | 106 - e2sim/src/ASN1c/RANfunctionOID.h | 44 - e2sim/src/ASN1c/RANfunctionRevision.c | 61 - e2sim/src/ASN1c/RANfunctionRevision.h | 44 - e2sim/src/ASN1c/RANfunctions-List.c | 50 - e2sim/src/ASN1c/RANfunctions-List.h | 41 - e2sim/src/ASN1c/RANfunctionsID-List.c | 50 - e2sim/src/ASN1c/RANfunctionsID-List.h | 41 - e2sim/src/ASN1c/RANfunctionsIDcause-List.c | 50 - e2sim/src/ASN1c/RANfunctionsIDcause-List.h | 41 - e2sim/src/ASN1c/RICaction-Admitted-Item.c | 50 - e2sim/src/ASN1c/RICaction-Admitted-Item.h | 42 - e2sim/src/ASN1c/RICaction-Admitted-List.c | 50 - e2sim/src/ASN1c/RICaction-Admitted-List.h | 41 - e2sim/src/ASN1c/RICaction-NotAdmitted-Item.c | 60 - e2sim/src/ASN1c/RICaction-NotAdmitted-Item.h | 44 - e2sim/src/ASN1c/RICaction-NotAdmitted-List.c | 50 - e2sim/src/ASN1c/RICaction-NotAdmitted-List.h | 41 - e2sim/src/ASN1c/RICaction-ToBeSetup-Item.c | 83 - e2sim/src/ASN1c/RICaction-ToBeSetup-Item.h | 50 - e2sim/src/ASN1c/RICactionDefinition.c | 31 - e2sim/src/ASN1c/RICactionDefinition.h | 43 - e2sim/src/ASN1c/RICactionID.c | 61 - e2sim/src/ASN1c/RICactionID.h | 44 - e2sim/src/ASN1c/RICactionType.c | 57 - e2sim/src/ASN1c/RICactionType.h | 55 - e2sim/src/ASN1c/RICactions-ToBeSetup-List.c | 50 - e2sim/src/ASN1c/RICactions-ToBeSetup-List.h | 44 - e2sim/src/ASN1c/RICcallProcessID.c | 31 - e2sim/src/ASN1c/RICcallProcessID.h | 43 - e2sim/src/ASN1c/RICcontrolAckRequest.c | 55 - e2sim/src/ASN1c/RICcontrolAckRequest.h | 52 - e2sim/src/ASN1c/RICcontrolAcknowledge.c | 50 - e2sim/src/ASN1c/RICcontrolAcknowledge.h | 44 - e2sim/src/ASN1c/RICcontrolFailure.c | 50 - e2sim/src/ASN1c/RICcontrolFailure.h | 44 - e2sim/src/ASN1c/RICcontrolHeader.c | 31 - e2sim/src/ASN1c/RICcontrolHeader.h | 43 - e2sim/src/ASN1c/RICcontrolMessage.c | 31 - e2sim/src/ASN1c/RICcontrolMessage.h | 43 - e2sim/src/ASN1c/RICcontrolOutcome.c | 31 - e2sim/src/ASN1c/RICcontrolOutcome.h | 43 - e2sim/src/ASN1c/RICcontrolRequest.c | 50 - e2sim/src/ASN1c/RICcontrolRequest.h | 44 - e2sim/src/ASN1c/RICeventTriggerDefinition.c | 31 - e2sim/src/ASN1c/RICeventTriggerDefinition.h | 43 - e2sim/src/ASN1c/RICindication.c | 50 - e2sim/src/ASN1c/RICindication.h | 44 - e2sim/src/ASN1c/RICindicationHeader.c | 31 - e2sim/src/ASN1c/RICindicationHeader.h | 43 - e2sim/src/ASN1c/RICindicationMessage.c | 31 - e2sim/src/ASN1c/RICindicationMessage.h | 43 - e2sim/src/ASN1c/RICindicationSN.c | 61 - e2sim/src/ASN1c/RICindicationSN.h | 43 - e2sim/src/ASN1c/RICindicationType.c | 55 - e2sim/src/ASN1c/RICindicationType.h | 52 - e2sim/src/ASN1c/RICrequestID.c | 120 - e2sim/src/ASN1c/RICrequestID.h | 45 - e2sim/src/ASN1c/RICserviceQuery.c | 50 - e2sim/src/ASN1c/RICserviceQuery.h | 44 - e2sim/src/ASN1c/RICserviceUpdate.c | 50 - e2sim/src/ASN1c/RICserviceUpdate.h | 44 - e2sim/src/ASN1c/RICserviceUpdateAcknowledge.c | 50 - e2sim/src/ASN1c/RICserviceUpdateAcknowledge.h | 44 - e2sim/src/ASN1c/RICserviceUpdateFailure.c | 50 - e2sim/src/ASN1c/RICserviceUpdateFailure.h | 44 - e2sim/src/ASN1c/RICsubscription-List-withCause.c | 50 - e2sim/src/ASN1c/RICsubscription-List-withCause.h | 41 - e2sim/src/ASN1c/RICsubscription-withCause-Item.c | 70 - e2sim/src/ASN1c/RICsubscription-withCause-Item.h | 46 - e2sim/src/ASN1c/RICsubscriptionDeleteFailure.c | 50 - e2sim/src/ASN1c/RICsubscriptionDeleteFailure.h | 44 - e2sim/src/ASN1c/RICsubscriptionDeleteRequest.c | 50 - e2sim/src/ASN1c/RICsubscriptionDeleteRequest.h | 44 - e2sim/src/ASN1c/RICsubscriptionDeleteRequired.c | 50 - e2sim/src/ASN1c/RICsubscriptionDeleteRequired.h | 44 - e2sim/src/ASN1c/RICsubscriptionDeleteResponse.c | 50 - e2sim/src/ASN1c/RICsubscriptionDeleteResponse.h | 44 - e2sim/src/ASN1c/RICsubscriptionDetails.c | 60 - e2sim/src/ASN1c/RICsubscriptionDetails.h | 44 - e2sim/src/ASN1c/RICsubscriptionFailure.c | 50 - e2sim/src/ASN1c/RICsubscriptionFailure.h | 44 - e2sim/src/ASN1c/RICsubscriptionRequest.c | 50 - e2sim/src/ASN1c/RICsubscriptionRequest.h | 44 - e2sim/src/ASN1c/RICsubscriptionResponse.c | 50 - e2sim/src/ASN1c/RICsubscriptionResponse.h | 44 - e2sim/src/ASN1c/RICsubsequentAction.c | 60 - e2sim/src/ASN1c/RICsubsequentAction.h | 46 - e2sim/src/ASN1c/RICsubsequentActionType.c | 55 - e2sim/src/ASN1c/RICsubsequentActionType.h | 54 - e2sim/src/ASN1c/RICtimeToWait.c | 85 - e2sim/src/ASN1c/RICtimeToWait.h | 69 - e2sim/src/ASN1c/ResetRequest.c | 50 - e2sim/src/ASN1c/ResetRequest.h | 44 - e2sim/src/ASN1c/ResetResponse.c | 50 - e2sim/src/ASN1c/ResetResponse.h | 44 - e2sim/src/ASN1c/SuccessfulOutcome.c | 400 - e2sim/src/ASN1c/SuccessfulOutcome.h | 102 - e2sim/src/ASN1c/TNLinformation.c | 134 - e2sim/src/ASN1c/TNLinformation.h | 45 - e2sim/src/ASN1c/TNLusage.c | 57 - e2sim/src/ASN1c/TNLusage.h | 55 - e2sim/src/ASN1c/TimeToWait.c | 63 - e2sim/src/ASN1c/TimeToWait.h | 56 - e2sim/src/ASN1c/TransactionID.c | 61 - e2sim/src/ASN1c/TransactionID.h | 43 - e2sim/src/ASN1c/TriggeringMessage.c | 55 - e2sim/src/ASN1c/TriggeringMessage.h | 52 - e2sim/src/ASN1c/TypeOfError.c | 55 - e2sim/src/ASN1c/TypeOfError.h | 54 - e2sim/src/ASN1c/UnsuccessfulOutcome.c | 390 - e2sim/src/ASN1c/UnsuccessfulOutcome.h | 100 - e2sim/src/ASN1c/asn_SEQUENCE_OF.c | 41 - e2sim/src/ASN1c/asn_SEQUENCE_OF.h | 52 - e2sim/src/ASN1c/asn_SET_OF.c | 88 - e2sim/src/ASN1c/asn_SET_OF.h | 72 - e2sim/src/ASN1c/asn_application.c | 481 - e2sim/src/ASN1c/asn_application.h | 171 - e2sim/src/ASN1c/asn_bit_data.c | 333 - e2sim/src/ASN1c/asn_bit_data.h | 83 - e2sim/src/ASN1c/asn_codecs.h | 108 - e2sim/src/ASN1c/asn_codecs_prim.c | 317 - e2sim/src/ASN1c/asn_codecs_prim.h | 51 - e2sim/src/ASN1c/asn_constant.h | 25 - e2sim/src/ASN1c/asn_internal.c | 49 - e2sim/src/ASN1c/asn_internal.h | 159 - e2sim/src/ASN1c/asn_ioc.h | 51 - e2sim/src/ASN1c/asn_random_fill.c | 56 - e2sim/src/ASN1c/asn_random_fill.h | 51 - e2sim/src/ASN1c/asn_system.h | 150 - e2sim/src/ASN1c/ber_decoder.c | 283 - e2sim/src/ASN1c/ber_decoder.h | 66 - e2sim/src/ASN1c/ber_tlv_length.c | 168 - e2sim/src/ASN1c/ber_tlv_length.h | 50 - e2sim/src/ASN1c/ber_tlv_tag.c | 144 - e2sim/src/ASN1c/ber_tlv_tag.h | 60 - e2sim/src/ASN1c/constr_CHOICE.c | 1533 -- e2sim/src/ASN1c/constr_CHOICE.h | 80 - e2sim/src/ASN1c/constr_SEQUENCE.c | 2059 -- e2sim/src/ASN1c/constr_SEQUENCE.h | 68 - e2sim/src/ASN1c/constr_SEQUENCE_OF.c | 358 - e2sim/src/ASN1c/constr_SEQUENCE_OF.h | 41 - e2sim/src/ASN1c/constr_SET_OF.c | 1441 -- e2sim/src/ASN1c/constr_SET_OF.h | 49 - e2sim/src/ASN1c/constr_TYPE.c | 80 - e2sim/src/ASN1c/constr_TYPE.h | 262 - e2sim/src/ASN1c/constraints.c | 93 - e2sim/src/ASN1c/constraints.h | 62 - e2sim/src/ASN1c/der_encoder.c | 194 - e2sim/src/ASN1c/der_encoder.h | 68 - e2sim/src/ASN1c/per_decoder.c | 185 - e2sim/src/ASN1c/per_decoder.h | 82 - e2sim/src/ASN1c/per_encoder.c | 265 - e2sim/src/ASN1c/per_encoder.h | 93 - e2sim/src/ASN1c/per_opentype.c | 533 - e2sim/src/ASN1c/per_opentype.h | 44 - e2sim/src/ASN1c/per_support.c | 492 - e2sim/src/ASN1c/per_support.h | 127 - e2sim/src/ASN1c/xer_decoder.c | 369 - e2sim/src/ASN1c/xer_decoder.h | 106 - e2sim/src/ASN1c/xer_encoder.c | 237 - e2sim/src/ASN1c/xer_encoder.h | 83 - e2sim/src/ASN1c/xer_support.c | 227 - e2sim/src/ASN1c/xer_support.h | 55 - e2sim/src/DEF/CMakeLists.txt | 0 e2sim/src/DEF/e2sim_defs.cpp | 0 e2sim/src/DEF/e2sim_defs.h | 18 +- e2sim/src/SCTP/CMakeLists.txt | 0 e2sim/src/SCTP/e2sim_sctp.c | 0 e2sim/src/SCTP/e2sim_sctp.cpp | 6 - e2sim/src/SCTP/e2sim_sctp.h | 0 e2sim/src/SCTP/e2sim_sctp.hpp | 0 e2sim/src/base/CMakeLists.txt | 2 +- e2sim/src/base/e2sim.cpp | 10 +- e2sim/src/base/e2sim.hpp | 0 e2sim/src/encoding/CMakeLists.txt | 2 +- e2sim/src/encoding/encode_e2apv1.cpp | 67 +- e2sim/src/encoding/encode_e2apv1.hpp | 0 e2sim/src/messagerouting/CMakeLists.txt | 4 +- e2sim/src/messagerouting/e2ap_asn1c_codec.h | 0 e2sim/src/messagerouting/e2ap_message_handler.hpp | 0 2190 files changed, 110887 insertions(+), 171571 deletions(-) mode change 100644 => 100755 e2sim/CMakeLists.txt create mode 100755 e2sim/Dockerfile_kpm create mode 100644 e2sim/asn1c/AMF-UE-NGAP-ID.c create mode 100644 e2sim/asn1c/AMF-UE-NGAP-ID.h create mode 100644 e2sim/asn1c/AMFName.c create mode 100644 e2sim/asn1c/AMFName.h create mode 100644 e2sim/asn1c/AMFPointer.c create mode 100644 e2sim/asn1c/AMFPointer.h create mode 100644 e2sim/asn1c/AMFRegionID.c create mode 100644 e2sim/asn1c/AMFRegionID.h create mode 100644 e2sim/asn1c/AMFSetID.c create mode 100644 e2sim/asn1c/AMFSetID.h create mode 100644 e2sim/asn1c/ANY.c create mode 100644 e2sim/asn1c/ANY.h create mode 100644 e2sim/asn1c/ANY_aper.c create mode 100644 e2sim/asn1c/ANY_ber.c create mode 100644 e2sim/asn1c/ANY_jer.c create mode 100644 e2sim/asn1c/ANY_uper.c create mode 100644 e2sim/asn1c/ANY_xer.c create mode 100644 e2sim/asn1c/BIT_STRING.c create mode 100644 e2sim/asn1c/BIT_STRING.h create mode 100644 e2sim/asn1c/BIT_STRING_jer.c create mode 100644 e2sim/asn1c/BIT_STRING_print.c create mode 100644 e2sim/asn1c/BIT_STRING_rfill.c create mode 100644 e2sim/asn1c/BIT_STRING_uper.c create mode 100644 e2sim/asn1c/BIT_STRING_xer.c create mode 100644 e2sim/asn1c/BOOLEAN.c create mode 100644 e2sim/asn1c/BOOLEAN.h create mode 100644 e2sim/asn1c/BOOLEAN_aper.c create mode 100644 e2sim/asn1c/BOOLEAN_ber.c create mode 100644 e2sim/asn1c/BOOLEAN_jer.c create mode 100644 e2sim/asn1c/BOOLEAN_print.c create mode 100644 e2sim/asn1c/BOOLEAN_rfill.c create mode 100644 e2sim/asn1c/BOOLEAN_uper.c create mode 100644 e2sim/asn1c/BOOLEAN_xer.c create mode 100644 e2sim/asn1c/BinIndex.c create mode 100644 e2sim/asn1c/BinIndex.h create mode 100644 e2sim/asn1c/BinRangeDefinition.c create mode 100644 e2sim/asn1c/BinRangeDefinition.h create mode 100644 e2sim/asn1c/BinRangeItem.c create mode 100644 e2sim/asn1c/BinRangeItem.h create mode 100644 e2sim/asn1c/BinRangeList.c create mode 100644 e2sim/asn1c/BinRangeList.h create mode 100644 e2sim/asn1c/BinRangeValue.c create mode 100644 e2sim/asn1c/BinRangeValue.h create mode 100644 e2sim/asn1c/CGI.c create mode 100644 e2sim/asn1c/CGI.h rename e2sim/{src/ASN1c => asn1c}/CMakeLists.txt (100%) mode change 100644 => 100755 create mode 100644 e2sim/asn1c/Cause.c create mode 100644 e2sim/asn1c/Cause.h create mode 100644 e2sim/asn1c/CauseE2node.c create mode 100644 e2sim/asn1c/CauseE2node.h create mode 100644 e2sim/asn1c/CauseMisc.c create mode 100644 e2sim/asn1c/CauseMisc.h create mode 100644 e2sim/asn1c/CauseProtocol.c create mode 100644 e2sim/asn1c/CauseProtocol.h create mode 100644 e2sim/asn1c/CauseRICrequest.c create mode 100644 e2sim/asn1c/CauseRICrequest.h create mode 100644 e2sim/asn1c/CauseRICservice.c create mode 100644 e2sim/asn1c/CauseRICservice.h create mode 100644 e2sim/asn1c/CauseTransport.c create mode 100644 e2sim/asn1c/CauseTransport.h create mode 100644 e2sim/asn1c/CoreCPID.c create mode 100644 e2sim/asn1c/CoreCPID.h create mode 100644 e2sim/asn1c/Criticality.c create mode 100644 e2sim/asn1c/Criticality.h create mode 100644 e2sim/asn1c/CriticalityDiagnostics-IE-Item.c create mode 100644 e2sim/asn1c/CriticalityDiagnostics-IE-Item.h create mode 100644 e2sim/asn1c/CriticalityDiagnostics-IE-List.c create mode 100644 e2sim/asn1c/CriticalityDiagnostics-IE-List.h create mode 100644 e2sim/asn1c/CriticalityDiagnostics.c create mode 100644 e2sim/asn1c/CriticalityDiagnostics.h create mode 100644 e2sim/asn1c/DistMeasurementBinRangeItem.c create mode 100644 e2sim/asn1c/DistMeasurementBinRangeItem.h create mode 100644 e2sim/asn1c/DistMeasurementBinRangeList.c create mode 100644 e2sim/asn1c/DistMeasurementBinRangeList.h create mode 100644 e2sim/asn1c/E-UTRA-ARFCN.c create mode 100644 e2sim/asn1c/E-UTRA-ARFCN.h create mode 100644 e2sim/asn1c/E-UTRA-PCI.c create mode 100644 e2sim/asn1c/E-UTRA-PCI.h create mode 100644 e2sim/asn1c/E-UTRA-TAC.c create mode 100644 e2sim/asn1c/E-UTRA-TAC.h create mode 100644 e2sim/asn1c/E2AP-IEs_ENB-ID.c create mode 100644 e2sim/asn1c/E2AP-IEs_ENB-ID.h create mode 100644 e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.c create mode 100644 e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.h create mode 100644 e2sim/asn1c/E2AP-IEs_GNB-DU-ID.c create mode 100644 e2sim/asn1c/E2AP-IEs_GNB-DU-ID.h create mode 100644 e2sim/asn1c/E2AP-IEs_GlobalENB-ID.c create mode 100644 e2sim/asn1c/E2AP-IEs_GlobalENB-ID.h create mode 100644 e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.c create mode 100644 e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.h create mode 100644 e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.c create mode 100644 e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.h create mode 100644 e2sim/asn1c/E2AP-PDU.c create mode 100644 e2sim/asn1c/E2AP-PDU.h create mode 100644 e2sim/asn1c/E2RemovalFailure.c create mode 100644 e2sim/asn1c/E2RemovalFailure.h create mode 100644 e2sim/asn1c/E2RemovalRequest.c create mode 100644 e2sim/asn1c/E2RemovalRequest.h create mode 100644 e2sim/asn1c/E2RemovalResponse.c create mode 100644 e2sim/asn1c/E2RemovalResponse.h create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.c create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.h create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.c create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.h create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.c create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.h create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.c create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.h create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.c create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.h create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.c create mode 100644 e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.h create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.c create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.h create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.c create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.h create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.c create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.h create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.c create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.h create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.c create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.h create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition.c create mode 100644 e2sim/asn1c/E2SM-KPM-ActionDefinition.h create mode 100644 e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.c create mode 100644 e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.h create mode 100644 e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.c create mode 100644 e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.h create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.c create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.h create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationHeader.c create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationHeader.h create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.c create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.h create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.c create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.h create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.c create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.h create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationMessage.c create mode 100644 e2sim/asn1c/E2SM-KPM-IndicationMessage.h create mode 100644 e2sim/asn1c/E2SM-KPM-RANfunction-Description.c create mode 100644 e2sim/asn1c/E2SM-KPM-RANfunction-Description.h create mode 100644 e2sim/asn1c/E2connectionSetupFailed-Item.c create mode 100644 e2sim/asn1c/E2connectionSetupFailed-Item.h create mode 100644 e2sim/asn1c/E2connectionSetupFailed-List.c create mode 100644 e2sim/asn1c/E2connectionSetupFailed-List.h create mode 100644 e2sim/asn1c/E2connectionUpdate-Item.c create mode 100644 e2sim/asn1c/E2connectionUpdate-Item.h create mode 100644 e2sim/asn1c/E2connectionUpdate-List.c create mode 100644 e2sim/asn1c/E2connectionUpdate-List.h create mode 100644 e2sim/asn1c/E2connectionUpdate.c create mode 100644 e2sim/asn1c/E2connectionUpdate.h create mode 100644 e2sim/asn1c/E2connectionUpdateAcknowledge.c create mode 100644 e2sim/asn1c/E2connectionUpdateAcknowledge.h create mode 100644 e2sim/asn1c/E2connectionUpdateFailure.c create mode 100644 e2sim/asn1c/E2connectionUpdateFailure.h create mode 100644 e2sim/asn1c/E2connectionUpdateRemove-Item.c create mode 100644 e2sim/asn1c/E2connectionUpdateRemove-Item.h create mode 100644 e2sim/asn1c/E2connectionUpdateRemove-List.c create mode 100644 e2sim/asn1c/E2connectionUpdateRemove-List.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigAddition-Item.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigAddition-Item.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigAddition-List.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigAddition-List.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigRemoval-Item.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigRemoval-Item.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigRemoval-List.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigRemoval-List.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigUpdate-Item.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigUpdate-Item.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigUpdate-List.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigUpdate-List.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.h create mode 100644 e2sim/asn1c/E2nodeComponentConfiguration.c create mode 100644 e2sim/asn1c/E2nodeComponentConfiguration.h create mode 100644 e2sim/asn1c/E2nodeComponentConfigurationAck.c create mode 100644 e2sim/asn1c/E2nodeComponentConfigurationAck.h create mode 100644 e2sim/asn1c/E2nodeComponentID.c create mode 100644 e2sim/asn1c/E2nodeComponentID.h create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceE1.c create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceE1.h create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceF1.c create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceF1.h create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceNG.c create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceNG.h create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceS1.c create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceS1.h create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceType.c create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceType.h create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceW1.c create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceW1.h create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceX2.c create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceX2.h create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceXn.c create mode 100644 e2sim/asn1c/E2nodeComponentInterfaceXn.h create mode 100644 e2sim/asn1c/E2nodeConfigurationUpdate.c create mode 100644 e2sim/asn1c/E2nodeConfigurationUpdate.h create mode 100644 e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.c create mode 100644 e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.h create mode 100644 e2sim/asn1c/E2nodeConfigurationUpdateFailure.c create mode 100644 e2sim/asn1c/E2nodeConfigurationUpdateFailure.h create mode 100644 e2sim/asn1c/E2nodeTNLassociationRemoval-Item.c create mode 100644 e2sim/asn1c/E2nodeTNLassociationRemoval-Item.h create mode 100644 e2sim/asn1c/E2nodeTNLassociationRemoval-List.c create mode 100644 e2sim/asn1c/E2nodeTNLassociationRemoval-List.h create mode 100644 e2sim/asn1c/E2setupFailure.c create mode 100644 e2sim/asn1c/E2setupFailure.h create mode 100644 e2sim/asn1c/E2setupRequest.c create mode 100644 e2sim/asn1c/E2setupRequest.h create mode 100644 e2sim/asn1c/E2setupResponse.c create mode 100644 e2sim/asn1c/E2setupResponse.h create mode 100644 e2sim/asn1c/EN-GNB-ID.c create mode 100644 e2sim/asn1c/EN-GNB-ID.h create mode 100644 e2sim/asn1c/ENB-ID-Choice.c create mode 100644 e2sim/asn1c/ENB-ID-Choice.h create mode 100644 e2sim/asn1c/ENB-UE-X2AP-ID-Extension.c create mode 100644 e2sim/asn1c/ENB-UE-X2AP-ID-Extension.h create mode 100644 e2sim/asn1c/ENB-UE-X2AP-ID.c create mode 100644 e2sim/asn1c/ENB-UE-X2AP-ID.h create mode 100644 e2sim/asn1c/ENGNB-ID.c create mode 100644 e2sim/asn1c/ENGNB-ID.h create mode 100644 e2sim/asn1c/EUTRA-CGI.c create mode 100644 e2sim/asn1c/EUTRA-CGI.h create mode 100644 e2sim/asn1c/EUTRACellIdentity.c create mode 100644 e2sim/asn1c/EUTRACellIdentity.h create mode 100644 e2sim/asn1c/EXTERNAL.c create mode 100644 e2sim/asn1c/EXTERNAL.h create mode 100644 e2sim/asn1c/ErrorIndication.c create mode 100644 e2sim/asn1c/ErrorIndication.h create mode 100644 e2sim/asn1c/FiveGS-TAC.c create mode 100644 e2sim/asn1c/FiveGS-TAC.h create mode 100644 e2sim/asn1c/FiveQI.c create mode 100644 e2sim/asn1c/FiveQI.h create mode 100644 e2sim/asn1c/FreqBandNrItem.c create mode 100644 e2sim/asn1c/FreqBandNrItem.h create mode 100644 e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.c create mode 100644 e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.h create mode 100644 e2sim/asn1c/GNB-CU-UE-F1AP-ID.c create mode 100644 e2sim/asn1c/GNB-CU-UE-F1AP-ID.h create mode 100644 e2sim/asn1c/GNB-ID-Choice.c create mode 100644 e2sim/asn1c/GNB-ID-Choice.h create mode 100644 e2sim/asn1c/GNB-ID.c create mode 100644 e2sim/asn1c/GNB-ID.h create mode 100644 e2sim/asn1c/GUAMI.c create mode 100644 e2sim/asn1c/GUAMI.h create mode 100644 e2sim/asn1c/GUMMEI.c create mode 100644 e2sim/asn1c/GUMMEI.h create mode 100644 e2sim/asn1c/GlobalE2node-ID.c create mode 100644 e2sim/asn1c/GlobalE2node-ID.h create mode 100644 e2sim/asn1c/GlobalE2node-eNB-ID.c create mode 100644 e2sim/asn1c/GlobalE2node-eNB-ID.h create mode 100644 e2sim/asn1c/GlobalE2node-en-gNB-ID.c create mode 100644 e2sim/asn1c/GlobalE2node-en-gNB-ID.h create mode 100644 e2sim/asn1c/GlobalE2node-gNB-ID.c create mode 100644 e2sim/asn1c/GlobalE2node-gNB-ID.h create mode 100644 e2sim/asn1c/GlobalE2node-ng-eNB-ID.c create mode 100644 e2sim/asn1c/GlobalE2node-ng-eNB-ID.h create mode 100644 e2sim/asn1c/GlobalGNB-ID.c create mode 100644 e2sim/asn1c/GlobalGNB-ID.h create mode 100644 e2sim/asn1c/GlobalNG-RANNode-ID.c create mode 100644 e2sim/asn1c/GlobalNG-RANNode-ID.h create mode 100644 e2sim/asn1c/GlobalNGRANNodeID.c create mode 100644 e2sim/asn1c/GlobalNGRANNodeID.h create mode 100644 e2sim/asn1c/GlobalNgENB-ID.c create mode 100644 e2sim/asn1c/GlobalNgENB-ID.h create mode 100644 e2sim/asn1c/GlobalRIC-ID.c create mode 100644 e2sim/asn1c/GlobalRIC-ID.h create mode 100644 e2sim/asn1c/GlobalgNB-ID.c create mode 100644 e2sim/asn1c/GlobalgNB-ID.h create mode 100644 e2sim/asn1c/GlobalngeNB-ID.c create mode 100644 e2sim/asn1c/GlobalngeNB-ID.h create mode 100644 e2sim/asn1c/GranularityPeriod.c create mode 100644 e2sim/asn1c/GranularityPeriod.h create mode 100644 e2sim/asn1c/GraphicString.c create mode 100644 e2sim/asn1c/GraphicString.h create mode 100644 e2sim/asn1c/GroupID.c create mode 100644 e2sim/asn1c/GroupID.h create mode 100644 e2sim/asn1c/INTEGER.c create mode 100644 e2sim/asn1c/INTEGER.h create mode 100644 e2sim/asn1c/INTEGER_aper.c create mode 100644 e2sim/asn1c/INTEGER_ber.c create mode 100644 e2sim/asn1c/INTEGER_jer.c create mode 100644 e2sim/asn1c/INTEGER_print.c create mode 100644 e2sim/asn1c/INTEGER_rfill.c create mode 100644 e2sim/asn1c/INTEGER_uper.c create mode 100644 e2sim/asn1c/INTEGER_xer.c create mode 100644 e2sim/asn1c/IndexToRFSP.c create mode 100644 e2sim/asn1c/IndexToRFSP.h create mode 100644 e2sim/asn1c/InitiatingMessage.c create mode 100644 e2sim/asn1c/InitiatingMessage.h create mode 100644 e2sim/asn1c/Interface-MessageID.c create mode 100644 e2sim/asn1c/Interface-MessageID.h create mode 100644 e2sim/asn1c/InterfaceID-E1.c create mode 100644 e2sim/asn1c/InterfaceID-E1.h create mode 100644 e2sim/asn1c/InterfaceID-F1.c create mode 100644 e2sim/asn1c/InterfaceID-F1.h create mode 100644 e2sim/asn1c/InterfaceID-NG.c create mode 100644 e2sim/asn1c/InterfaceID-NG.h create mode 100644 e2sim/asn1c/InterfaceID-S1.c create mode 100644 e2sim/asn1c/InterfaceID-S1.h create mode 100644 e2sim/asn1c/InterfaceID-W1.c create mode 100644 e2sim/asn1c/InterfaceID-W1.h create mode 100644 e2sim/asn1c/InterfaceID-X2.c create mode 100644 e2sim/asn1c/InterfaceID-X2.h create mode 100644 e2sim/asn1c/InterfaceID-Xn.c create mode 100644 e2sim/asn1c/InterfaceID-Xn.h create mode 100644 e2sim/asn1c/InterfaceIdentifier.c create mode 100644 e2sim/asn1c/InterfaceIdentifier.h create mode 100644 e2sim/asn1c/InterfaceType.c create mode 100644 e2sim/asn1c/InterfaceType.h create mode 100644 e2sim/asn1c/LabelInfoItem.c create mode 100644 e2sim/asn1c/LabelInfoItem.h create mode 100644 e2sim/asn1c/LabelInfoList.c create mode 100644 e2sim/asn1c/LabelInfoList.h create mode 100644 e2sim/asn1c/LogicalOR.c create mode 100644 e2sim/asn1c/LogicalOR.h create mode 100644 e2sim/asn1c/MME-Code.c create mode 100644 e2sim/asn1c/MME-Code.h create mode 100644 e2sim/asn1c/MME-Group-ID.c create mode 100644 e2sim/asn1c/MME-Group-ID.h create mode 100644 e2sim/asn1c/MME-UE-S1AP-ID.c create mode 100644 e2sim/asn1c/MME-UE-S1AP-ID.h create mode 100644 e2sim/asn1c/MMEname.c create mode 100644 e2sim/asn1c/MMEname.h create mode 100644 e2sim/asn1c/Makefile.am.libasncodec create mode 100644 e2sim/asn1c/MatchingCondItem-Choice.c create mode 100644 e2sim/asn1c/MatchingCondItem-Choice.h create mode 100644 e2sim/asn1c/MatchingCondItem.c create mode 100644 e2sim/asn1c/MatchingCondItem.h create mode 100644 e2sim/asn1c/MatchingCondList.c create mode 100644 e2sim/asn1c/MatchingCondList.h create mode 100644 e2sim/asn1c/MatchingUEidItem-PerGP.c create mode 100644 e2sim/asn1c/MatchingUEidItem-PerGP.h create mode 100644 e2sim/asn1c/MatchingUEidItem.c create mode 100644 e2sim/asn1c/MatchingUEidItem.h create mode 100644 e2sim/asn1c/MatchingUEidList-PerGP.c create mode 100644 e2sim/asn1c/MatchingUEidList-PerGP.h create mode 100644 e2sim/asn1c/MatchingUEidList.c create mode 100644 e2sim/asn1c/MatchingUEidList.h create mode 100644 e2sim/asn1c/MatchingUEidPerGP-Item.c create mode 100644 e2sim/asn1c/MatchingUEidPerGP-Item.h create mode 100644 e2sim/asn1c/MatchingUEidPerGP.c create mode 100644 e2sim/asn1c/MatchingUEidPerGP.h create mode 100644 e2sim/asn1c/MatchingUEidPerSubItem.c create mode 100644 e2sim/asn1c/MatchingUEidPerSubItem.h create mode 100644 e2sim/asn1c/MatchingUEidPerSubList.c create mode 100644 e2sim/asn1c/MatchingUEidPerSubList.h create mode 100644 e2sim/asn1c/MatchingUeCondPerSubItem.c create mode 100644 e2sim/asn1c/MatchingUeCondPerSubItem.h create mode 100644 e2sim/asn1c/MatchingUeCondPerSubList.c create mode 100644 e2sim/asn1c/MatchingUeCondPerSubList.h create mode 100644 e2sim/asn1c/MeasurementCondItem.c create mode 100644 e2sim/asn1c/MeasurementCondItem.h create mode 100644 e2sim/asn1c/MeasurementCondList.c create mode 100644 e2sim/asn1c/MeasurementCondList.h create mode 100644 e2sim/asn1c/MeasurementCondUEidItem.c create mode 100644 e2sim/asn1c/MeasurementCondUEidItem.h create mode 100644 e2sim/asn1c/MeasurementCondUEidList.c create mode 100644 e2sim/asn1c/MeasurementCondUEidList.h create mode 100644 e2sim/asn1c/MeasurementData.c create mode 100644 e2sim/asn1c/MeasurementData.h create mode 100644 e2sim/asn1c/MeasurementDataItem.c create mode 100644 e2sim/asn1c/MeasurementDataItem.h create mode 100644 e2sim/asn1c/MeasurementInfo-Action-Item.c create mode 100644 e2sim/asn1c/MeasurementInfo-Action-Item.h create mode 100644 e2sim/asn1c/MeasurementInfo-Action-List.c create mode 100644 e2sim/asn1c/MeasurementInfo-Action-List.h create mode 100644 e2sim/asn1c/MeasurementInfoItem.c create mode 100644 e2sim/asn1c/MeasurementInfoItem.h create mode 100644 e2sim/asn1c/MeasurementInfoList.c create mode 100644 e2sim/asn1c/MeasurementInfoList.h create mode 100644 e2sim/asn1c/MeasurementLabel.c create mode 100644 e2sim/asn1c/MeasurementLabel.h create mode 100644 e2sim/asn1c/MeasurementRecord.c create mode 100644 e2sim/asn1c/MeasurementRecord.h create mode 100644 e2sim/asn1c/MeasurementRecordItem.c create mode 100644 e2sim/asn1c/MeasurementRecordItem.h create mode 100644 e2sim/asn1c/MeasurementType.c create mode 100644 e2sim/asn1c/MeasurementType.h create mode 100644 e2sim/asn1c/MeasurementTypeID.c create mode 100644 e2sim/asn1c/MeasurementTypeID.h create mode 100644 e2sim/asn1c/MeasurementTypeName.c create mode 100644 e2sim/asn1c/MeasurementTypeName.h create mode 100644 e2sim/asn1c/NG-RANnodeUEXnAPID.c create mode 100644 e2sim/asn1c/NG-RANnodeUEXnAPID.h create mode 100644 e2sim/asn1c/NGENB-CU-UE-W1AP-ID.c create mode 100644 e2sim/asn1c/NGENB-CU-UE-W1AP-ID.h create mode 100644 e2sim/asn1c/NR-ARFCN.c create mode 100644 e2sim/asn1c/NR-ARFCN.h create mode 100644 e2sim/asn1c/NR-CGI.c create mode 100644 e2sim/asn1c/NR-CGI.h create mode 100644 e2sim/asn1c/NR-PCI.c create mode 100644 e2sim/asn1c/NR-PCI.h create mode 100644 e2sim/asn1c/NRCellIdentity.c create mode 100644 e2sim/asn1c/NRCellIdentity.h create mode 100644 e2sim/asn1c/NRFrequencyBand-List.c create mode 100644 e2sim/asn1c/NRFrequencyBand-List.h create mode 100644 e2sim/asn1c/NRFrequencyBandItem.c create mode 100644 e2sim/asn1c/NRFrequencyBandItem.h create mode 100644 e2sim/asn1c/NRFrequencyInfo.c create mode 100644 e2sim/asn1c/NRFrequencyInfo.h create mode 100644 e2sim/asn1c/NRFrequencyShift7p5khz.c create mode 100644 e2sim/asn1c/NRFrequencyShift7p5khz.h create mode 100644 e2sim/asn1c/NULL.c create mode 100644 e2sim/asn1c/NULL.h create mode 100644 e2sim/asn1c/NULL_aper.c create mode 100644 e2sim/asn1c/NULL_ber.c create mode 100644 e2sim/asn1c/NULL_jer.c create mode 100644 e2sim/asn1c/NULL_print.c create mode 100644 e2sim/asn1c/NULL_rfill.c create mode 100644 e2sim/asn1c/NULL_uper.c create mode 100644 e2sim/asn1c/NULL_xer.c create mode 100644 e2sim/asn1c/NativeEnumerated.c create mode 100644 e2sim/asn1c/NativeEnumerated.h create mode 100644 e2sim/asn1c/NativeEnumerated_aper.c create mode 100644 e2sim/asn1c/NativeEnumerated_jer.c create mode 100644 e2sim/asn1c/NativeEnumerated_uper.c create mode 100644 e2sim/asn1c/NativeEnumerated_xer.c create mode 100644 e2sim/asn1c/NativeInteger.c create mode 100644 e2sim/asn1c/NativeInteger.h create mode 100644 e2sim/asn1c/NativeInteger_aper.c create mode 100644 e2sim/asn1c/NativeInteger_ber.c create mode 100644 e2sim/asn1c/NativeInteger_jer.c create mode 100644 e2sim/asn1c/NativeInteger_print.c create mode 100644 e2sim/asn1c/NativeInteger_rfill.c create mode 100644 e2sim/asn1c/NativeInteger_uper.c create mode 100644 e2sim/asn1c/NativeInteger_xer.c create mode 100644 e2sim/asn1c/NativeReal.c create mode 100644 e2sim/asn1c/NativeReal.h create mode 100644 e2sim/asn1c/NativeReal_aper.c create mode 100644 e2sim/asn1c/NativeReal_ber.c create mode 100644 e2sim/asn1c/NativeReal_jer.c create mode 100644 e2sim/asn1c/NativeReal_print.c create mode 100644 e2sim/asn1c/NativeReal_rfill.c create mode 100644 e2sim/asn1c/NativeReal_uper.c create mode 100644 e2sim/asn1c/NativeReal_xer.c create mode 100644 e2sim/asn1c/NgENB-ID.c create mode 100644 e2sim/asn1c/NgENB-ID.h create mode 100644 e2sim/asn1c/OBJECT_IDENTIFIER.c create mode 100644 e2sim/asn1c/OBJECT_IDENTIFIER.h create mode 100644 e2sim/asn1c/OBJECT_IDENTIFIER_jer.c create mode 100644 e2sim/asn1c/OBJECT_IDENTIFIER_print.c create mode 100644 e2sim/asn1c/OBJECT_IDENTIFIER_rfill.c create mode 100644 e2sim/asn1c/OBJECT_IDENTIFIER_xer.c create mode 100644 e2sim/asn1c/OCTET_STRING.c create mode 100644 e2sim/asn1c/OCTET_STRING.h create mode 100644 e2sim/asn1c/OCTET_STRING_aper.c create mode 100644 e2sim/asn1c/OCTET_STRING_ber.c create mode 100644 e2sim/asn1c/OCTET_STRING_jer.c create mode 100644 e2sim/asn1c/OCTET_STRING_print.c create mode 100644 e2sim/asn1c/OCTET_STRING_rfill.c create mode 100644 e2sim/asn1c/OCTET_STRING_uper.c create mode 100644 e2sim/asn1c/OCTET_STRING_xer.c create mode 100644 e2sim/asn1c/OPEN_TYPE.c create mode 100644 e2sim/asn1c/OPEN_TYPE.h create mode 100644 e2sim/asn1c/OPEN_TYPE_aper.c create mode 100644 e2sim/asn1c/OPEN_TYPE_ber.c create mode 100644 e2sim/asn1c/OPEN_TYPE_uper.c create mode 100644 e2sim/asn1c/OPEN_TYPE_xer.c create mode 100644 e2sim/asn1c/ObjectDescriptor.c create mode 100644 e2sim/asn1c/ObjectDescriptor.h create mode 100644 e2sim/asn1c/PLMN-Identity.c create mode 100644 e2sim/asn1c/PLMN-Identity.h create mode 100644 e2sim/asn1c/PLMNIdentity.c create mode 100644 e2sim/asn1c/PLMNIdentity.h create mode 100644 e2sim/asn1c/Presence.c create mode 100644 e2sim/asn1c/Presence.h create mode 100644 e2sim/asn1c/PrintableString.c create mode 100644 e2sim/asn1c/PrintableString.h create mode 100644 e2sim/asn1c/ProcedureCode.c create mode 100644 e2sim/asn1c/ProcedureCode.h create mode 100644 e2sim/asn1c/ProtocolIE-Container.c create mode 100644 e2sim/asn1c/ProtocolIE-Container.h create mode 100644 e2sim/asn1c/ProtocolIE-ContainerList.c create mode 100644 e2sim/asn1c/ProtocolIE-ContainerList.h create mode 100644 e2sim/asn1c/ProtocolIE-ContainerPair.c create mode 100644 e2sim/asn1c/ProtocolIE-ContainerPair.h create mode 100644 e2sim/asn1c/ProtocolIE-ContainerPairList.c create mode 100644 e2sim/asn1c/ProtocolIE-ContainerPairList.h create mode 100644 e2sim/asn1c/ProtocolIE-Field.c create mode 100644 e2sim/asn1c/ProtocolIE-Field.h create mode 100644 e2sim/asn1c/ProtocolIE-FieldPair.c create mode 100644 e2sim/asn1c/ProtocolIE-FieldPair.h create mode 100644 e2sim/asn1c/ProtocolIE-ID.c create mode 100644 e2sim/asn1c/ProtocolIE-ID.h create mode 100644 e2sim/asn1c/ProtocolIE-SingleContainer.c create mode 100644 e2sim/asn1c/ProtocolIE-SingleContainer.h create mode 100644 e2sim/asn1c/QCI.c create mode 100644 e2sim/asn1c/QCI.h create mode 100644 e2sim/asn1c/QoSID.c create mode 100644 e2sim/asn1c/QoSID.h create mode 100644 e2sim/asn1c/QosFlowIdentifier.c create mode 100644 e2sim/asn1c/QosFlowIdentifier.h create mode 100644 e2sim/asn1c/RANUEID.c create mode 100644 e2sim/asn1c/RANUEID.h create mode 100644 e2sim/asn1c/RANfunction-Item.c create mode 100644 e2sim/asn1c/RANfunction-Item.h create mode 100644 e2sim/asn1c/RANfunction-Name.c create mode 100644 e2sim/asn1c/RANfunction-Name.h create mode 100644 e2sim/asn1c/RANfunctionDefinition.c create mode 100644 e2sim/asn1c/RANfunctionDefinition.h create mode 100644 e2sim/asn1c/RANfunctionID-Item.c create mode 100644 e2sim/asn1c/RANfunctionID-Item.h create mode 100644 e2sim/asn1c/RANfunctionID.c create mode 100644 e2sim/asn1c/RANfunctionID.h create mode 100644 e2sim/asn1c/RANfunctionIDcause-Item.c create mode 100644 e2sim/asn1c/RANfunctionIDcause-Item.h create mode 100644 e2sim/asn1c/RANfunctionOID.c create mode 100644 e2sim/asn1c/RANfunctionOID.h create mode 100644 e2sim/asn1c/RANfunctionRevision.c create mode 100644 e2sim/asn1c/RANfunctionRevision.h create mode 100644 e2sim/asn1c/RANfunctions-List.c create mode 100644 e2sim/asn1c/RANfunctions-List.h create mode 100644 e2sim/asn1c/RANfunctionsID-List.c create mode 100644 e2sim/asn1c/RANfunctionsID-List.h create mode 100644 e2sim/asn1c/RANfunctionsIDcause-List.c create mode 100644 e2sim/asn1c/RANfunctionsIDcause-List.h create mode 100644 e2sim/asn1c/REAL.c create mode 100644 e2sim/asn1c/REAL.h create mode 100644 e2sim/asn1c/REAL_aper.c create mode 100644 e2sim/asn1c/REAL_jer.c create mode 100644 e2sim/asn1c/REAL_print.c create mode 100644 e2sim/asn1c/REAL_rfill.c create mode 100644 e2sim/asn1c/REAL_uper.c create mode 100644 e2sim/asn1c/REAL_xer.c create mode 100644 e2sim/asn1c/RIC-EventTriggerStyle-Item.c create mode 100644 e2sim/asn1c/RIC-EventTriggerStyle-Item.h create mode 100644 e2sim/asn1c/RIC-Format-Type.c create mode 100644 e2sim/asn1c/RIC-Format-Type.h create mode 100644 e2sim/asn1c/RIC-ReportStyle-Item.c create mode 100644 e2sim/asn1c/RIC-ReportStyle-Item.h create mode 100644 e2sim/asn1c/RIC-Style-Name.c create mode 100644 e2sim/asn1c/RIC-Style-Name.h create mode 100644 e2sim/asn1c/RIC-Style-Type.c create mode 100644 e2sim/asn1c/RIC-Style-Type.h create mode 100644 e2sim/asn1c/RICQueryFailure.c create mode 100644 e2sim/asn1c/RICQueryFailure.h create mode 100644 e2sim/asn1c/RICQueryRequest.c create mode 100644 e2sim/asn1c/RICQueryRequest.h create mode 100644 e2sim/asn1c/RICQueryResponse.c create mode 100644 e2sim/asn1c/RICQueryResponse.h create mode 100644 e2sim/asn1c/RICaction-AddedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-AddedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-Admitted-Item.c create mode 100644 e2sim/asn1c/RICaction-Admitted-Item.h create mode 100644 e2sim/asn1c/RICaction-Admitted-List.c create mode 100644 e2sim/asn1c/RICaction-Admitted-List.h create mode 100644 e2sim/asn1c/RICaction-ConfirmedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-ConfirmedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.c create mode 100644 e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.h create mode 100644 e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-ModifiedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-ModifiedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-NotAdmitted-Item.c create mode 100644 e2sim/asn1c/RICaction-NotAdmitted-Item.h create mode 100644 e2sim/asn1c/RICaction-NotAdmitted-List.c create mode 100644 e2sim/asn1c/RICaction-NotAdmitted-List.h create mode 100644 e2sim/asn1c/RICaction-RefusedToBeModified-Item.c create mode 100644 e2sim/asn1c/RICaction-RefusedToBeModified-Item.h create mode 100644 e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.c create mode 100644 e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.h create mode 100644 e2sim/asn1c/RICaction-RemovedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-RemovedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-RequiredToBeModified-Item.c create mode 100644 e2sim/asn1c/RICaction-RequiredToBeModified-Item.h create mode 100644 e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.c create mode 100644 e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.h create mode 100644 e2sim/asn1c/RICaction-ToBeAddedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-ToBeAddedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.c create mode 100644 e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.h create mode 100644 e2sim/asn1c/RICaction-ToBeSetup-Item.c create mode 100644 e2sim/asn1c/RICaction-ToBeSetup-Item.h create mode 100644 e2sim/asn1c/RICactionDefinition.c create mode 100644 e2sim/asn1c/RICactionDefinition.h create mode 100644 e2sim/asn1c/RICactionExecutionOrder.c create mode 100644 e2sim/asn1c/RICactionExecutionOrder.h create mode 100644 e2sim/asn1c/RICactionID.c create mode 100644 e2sim/asn1c/RICactionID.h create mode 100644 e2sim/asn1c/RICactionType.c create mode 100644 e2sim/asn1c/RICactionType.h create mode 100644 e2sim/asn1c/RICactions-AddedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-AddedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-ConfirmedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-ConfirmedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-ConfirmedForRemoval-List.c create mode 100644 e2sim/asn1c/RICactions-ConfirmedForRemoval-List.h create mode 100644 e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-ModifiedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-ModifiedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-RefusedToBeModified-List.c create mode 100644 e2sim/asn1c/RICactions-RefusedToBeModified-List.h create mode 100644 e2sim/asn1c/RICactions-RefusedToBeRemoved-List.c create mode 100644 e2sim/asn1c/RICactions-RefusedToBeRemoved-List.h create mode 100644 e2sim/asn1c/RICactions-RemovedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-RemovedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-RequiredToBeModified-List.c create mode 100644 e2sim/asn1c/RICactions-RequiredToBeModified-List.h create mode 100644 e2sim/asn1c/RICactions-RequiredToBeRemoved-List.c create mode 100644 e2sim/asn1c/RICactions-RequiredToBeRemoved-List.h create mode 100644 e2sim/asn1c/RICactions-ToBeAddedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-ToBeAddedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-ToBeModifiedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-ToBeModifiedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-ToBeRemovedForModification-List.c create mode 100644 e2sim/asn1c/RICactions-ToBeRemovedForModification-List.h create mode 100644 e2sim/asn1c/RICactions-ToBeSetup-List.c create mode 100644 e2sim/asn1c/RICactions-ToBeSetup-List.h create mode 100644 e2sim/asn1c/RICcallProcessID.c create mode 100644 e2sim/asn1c/RICcallProcessID.h create mode 100644 e2sim/asn1c/RICcontrolAckRequest.c create mode 100644 e2sim/asn1c/RICcontrolAckRequest.h create mode 100644 e2sim/asn1c/RICcontrolAcknowledge.c create mode 100644 e2sim/asn1c/RICcontrolAcknowledge.h create mode 100644 e2sim/asn1c/RICcontrolFailure.c create mode 100644 e2sim/asn1c/RICcontrolFailure.h create mode 100644 e2sim/asn1c/RICcontrolHeader.c create mode 100644 e2sim/asn1c/RICcontrolHeader.h create mode 100644 e2sim/asn1c/RICcontrolMessage.c create mode 100644 e2sim/asn1c/RICcontrolMessage.h create mode 100644 e2sim/asn1c/RICcontrolOutcome.c create mode 100644 e2sim/asn1c/RICcontrolOutcome.h create mode 100644 e2sim/asn1c/RICcontrolRequest.c create mode 100644 e2sim/asn1c/RICcontrolRequest.h create mode 100644 e2sim/asn1c/RICeventTriggerDefinition.c create mode 100644 e2sim/asn1c/RICeventTriggerDefinition.h create mode 100644 e2sim/asn1c/RICindication.c create mode 100644 e2sim/asn1c/RICindication.h create mode 100644 e2sim/asn1c/RICindicationHeader.c create mode 100644 e2sim/asn1c/RICindicationHeader.h create mode 100644 e2sim/asn1c/RICindicationMessage.c create mode 100644 e2sim/asn1c/RICindicationMessage.h create mode 100644 e2sim/asn1c/RICindicationSN.c create mode 100644 e2sim/asn1c/RICindicationSN.h create mode 100644 e2sim/asn1c/RICindicationType.c create mode 100644 e2sim/asn1c/RICindicationType.h create mode 100644 e2sim/asn1c/RICqueryDefinition.c create mode 100644 e2sim/asn1c/RICqueryDefinition.h create mode 100644 e2sim/asn1c/RICqueryHeader.c create mode 100644 e2sim/asn1c/RICqueryHeader.h create mode 100644 e2sim/asn1c/RICqueryOutcome.c create mode 100644 e2sim/asn1c/RICqueryOutcome.h create mode 100644 e2sim/asn1c/RICrequestID.c create mode 100644 e2sim/asn1c/RICrequestID.h create mode 100644 e2sim/asn1c/RICserviceQuery.c create mode 100644 e2sim/asn1c/RICserviceQuery.h create mode 100644 e2sim/asn1c/RICserviceUpdate.c create mode 100644 e2sim/asn1c/RICserviceUpdate.h create mode 100644 e2sim/asn1c/RICserviceUpdateAcknowledge.c create mode 100644 e2sim/asn1c/RICserviceUpdateAcknowledge.h create mode 100644 e2sim/asn1c/RICserviceUpdateFailure.c create mode 100644 e2sim/asn1c/RICserviceUpdateFailure.h create mode 100644 e2sim/asn1c/RICsubscription-List-withCause.c create mode 100644 e2sim/asn1c/RICsubscription-List-withCause.h create mode 100644 e2sim/asn1c/RICsubscription-withCause-Item.c create mode 100644 e2sim/asn1c/RICsubscription-withCause-Item.h create mode 100644 e2sim/asn1c/RICsubscriptionDeleteFailure.c create mode 100644 e2sim/asn1c/RICsubscriptionDeleteFailure.h create mode 100644 e2sim/asn1c/RICsubscriptionDeleteRequest.c create mode 100644 e2sim/asn1c/RICsubscriptionDeleteRequest.h create mode 100644 e2sim/asn1c/RICsubscriptionDeleteRequired.c create mode 100644 e2sim/asn1c/RICsubscriptionDeleteRequired.h create mode 100644 e2sim/asn1c/RICsubscriptionDeleteResponse.c create mode 100644 e2sim/asn1c/RICsubscriptionDeleteResponse.h create mode 100644 e2sim/asn1c/RICsubscriptionDetails.c create mode 100644 e2sim/asn1c/RICsubscriptionDetails.h create mode 100644 e2sim/asn1c/RICsubscriptionFailure.c create mode 100644 e2sim/asn1c/RICsubscriptionFailure.h create mode 100644 e2sim/asn1c/RICsubscriptionModificationConfirm.c create mode 100644 e2sim/asn1c/RICsubscriptionModificationConfirm.h create mode 100644 e2sim/asn1c/RICsubscriptionModificationFailure.c create mode 100644 e2sim/asn1c/RICsubscriptionModificationFailure.h create mode 100644 e2sim/asn1c/RICsubscriptionModificationRefuse.c create mode 100644 e2sim/asn1c/RICsubscriptionModificationRefuse.h create mode 100644 e2sim/asn1c/RICsubscriptionModificationRequest.c create mode 100644 e2sim/asn1c/RICsubscriptionModificationRequest.h create mode 100644 e2sim/asn1c/RICsubscriptionModificationRequired.c create mode 100644 e2sim/asn1c/RICsubscriptionModificationRequired.h create mode 100644 e2sim/asn1c/RICsubscriptionModificationResponse.c create mode 100644 e2sim/asn1c/RICsubscriptionModificationResponse.h create mode 100644 e2sim/asn1c/RICsubscriptionRequest.c create mode 100644 e2sim/asn1c/RICsubscriptionRequest.h create mode 100644 e2sim/asn1c/RICsubscriptionResponse.c create mode 100644 e2sim/asn1c/RICsubscriptionResponse.h create mode 100644 e2sim/asn1c/RICsubscriptionTime.c create mode 100644 e2sim/asn1c/RICsubscriptionTime.h create mode 100644 e2sim/asn1c/RICsubsequentAction.c create mode 100644 e2sim/asn1c/RICsubsequentAction.h create mode 100644 e2sim/asn1c/RICsubsequentActionType.c create mode 100644 e2sim/asn1c/RICsubsequentActionType.h create mode 100644 e2sim/asn1c/RICtimeToWait.c create mode 100644 e2sim/asn1c/RICtimeToWait.h create mode 100644 e2sim/asn1c/RRC-MessageID.c create mode 100644 e2sim/asn1c/RRC-MessageID.h create mode 100644 e2sim/asn1c/RRCclass-LTE.c create mode 100644 e2sim/asn1c/RRCclass-LTE.h create mode 100644 e2sim/asn1c/RRCclass-NR.c create mode 100644 e2sim/asn1c/RRCclass-NR.h create mode 100644 e2sim/asn1c/ResetRequest.c create mode 100644 e2sim/asn1c/ResetRequest.h create mode 100644 e2sim/asn1c/ResetResponse.c create mode 100644 e2sim/asn1c/ResetResponse.h create mode 100644 e2sim/asn1c/S-NSSAI.c create mode 100644 e2sim/asn1c/S-NSSAI.h create mode 100644 e2sim/asn1c/SD.c create mode 100644 e2sim/asn1c/SD.h create mode 100644 e2sim/asn1c/SST.c create mode 100644 e2sim/asn1c/SST.h create mode 100644 e2sim/asn1c/ServingCell-ARFCN.c create mode 100644 e2sim/asn1c/ServingCell-ARFCN.h create mode 100644 e2sim/asn1c/ServingCell-PCI.c create mode 100644 e2sim/asn1c/ServingCell-PCI.h create mode 100644 e2sim/asn1c/SubscriberProfileIDforRFP.c create mode 100644 e2sim/asn1c/SubscriberProfileIDforRFP.h create mode 100644 e2sim/asn1c/SuccessfulOutcome.c create mode 100644 e2sim/asn1c/SuccessfulOutcome.h create mode 100644 e2sim/asn1c/SupportedSULBandList.c create mode 100644 e2sim/asn1c/SupportedSULBandList.h create mode 100644 e2sim/asn1c/SupportedSULFreqBandItem.c create mode 100644 e2sim/asn1c/SupportedSULFreqBandItem.h create mode 100644 e2sim/asn1c/TNLinformation.c create mode 100644 e2sim/asn1c/TNLinformation.h create mode 100644 e2sim/asn1c/TNLusage.c create mode 100644 e2sim/asn1c/TNLusage.h create mode 100644 e2sim/asn1c/TestCond-Expression.c create mode 100644 e2sim/asn1c/TestCond-Expression.h create mode 100644 e2sim/asn1c/TestCond-Type.c create mode 100644 e2sim/asn1c/TestCond-Type.h create mode 100644 e2sim/asn1c/TestCond-Value.c create mode 100644 e2sim/asn1c/TestCond-Value.h create mode 100644 e2sim/asn1c/TestCondInfo.c create mode 100644 e2sim/asn1c/TestCondInfo.h create mode 100644 e2sim/asn1c/TimeStamp.c create mode 100644 e2sim/asn1c/TimeStamp.h create mode 100644 e2sim/asn1c/TimeToWait.c create mode 100644 e2sim/asn1c/TimeToWait.h create mode 100644 e2sim/asn1c/TransactionID.c create mode 100644 e2sim/asn1c/TransactionID.h create mode 100644 e2sim/asn1c/TriggeringMessage.c create mode 100644 e2sim/asn1c/TriggeringMessage.h create mode 100644 e2sim/asn1c/TypeOfError.c create mode 100644 e2sim/asn1c/TypeOfError.h create mode 100644 e2sim/asn1c/UEID-EN-GNB.c create mode 100644 e2sim/asn1c/UEID-EN-GNB.h create mode 100644 e2sim/asn1c/UEID-ENB.c create mode 100644 e2sim/asn1c/UEID-ENB.h create mode 100644 e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.c create mode 100644 e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.h create mode 100644 e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.c create mode 100644 e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.h create mode 100644 e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.c create mode 100644 e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.h create mode 100644 e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.c create mode 100644 e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.h create mode 100644 e2sim/asn1c/UEID-GNB-CU-UP.c create mode 100644 e2sim/asn1c/UEID-GNB-CU-UP.h create mode 100644 e2sim/asn1c/UEID-GNB-DU.c create mode 100644 e2sim/asn1c/UEID-GNB-DU.h create mode 100644 e2sim/asn1c/UEID-GNB.c create mode 100644 e2sim/asn1c/UEID-GNB.h create mode 100644 e2sim/asn1c/UEID-NG-ENB-DU.c create mode 100644 e2sim/asn1c/UEID-NG-ENB-DU.h create mode 100644 e2sim/asn1c/UEID-NG-ENB.c create mode 100644 e2sim/asn1c/UEID-NG-ENB.h create mode 100644 e2sim/asn1c/UEID.c create mode 100644 e2sim/asn1c/UEID.h create mode 100644 e2sim/asn1c/UEMeasurementReportItem.c create mode 100644 e2sim/asn1c/UEMeasurementReportItem.h create mode 100644 e2sim/asn1c/UEMeasurementReportList.c create mode 100644 e2sim/asn1c/UEMeasurementReportList.h create mode 100644 e2sim/asn1c/UnsuccessfulOutcome.c create mode 100644 e2sim/asn1c/UnsuccessfulOutcome.h create mode 100644 e2sim/asn1c/aper_decoder.c create mode 100644 e2sim/asn1c/aper_decoder.h create mode 100644 e2sim/asn1c/aper_encoder.c create mode 100644 e2sim/asn1c/aper_encoder.h create mode 100644 e2sim/asn1c/aper_opentype.c create mode 100644 e2sim/asn1c/aper_opentype.h create mode 100644 e2sim/asn1c/aper_support.c create mode 100644 e2sim/asn1c/aper_support.h create mode 100755 e2sim/asn1c/asn/v03/e2ap-common-v03.01.asn create mode 100755 e2sim/asn1c/asn/v03/e2ap-constant-v03.01.asn create mode 100755 e2sim/asn1c/asn/v03/e2ap-container-v03.01.asn create mode 100755 e2sim/asn1c/asn/v03/e2ap-epd-v03.01.asn create mode 100755 e2sim/asn1c/asn/v03/e2ap-ied-v03.01.asn create mode 100755 e2sim/asn1c/asn/v03/e2ap-pdu-v03.01.asn create mode 100755 e2sim/asn1c/asn/v03/e2sm-kpm-v03.00.asn create mode 100755 e2sim/asn1c/asn/v03/e2sm-v03.01.asn rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/asn_SEQUENCE_OF.c (100%) rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/asn_SEQUENCE_OF.h (100%) rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/asn_SET_OF.c (100%) rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/asn_SET_OF.h (100%) create mode 100644 e2sim/asn1c/asn_application.c create mode 100644 e2sim/asn1c/asn_application.h rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/asn_bit_data.c (100%) create mode 100644 e2sim/asn1c/asn_bit_data.h rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/asn_codecs.h (100%) create mode 100644 e2sim/asn1c/asn_codecs_prim.c create mode 100644 e2sim/asn1c/asn_codecs_prim.h create mode 100644 e2sim/asn1c/asn_codecs_prim_ber.c create mode 100644 e2sim/asn1c/asn_codecs_prim_xer.c create mode 100644 e2sim/asn1c/asn_config.h create mode 100644 e2sim/asn1c/asn_constant.h create mode 100644 e2sim/asn1c/asn_internal.c create mode 100644 e2sim/asn1c/asn_internal.h rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/asn_ioc.h (100%) create mode 100644 e2sim/asn1c/asn_random_fill.c rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/asn_random_fill.h (100%) create mode 100644 e2sim/asn1c/asn_system.h rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/ber_decoder.c (100%) rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/ber_decoder.h (100%) rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/ber_tlv_length.c (100%) rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/ber_tlv_length.h (100%) create mode 100644 e2sim/asn1c/ber_tlv_tag.c rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/ber_tlv_tag.h (100%) create mode 100644 e2sim/asn1c/constr_CHOICE.c create mode 100644 e2sim/asn1c/constr_CHOICE.h create mode 100644 e2sim/asn1c/constr_CHOICE_aper.c create mode 100644 e2sim/asn1c/constr_CHOICE_ber.c create mode 100644 e2sim/asn1c/constr_CHOICE_jer.c create mode 100644 e2sim/asn1c/constr_CHOICE_print.c create mode 100644 e2sim/asn1c/constr_CHOICE_rfill.c create mode 100644 e2sim/asn1c/constr_CHOICE_uper.c create mode 100644 e2sim/asn1c/constr_CHOICE_xer.c create mode 100644 e2sim/asn1c/constr_SEQUENCE.c create mode 100644 e2sim/asn1c/constr_SEQUENCE.h create mode 100644 e2sim/asn1c/constr_SEQUENCE_OF.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_OF.h create mode 100644 e2sim/asn1c/constr_SEQUENCE_OF_aper.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_OF_ber.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_OF_jer.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_OF_uper.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_OF_xer.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_aper.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_ber.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_jer.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_print.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_rfill.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_uper.c create mode 100644 e2sim/asn1c/constr_SEQUENCE_xer.c create mode 100644 e2sim/asn1c/constr_SET_OF.c create mode 100644 e2sim/asn1c/constr_SET_OF.h create mode 100644 e2sim/asn1c/constr_SET_OF_aper.c create mode 100644 e2sim/asn1c/constr_SET_OF_ber.c create mode 100644 e2sim/asn1c/constr_SET_OF_jer.c create mode 100644 e2sim/asn1c/constr_SET_OF_print.c create mode 100644 e2sim/asn1c/constr_SET_OF_rfill.c create mode 100644 e2sim/asn1c/constr_SET_OF_uper.c create mode 100644 e2sim/asn1c/constr_SET_OF_xer.c create mode 100644 e2sim/asn1c/constr_TYPE.c create mode 100644 e2sim/asn1c/constr_TYPE.h create mode 100644 e2sim/asn1c/constraints.c create mode 100644 e2sim/asn1c/constraints.h rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/der_encoder.c (100%) rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/der_encoder.h (100%) create mode 100644 e2sim/asn1c/jer_encoder.c create mode 100644 e2sim/asn1c/jer_encoder.h create mode 100644 e2sim/asn1c/per_decoder.c create mode 100644 e2sim/asn1c/per_decoder.h create mode 100644 e2sim/asn1c/per_encoder.c create mode 100644 e2sim/asn1c/per_encoder.h create mode 100644 e2sim/asn1c/per_opentype.c create mode 100644 e2sim/asn1c/per_opentype.h create mode 100644 e2sim/asn1c/per_support.c create mode 100644 e2sim/asn1c/per_support.h create mode 100644 e2sim/asn1c/uper_decoder.c create mode 100644 e2sim/asn1c/uper_decoder.h create mode 100644 e2sim/asn1c/uper_encoder.c create mode 100644 e2sim/asn1c/uper_encoder.h create mode 100644 e2sim/asn1c/uper_opentype.c create mode 100644 e2sim/asn1c/uper_opentype.h create mode 100644 e2sim/asn1c/uper_support.c create mode 100644 e2sim/asn1c/uper_support.h create mode 100644 e2sim/asn1c/xer_decoder.c rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/xer_decoder.h (100%) rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/xer_encoder.c (100%) create mode 100644 e2sim/asn1c/xer_encoder.h rename e2sim/{e2sm_examples/kpm_e2sm/ASN1c => asn1c}/xer_support.c (100%) create mode 100644 e2sim/asn1c/xer_support.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CUUPMeasurement-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CUUPMeasurement-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CellResourceReportListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CellResourceReportListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-CellResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-CellResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-UeResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-UeResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader-Format1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader-Format1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage-Format1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage-Format1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-RANfunction-Description.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-RANfunction-Description.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-DU-PM-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-DU-PM-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-DU-PM-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-DU-PM-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/InitiatingMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/InitiatingMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Makefile.am.asn1convert delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Makefile.am.libasncodec delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUCP-PF-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUCP-PF-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUUP-PF-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUUP-PF-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ODU-PF-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ODU-PF-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-ContainerListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-ContainerListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PM-Containers-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PM-Containers-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItemFormat.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItemFormat.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PrintableString.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/PrintableString.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerList.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerList.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Field.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Field.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-FieldPair.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-FieldPair.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANcallProcess-ID-string.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANcallProcess-ID-string.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionIDcause-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionIDcause-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionRevision.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionRevision.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctions-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctions-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsID-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsID-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsIDcause-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsIDcause-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-ReportStyle-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-ReportStyle-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcallProcessID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcallProcessID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAckRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAckRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAcknowledge.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAcknowledge.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolHeader.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolHeader.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolOutcome.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolOutcome.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolStatus.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolStatus.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICeventTriggerDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICeventTriggerDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationHeader.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationHeader.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationType.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationType.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdate.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdate.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDetails.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDetails.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionResponse.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionResponse.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentAction.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentAction.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentActionType.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentActionType.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/SliceToReportListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/SliceToReportListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/SuccessfulOutcome.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/SuccessfulOutcome.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/TriggeringMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/TriggeringMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/UnsuccessfulOutcome.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/UnsuccessfulOutcome.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_application.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_application.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_bit_data.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_constant.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_random_fill.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_system.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_tag.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_OF.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_OF.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/converter-example.mk delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/pdu_collection.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_decoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_encoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_support.h mode change 100644 => 100755 e2sim/e2sm_examples/kpm_e2sm/CMakeLists.txt delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/Dockerfile mode change 100644 => 100755 e2sim/e2sm_examples/kpm_e2sm/e2sim-dev_1.0.0_amd64.deb mode change 100644 => 100755 e2sim/e2sm_examples/kpm_e2sm/e2sim_1.0.0_amd64.deb delete mode 160000 e2sim/e2sm_examples/kpm_e2sm/nlohmann_json_release delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/AMFName.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/AMFName.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CMakeLists.txt delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseProtocol.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseProtocol.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICrequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICrequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICservice.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICservice.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseTransport.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseTransport.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CellResourceReportListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CellResourceReportListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-CellResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-CellResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-UeResourceReportItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-UeResourceReportItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader-Format1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader-Format1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage-Format1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage-Format1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-RANfunction-Description.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-RANfunction-Description.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateAcknowledge.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateAcknowledge.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfiguration.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfiguration.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigurationAck.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigurationAck.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceE1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceE1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceF1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceF1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceNG.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceNG.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceS1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceS1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceType.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceType.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceW1.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceW1.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceX2.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceX2.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceXn.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceXn.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupResponse.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupResponse.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID-Choice.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID-Choice.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ErrorIndication.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ErrorIndication.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-ID-Choice.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-ID-Choice.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalENB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalENB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalRIC-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalRIC-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalenGNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalenGNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalgNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalgNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalngeNB-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalngeNB-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/InitiatingMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/InitiatingMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Makefile.am.asn1convert delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCellIdentity.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCellIdentity.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUCP-PF-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUCP-PF-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUUP-PF-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUUP-PF-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ODU-PF-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ODU-PF-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-ContainerListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-ContainerListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PLMN-Identity.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PLMN-Identity.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PM-Containers-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PM-Containers-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItemFormat.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItemFormat.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PrintableString.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PrintableString.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProcedureCode.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProcedureCode.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPairList.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPairList.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Field.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Field.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-SingleContainer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-SingleContainer.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RAN-Container.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RAN-Container.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionOID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionOID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionRevision.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionRevision.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctions-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctions-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsID-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsID-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-EventTriggerStyle-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-EventTriggerStyle-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Format-Type.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Format-Type.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Name.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Name.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Type.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Type.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionType.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionType.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcallProcessID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcallProcessID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAckRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAckRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolHeader.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolHeader.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolOutcome.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolOutcome.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindication.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindication.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationHeader.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationHeader.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationSN.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationSN.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationType.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationType.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICrequestID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICrequestID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceQuery.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceQuery.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdate.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdate.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateAcknowledge.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateAcknowledge.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-List-withCause.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-List-withCause.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-withCause-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-withCause-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequired.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequired.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteResponse.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteResponse.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDetails.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDetails.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionFailure.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionFailure.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionResponse.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionResponse.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentAction.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentAction.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentActionType.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentActionType.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICtimeToWait.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICtimeToWait.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RT-Period-IE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RT-Period-IE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetRequest.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetRequest.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetResponse.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetResponse.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SlicePerPlmnPerCellListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SlicePerPlmnPerCellListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SliceToReportListItem.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SliceToReportListItem.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SuccessfulOutcome.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SuccessfulOutcome.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLinformation.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLinformation.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TransactionID.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TransactionID.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TriggeringMessage.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TriggeringMessage.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UE-Report-Type.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UE-Report-Type.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_application.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_application.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_bit_data.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_bit_data.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs_prim.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs_prim.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_constant.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_internal.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_internal.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_ioc.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_random_fill.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_random_fill.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_system.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_length.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_length.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF_oer.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constraints.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constraints.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/converter-example.mk delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/pdu_collection.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_opentype.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_opentype.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_support.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_support.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.h delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.c delete mode 100644 e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.h mode change 100644 => 100755 e2sim/e2sm_examples/kpm_e2sm/src/kpm/CMakeLists.txt mode change 100644 => 100755 e2sim/e2sm_examples/kpm_e2sm/src/kpm/kpm_callbacks.hpp mode change 100644 => 100755 e2sim/e2sm_examples/kpm_e2sm/src/kpm/viavi_connector.hpp delete mode 100644 e2sim/src/ASN1c/AMFName.c delete mode 100644 e2sim/src/ASN1c/AMFName.h delete mode 100644 e2sim/src/ASN1c/ANY.c delete mode 100644 e2sim/src/ASN1c/ANY.h delete mode 100644 e2sim/src/ASN1c/BIT_STRING.c delete mode 100644 e2sim/src/ASN1c/BIT_STRING.h delete mode 100644 e2sim/src/ASN1c/Cause.c delete mode 100644 e2sim/src/ASN1c/Cause.h delete mode 100644 e2sim/src/ASN1c/CauseE2node.c delete mode 100644 e2sim/src/ASN1c/CauseE2node.h delete mode 100644 e2sim/src/ASN1c/CauseMisc.c delete mode 100644 e2sim/src/ASN1c/CauseMisc.h delete mode 100644 e2sim/src/ASN1c/CauseProtocol.c delete mode 100644 e2sim/src/ASN1c/CauseProtocol.h delete mode 100644 e2sim/src/ASN1c/CauseRICrequest.c delete mode 100644 e2sim/src/ASN1c/CauseRICrequest.h delete mode 100644 e2sim/src/ASN1c/CauseRICservice.c delete mode 100644 e2sim/src/ASN1c/CauseRICservice.h delete mode 100644 e2sim/src/ASN1c/CauseTransport.c delete mode 100644 e2sim/src/ASN1c/CauseTransport.h delete mode 100644 e2sim/src/ASN1c/Criticality.c delete mode 100644 e2sim/src/ASN1c/Criticality.h delete mode 100644 e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.c delete mode 100644 e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.h delete mode 100644 e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.c delete mode 100644 e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.h delete mode 100644 e2sim/src/ASN1c/CriticalityDiagnostics.c delete mode 100644 e2sim/src/ASN1c/CriticalityDiagnostics.h delete mode 100644 e2sim/src/ASN1c/E2AP-PDU.c delete mode 100644 e2sim/src/ASN1c/E2AP-PDU.h delete mode 100644 e2sim/src/ASN1c/E2connectionSetupFailed-Item.c delete mode 100644 e2sim/src/ASN1c/E2connectionSetupFailed-Item.h delete mode 100644 e2sim/src/ASN1c/E2connectionSetupFailed-List.c delete mode 100644 e2sim/src/ASN1c/E2connectionSetupFailed-List.h delete mode 100644 e2sim/src/ASN1c/E2connectionUpdate-Item.c delete mode 100644 e2sim/src/ASN1c/E2connectionUpdate-Item.h delete mode 100644 e2sim/src/ASN1c/E2connectionUpdate-List.c delete mode 100644 e2sim/src/ASN1c/E2connectionUpdate-List.h delete mode 100644 e2sim/src/ASN1c/E2connectionUpdate.c delete mode 100644 e2sim/src/ASN1c/E2connectionUpdate.h delete mode 100644 e2sim/src/ASN1c/E2connectionUpdateAcknowledge.c delete mode 100644 e2sim/src/ASN1c/E2connectionUpdateAcknowledge.h delete mode 100644 e2sim/src/ASN1c/E2connectionUpdateFailure.c delete mode 100644 e2sim/src/ASN1c/E2connectionUpdateFailure.h delete mode 100644 e2sim/src/ASN1c/E2connectionUpdateRemove-Item.c delete mode 100644 e2sim/src/ASN1c/E2connectionUpdateRemove-Item.h delete mode 100644 e2sim/src/ASN1c/E2connectionUpdateRemove-List.c delete mode 100644 e2sim/src/ASN1c/E2connectionUpdateRemove-List.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigAddition-Item.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigAddition-Item.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigAddition-List.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigAddition-List.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-List.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-List.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigRemoval-Item.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigRemoval-Item.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigRemoval-List.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigRemoval-List.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-List.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-List.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-List.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-List.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfiguration.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfiguration.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigurationAck.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentConfigurationAck.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentID.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentID.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceE1.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceE1.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceF1.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceF1.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceNG.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceNG.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceS1.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceS1.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceType.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceType.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceW1.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceW1.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceX2.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceX2.h delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceXn.c delete mode 100644 e2sim/src/ASN1c/E2nodeComponentInterfaceXn.h delete mode 100644 e2sim/src/ASN1c/E2nodeConfigurationUpdate.c delete mode 100644 e2sim/src/ASN1c/E2nodeConfigurationUpdate.h delete mode 100644 e2sim/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.c delete mode 100644 e2sim/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.h delete mode 100644 e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.c delete mode 100644 e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.h delete mode 100644 e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.c delete mode 100644 e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.h delete mode 100644 e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.c delete mode 100644 e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.h delete mode 100644 e2sim/src/ASN1c/E2setupFailure.c delete mode 100644 e2sim/src/ASN1c/E2setupFailure.h delete mode 100644 e2sim/src/ASN1c/E2setupRequest.c delete mode 100644 e2sim/src/ASN1c/E2setupRequest.h delete mode 100644 e2sim/src/ASN1c/E2setupResponse.c delete mode 100644 e2sim/src/ASN1c/E2setupResponse.h delete mode 100644 e2sim/src/ASN1c/ENB-ID-Choice.c delete mode 100644 e2sim/src/ASN1c/ENB-ID-Choice.h delete mode 100644 e2sim/src/ASN1c/ENB-ID.c delete mode 100644 e2sim/src/ASN1c/ENB-ID.h delete mode 100644 e2sim/src/ASN1c/ENGNB-ID.c delete mode 100644 e2sim/src/ASN1c/ENGNB-ID.h delete mode 100644 e2sim/src/ASN1c/ErrorIndication.c delete mode 100644 e2sim/src/ASN1c/ErrorIndication.h delete mode 100644 e2sim/src/ASN1c/GNB-CU-UP-ID.c delete mode 100644 e2sim/src/ASN1c/GNB-CU-UP-ID.h delete mode 100644 e2sim/src/ASN1c/GNB-DU-ID.c delete mode 100644 e2sim/src/ASN1c/GNB-DU-ID.h delete mode 100644 e2sim/src/ASN1c/GNB-ID-Choice.c delete mode 100644 e2sim/src/ASN1c/GNB-ID-Choice.h delete mode 100644 e2sim/src/ASN1c/GlobalE2node-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalE2node-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalE2node-eNB-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalE2node-eNB-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalE2node-gNB-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalE2node-gNB-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalENB-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalENB-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalNG-RANNode-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalNG-RANNode-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalRIC-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalRIC-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalenGNB-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalenGNB-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalgNB-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalgNB-ID.h delete mode 100644 e2sim/src/ASN1c/GlobalngeNB-ID.c delete mode 100644 e2sim/src/ASN1c/GlobalngeNB-ID.h delete mode 100644 e2sim/src/ASN1c/INTEGER.c delete mode 100644 e2sim/src/ASN1c/INTEGER.h delete mode 100644 e2sim/src/ASN1c/InitiatingMessage.c delete mode 100644 e2sim/src/ASN1c/InitiatingMessage.h delete mode 100644 e2sim/src/ASN1c/MMEname.c delete mode 100644 e2sim/src/ASN1c/MMEname.h delete mode 100644 e2sim/src/ASN1c/Makefile.am.libasncodec delete mode 100644 e2sim/src/ASN1c/NGENB-DU-ID.c delete mode 100644 e2sim/src/ASN1c/NGENB-DU-ID.h delete mode 100644 e2sim/src/ASN1c/NativeEnumerated.c delete mode 100644 e2sim/src/ASN1c/NativeEnumerated.h delete mode 100644 e2sim/src/ASN1c/NativeInteger.c delete mode 100644 e2sim/src/ASN1c/NativeInteger.h delete mode 100644 e2sim/src/ASN1c/OCTET_STRING.c delete mode 100644 e2sim/src/ASN1c/OCTET_STRING.h delete mode 100644 e2sim/src/ASN1c/OPEN_TYPE.c delete mode 100644 e2sim/src/ASN1c/OPEN_TYPE.h delete mode 100644 e2sim/src/ASN1c/PLMN-Identity.c delete mode 100644 e2sim/src/ASN1c/PLMN-Identity.h delete mode 100644 e2sim/src/ASN1c/Presence.c delete mode 100644 e2sim/src/ASN1c/Presence.h delete mode 100644 e2sim/src/ASN1c/PrintableString.c delete mode 100644 e2sim/src/ASN1c/PrintableString.h delete mode 100644 e2sim/src/ASN1c/ProcedureCode.c delete mode 100644 e2sim/src/ASN1c/ProcedureCode.h delete mode 100644 e2sim/src/ASN1c/ProtocolIE-Container.c delete mode 100644 e2sim/src/ASN1c/ProtocolIE-Container.h delete mode 100644 e2sim/src/ASN1c/ProtocolIE-ContainerList.c delete mode 100644 e2sim/src/ASN1c/ProtocolIE-ContainerList.h delete mode 100644 e2sim/src/ASN1c/ProtocolIE-ContainerPair.c delete mode 100644 e2sim/src/ASN1c/ProtocolIE-ContainerPair.h delete mode 100644 e2sim/src/ASN1c/ProtocolIE-ContainerPairList.c delete mode 100644 e2sim/src/ASN1c/ProtocolIE-ContainerPairList.h delete mode 100644 e2sim/src/ASN1c/ProtocolIE-Field.c delete mode 100644 e2sim/src/ASN1c/ProtocolIE-Field.h delete mode 100644 e2sim/src/ASN1c/ProtocolIE-FieldPair.c delete mode 100644 e2sim/src/ASN1c/ProtocolIE-FieldPair.h delete mode 100644 e2sim/src/ASN1c/ProtocolIE-ID.c delete mode 100644 e2sim/src/ASN1c/ProtocolIE-ID.h delete mode 100644 e2sim/src/ASN1c/ProtocolIE-SingleContainer.c delete mode 100644 e2sim/src/ASN1c/ProtocolIE-SingleContainer.h delete mode 100644 e2sim/src/ASN1c/RANfunction-Item.c delete mode 100644 e2sim/src/ASN1c/RANfunction-Item.h delete mode 100644 e2sim/src/ASN1c/RANfunctionDefinition.c delete mode 100644 e2sim/src/ASN1c/RANfunctionDefinition.h delete mode 100644 e2sim/src/ASN1c/RANfunctionID-Item.c delete mode 100644 e2sim/src/ASN1c/RANfunctionID-Item.h delete mode 100644 e2sim/src/ASN1c/RANfunctionID.c delete mode 100644 e2sim/src/ASN1c/RANfunctionID.h delete mode 100644 e2sim/src/ASN1c/RANfunctionIDcause-Item.c delete mode 100644 e2sim/src/ASN1c/RANfunctionIDcause-Item.h delete mode 100644 e2sim/src/ASN1c/RANfunctionOID.c delete mode 100644 e2sim/src/ASN1c/RANfunctionOID.h delete mode 100644 e2sim/src/ASN1c/RANfunctionRevision.c delete mode 100644 e2sim/src/ASN1c/RANfunctionRevision.h delete mode 100644 e2sim/src/ASN1c/RANfunctions-List.c delete mode 100644 e2sim/src/ASN1c/RANfunctions-List.h delete mode 100644 e2sim/src/ASN1c/RANfunctionsID-List.c delete mode 100644 e2sim/src/ASN1c/RANfunctionsID-List.h delete mode 100644 e2sim/src/ASN1c/RANfunctionsIDcause-List.c delete mode 100644 e2sim/src/ASN1c/RANfunctionsIDcause-List.h delete mode 100644 e2sim/src/ASN1c/RICaction-Admitted-Item.c delete mode 100644 e2sim/src/ASN1c/RICaction-Admitted-Item.h delete mode 100644 e2sim/src/ASN1c/RICaction-Admitted-List.c delete mode 100644 e2sim/src/ASN1c/RICaction-Admitted-List.h delete mode 100644 e2sim/src/ASN1c/RICaction-NotAdmitted-Item.c delete mode 100644 e2sim/src/ASN1c/RICaction-NotAdmitted-Item.h delete mode 100644 e2sim/src/ASN1c/RICaction-NotAdmitted-List.c delete mode 100644 e2sim/src/ASN1c/RICaction-NotAdmitted-List.h delete mode 100644 e2sim/src/ASN1c/RICaction-ToBeSetup-Item.c delete mode 100644 e2sim/src/ASN1c/RICaction-ToBeSetup-Item.h delete mode 100644 e2sim/src/ASN1c/RICactionDefinition.c delete mode 100644 e2sim/src/ASN1c/RICactionDefinition.h delete mode 100644 e2sim/src/ASN1c/RICactionID.c delete mode 100644 e2sim/src/ASN1c/RICactionID.h delete mode 100644 e2sim/src/ASN1c/RICactionType.c delete mode 100644 e2sim/src/ASN1c/RICactionType.h delete mode 100644 e2sim/src/ASN1c/RICactions-ToBeSetup-List.c delete mode 100644 e2sim/src/ASN1c/RICactions-ToBeSetup-List.h delete mode 100644 e2sim/src/ASN1c/RICcallProcessID.c delete mode 100644 e2sim/src/ASN1c/RICcallProcessID.h delete mode 100644 e2sim/src/ASN1c/RICcontrolAckRequest.c delete mode 100644 e2sim/src/ASN1c/RICcontrolAckRequest.h delete mode 100644 e2sim/src/ASN1c/RICcontrolAcknowledge.c delete mode 100644 e2sim/src/ASN1c/RICcontrolAcknowledge.h delete mode 100644 e2sim/src/ASN1c/RICcontrolFailure.c delete mode 100644 e2sim/src/ASN1c/RICcontrolFailure.h delete mode 100644 e2sim/src/ASN1c/RICcontrolHeader.c delete mode 100644 e2sim/src/ASN1c/RICcontrolHeader.h delete mode 100644 e2sim/src/ASN1c/RICcontrolMessage.c delete mode 100644 e2sim/src/ASN1c/RICcontrolMessage.h delete mode 100644 e2sim/src/ASN1c/RICcontrolOutcome.c delete mode 100644 e2sim/src/ASN1c/RICcontrolOutcome.h delete mode 100644 e2sim/src/ASN1c/RICcontrolRequest.c delete mode 100644 e2sim/src/ASN1c/RICcontrolRequest.h delete mode 100644 e2sim/src/ASN1c/RICeventTriggerDefinition.c delete mode 100644 e2sim/src/ASN1c/RICeventTriggerDefinition.h delete mode 100644 e2sim/src/ASN1c/RICindication.c delete mode 100644 e2sim/src/ASN1c/RICindication.h delete mode 100644 e2sim/src/ASN1c/RICindicationHeader.c delete mode 100644 e2sim/src/ASN1c/RICindicationHeader.h delete mode 100644 e2sim/src/ASN1c/RICindicationMessage.c delete mode 100644 e2sim/src/ASN1c/RICindicationMessage.h delete mode 100644 e2sim/src/ASN1c/RICindicationSN.c delete mode 100644 e2sim/src/ASN1c/RICindicationSN.h delete mode 100644 e2sim/src/ASN1c/RICindicationType.c delete mode 100644 e2sim/src/ASN1c/RICindicationType.h delete mode 100644 e2sim/src/ASN1c/RICrequestID.c delete mode 100644 e2sim/src/ASN1c/RICrequestID.h delete mode 100644 e2sim/src/ASN1c/RICserviceQuery.c delete mode 100644 e2sim/src/ASN1c/RICserviceQuery.h delete mode 100644 e2sim/src/ASN1c/RICserviceUpdate.c delete mode 100644 e2sim/src/ASN1c/RICserviceUpdate.h delete mode 100644 e2sim/src/ASN1c/RICserviceUpdateAcknowledge.c delete mode 100644 e2sim/src/ASN1c/RICserviceUpdateAcknowledge.h delete mode 100644 e2sim/src/ASN1c/RICserviceUpdateFailure.c delete mode 100644 e2sim/src/ASN1c/RICserviceUpdateFailure.h delete mode 100644 e2sim/src/ASN1c/RICsubscription-List-withCause.c delete mode 100644 e2sim/src/ASN1c/RICsubscription-List-withCause.h delete mode 100644 e2sim/src/ASN1c/RICsubscription-withCause-Item.c delete mode 100644 e2sim/src/ASN1c/RICsubscription-withCause-Item.h delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDeleteFailure.c delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDeleteFailure.h delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDeleteRequest.c delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDeleteRequest.h delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDeleteRequired.c delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDeleteRequired.h delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDeleteResponse.c delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDeleteResponse.h delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDetails.c delete mode 100644 e2sim/src/ASN1c/RICsubscriptionDetails.h delete mode 100644 e2sim/src/ASN1c/RICsubscriptionFailure.c delete mode 100644 e2sim/src/ASN1c/RICsubscriptionFailure.h delete mode 100644 e2sim/src/ASN1c/RICsubscriptionRequest.c delete mode 100644 e2sim/src/ASN1c/RICsubscriptionRequest.h delete mode 100644 e2sim/src/ASN1c/RICsubscriptionResponse.c delete mode 100644 e2sim/src/ASN1c/RICsubscriptionResponse.h delete mode 100644 e2sim/src/ASN1c/RICsubsequentAction.c delete mode 100644 e2sim/src/ASN1c/RICsubsequentAction.h delete mode 100644 e2sim/src/ASN1c/RICsubsequentActionType.c delete mode 100644 e2sim/src/ASN1c/RICsubsequentActionType.h delete mode 100644 e2sim/src/ASN1c/RICtimeToWait.c delete mode 100644 e2sim/src/ASN1c/RICtimeToWait.h delete mode 100644 e2sim/src/ASN1c/ResetRequest.c delete mode 100644 e2sim/src/ASN1c/ResetRequest.h delete mode 100644 e2sim/src/ASN1c/ResetResponse.c delete mode 100644 e2sim/src/ASN1c/ResetResponse.h delete mode 100644 e2sim/src/ASN1c/SuccessfulOutcome.c delete mode 100644 e2sim/src/ASN1c/SuccessfulOutcome.h delete mode 100644 e2sim/src/ASN1c/TNLinformation.c delete mode 100644 e2sim/src/ASN1c/TNLinformation.h delete mode 100644 e2sim/src/ASN1c/TNLusage.c delete mode 100644 e2sim/src/ASN1c/TNLusage.h delete mode 100644 e2sim/src/ASN1c/TimeToWait.c delete mode 100644 e2sim/src/ASN1c/TimeToWait.h delete mode 100644 e2sim/src/ASN1c/TransactionID.c delete mode 100644 e2sim/src/ASN1c/TransactionID.h delete mode 100644 e2sim/src/ASN1c/TriggeringMessage.c delete mode 100644 e2sim/src/ASN1c/TriggeringMessage.h delete mode 100644 e2sim/src/ASN1c/TypeOfError.c delete mode 100644 e2sim/src/ASN1c/TypeOfError.h delete mode 100644 e2sim/src/ASN1c/UnsuccessfulOutcome.c delete mode 100644 e2sim/src/ASN1c/UnsuccessfulOutcome.h delete mode 100644 e2sim/src/ASN1c/asn_SEQUENCE_OF.c delete mode 100644 e2sim/src/ASN1c/asn_SEQUENCE_OF.h delete mode 100644 e2sim/src/ASN1c/asn_SET_OF.c delete mode 100644 e2sim/src/ASN1c/asn_SET_OF.h delete mode 100644 e2sim/src/ASN1c/asn_application.c delete mode 100644 e2sim/src/ASN1c/asn_application.h delete mode 100644 e2sim/src/ASN1c/asn_bit_data.c delete mode 100644 e2sim/src/ASN1c/asn_bit_data.h delete mode 100644 e2sim/src/ASN1c/asn_codecs.h delete mode 100644 e2sim/src/ASN1c/asn_codecs_prim.c delete mode 100644 e2sim/src/ASN1c/asn_codecs_prim.h delete mode 100644 e2sim/src/ASN1c/asn_constant.h delete mode 100644 e2sim/src/ASN1c/asn_internal.c delete mode 100644 e2sim/src/ASN1c/asn_internal.h delete mode 100644 e2sim/src/ASN1c/asn_ioc.h delete mode 100644 e2sim/src/ASN1c/asn_random_fill.c delete mode 100644 e2sim/src/ASN1c/asn_random_fill.h delete mode 100644 e2sim/src/ASN1c/asn_system.h delete mode 100644 e2sim/src/ASN1c/ber_decoder.c delete mode 100644 e2sim/src/ASN1c/ber_decoder.h delete mode 100644 e2sim/src/ASN1c/ber_tlv_length.c delete mode 100644 e2sim/src/ASN1c/ber_tlv_length.h delete mode 100644 e2sim/src/ASN1c/ber_tlv_tag.c delete mode 100644 e2sim/src/ASN1c/ber_tlv_tag.h delete mode 100644 e2sim/src/ASN1c/constr_CHOICE.c delete mode 100644 e2sim/src/ASN1c/constr_CHOICE.h delete mode 100644 e2sim/src/ASN1c/constr_SEQUENCE.c delete mode 100644 e2sim/src/ASN1c/constr_SEQUENCE.h delete mode 100644 e2sim/src/ASN1c/constr_SEQUENCE_OF.c delete mode 100644 e2sim/src/ASN1c/constr_SEQUENCE_OF.h delete mode 100644 e2sim/src/ASN1c/constr_SET_OF.c delete mode 100644 e2sim/src/ASN1c/constr_SET_OF.h delete mode 100644 e2sim/src/ASN1c/constr_TYPE.c delete mode 100644 e2sim/src/ASN1c/constr_TYPE.h delete mode 100644 e2sim/src/ASN1c/constraints.c delete mode 100644 e2sim/src/ASN1c/constraints.h delete mode 100644 e2sim/src/ASN1c/der_encoder.c delete mode 100644 e2sim/src/ASN1c/der_encoder.h delete mode 100644 e2sim/src/ASN1c/per_decoder.c delete mode 100644 e2sim/src/ASN1c/per_decoder.h delete mode 100644 e2sim/src/ASN1c/per_encoder.c delete mode 100644 e2sim/src/ASN1c/per_encoder.h delete mode 100644 e2sim/src/ASN1c/per_opentype.c delete mode 100644 e2sim/src/ASN1c/per_opentype.h delete mode 100644 e2sim/src/ASN1c/per_support.c delete mode 100644 e2sim/src/ASN1c/per_support.h delete mode 100644 e2sim/src/ASN1c/xer_decoder.c delete mode 100644 e2sim/src/ASN1c/xer_decoder.h delete mode 100644 e2sim/src/ASN1c/xer_encoder.c delete mode 100644 e2sim/src/ASN1c/xer_encoder.h delete mode 100644 e2sim/src/ASN1c/xer_support.c delete mode 100644 e2sim/src/ASN1c/xer_support.h mode change 100644 => 100755 e2sim/src/DEF/CMakeLists.txt mode change 100644 => 100755 e2sim/src/DEF/e2sim_defs.cpp mode change 100644 => 100755 e2sim/src/DEF/e2sim_defs.h mode change 100644 => 100755 e2sim/src/SCTP/CMakeLists.txt mode change 100644 => 100755 e2sim/src/SCTP/e2sim_sctp.c mode change 100644 => 100755 e2sim/src/SCTP/e2sim_sctp.cpp mode change 100644 => 100755 e2sim/src/SCTP/e2sim_sctp.h mode change 100644 => 100755 e2sim/src/SCTP/e2sim_sctp.hpp mode change 100644 => 100755 e2sim/src/base/CMakeLists.txt mode change 100644 => 100755 e2sim/src/base/e2sim.hpp mode change 100644 => 100755 e2sim/src/encoding/CMakeLists.txt mode change 100644 => 100755 e2sim/src/encoding/encode_e2apv1.hpp mode change 100644 => 100755 e2sim/src/messagerouting/CMakeLists.txt mode change 100644 => 100755 e2sim/src/messagerouting/e2ap_asn1c_codec.h mode change 100644 => 100755 e2sim/src/messagerouting/e2ap_message_handler.hpp diff --git a/e2sim/CMakeLists.txt b/e2sim/CMakeLists.txt old mode 100644 new mode 100755 index eb833dd..16d28c7 --- a/e2sim/CMakeLists.txt +++ b/e2sim/CMakeLists.txt @@ -91,7 +91,7 @@ unset( GPROF CACHE ) # we don't want this to persist -add_subdirectory(src/ASN1c) +add_subdirectory(./asn1c) add_subdirectory(src/DEF) add_subdirectory(src/SCTP) add_subdirectory(src/messagerouting) diff --git a/e2sim/Dockerfile_kpm b/e2sim/Dockerfile_kpm new file mode 100755 index 0000000..a5ddfa7 --- /dev/null +++ b/e2sim/Dockerfile_kpm @@ -0,0 +1,88 @@ +# vim: ts=4 sw=4 noet: +#================================================================================== +# Copyright (c) 2018-2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#================================================================================== + + +# -------------------------------------------------------------------------------------- +# Mnemonic: Dockerfile +# Abstract: This dockerfile is used to create an image that can be used to +# run the traffic steering xAPP in a container. +# +# Building should be as simple as: +# +# docker build -f Dockerfile -t ric-app-ts:[version] +# +# Date: 27 April 2020 +# Author: E. Scott Daniels +# -------------------------------------------------------------------------------------- + +# the builder has: git, wget, cmake, gcc/g++, make, python2/3. v7 dropped nng support +# +ARG CONTAINER_PULL_REGISTRY=nexus3.o-ran-sc.org:10001 +FROM ${CONTAINER_PULL_REGISTRY}/o-ran-sc/bldr-ubuntu18-c-go:1.9.0 as buildenv + +# spaces to save things in the build image to copy to final image +RUN mkdir -p /playpen/assets /playpen/src /playpen/bin /playpen/asn1c +ARG SRC=. + +WORKDIR /playpen + +# versions we snarf from package cloud +ARG E2SIM_VER=1.0.0 + +RUN apt-get update \ + && apt-get install -y \ + build-essential \ + git \ + cmake \ + libsctp-dev \ + lksctp-tools \ + autoconf \ + automake \ + libtool \ + bison \ + flex \ + libboost-all-dev \ + iputils-ping \ + net-tools \ + nano \ + vim \ + tcpdump \ + net-tools \ + nmap \ + && apt-get clean + +COPY e2sm_examples/kpm_e2sm/e2sim_1.0.0_amd64.deb /playpen +COPY e2sm_examples/kpm_e2sm/e2sim-dev_1.0.0_amd64.deb /playpen + +RUN dpkg -i e2sim_1.0.0_amd64.deb e2sim-dev_1.0.0_amd64.deb + +RUN mkdir /usr/local/include/nlohmann +RUN git clone https://github.com/azadkuh/nlohmann_json_release.git +RUN cp nlohmann_json_release/json.hpp /usr/local/include/nlohmann + +COPY ./e2sm_examples/kpm_e2sm/ /playpen/src/ +COPY asn1c/ /playpen/src/asn1c/ +RUN wc -l /playpen/src/reports.json + RUN cd /playpen/src && \ + rm -fr .build &&\ + mkdir .build && \ + cd .build && \ + cmake .. && \ + make install + +#CMD sleep 100000000000 +#CMD kpm_sim 10.111.138.172 36422 diff --git a/e2sim/asn1c/AMF-UE-NGAP-ID.c b/e2sim/asn1c/AMF-UE-NGAP-ID.c new file mode 100644 index 0000000..319c554 --- /dev/null +++ b/e2sim/asn1c/AMF-UE-NGAP-ID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "AMF-UE-NGAP-ID.h" + +int +AMF_UE_NGAP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0L && value <= 1099511627775L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AMF_UE_NGAP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 40, -1, 0, 1099511627775 } /* (0..1099511627775) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AMF_UE_NGAP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AMF_UE_NGAP_ID = { + "AMF-UE-NGAP-ID", + "AMF-UE-NGAP-ID", + &asn_OP_INTEGER, + asn_DEF_AMF_UE_NGAP_ID_tags_1, + sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1) + /sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1[0]), /* 1 */ + asn_DEF_AMF_UE_NGAP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1) + /sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AMF_UE_NGAP_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AMF_UE_NGAP_ID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/AMF-UE-NGAP-ID.h b/e2sim/asn1c/AMF-UE-NGAP-ID.h new file mode 100644 index 0000000..5a788ee --- /dev/null +++ b/e2sim/asn1c/AMF-UE-NGAP-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _AMF_UE_NGAP_ID_H_ +#define _AMF_UE_NGAP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AMF-UE-NGAP-ID */ +typedef INTEGER_t AMF_UE_NGAP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AMF_UE_NGAP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AMF_UE_NGAP_ID; +asn_struct_free_f AMF_UE_NGAP_ID_free; +asn_struct_print_f AMF_UE_NGAP_ID_print; +asn_constr_check_f AMF_UE_NGAP_ID_constraint; +ber_type_decoder_f AMF_UE_NGAP_ID_decode_ber; +der_type_encoder_f AMF_UE_NGAP_ID_encode_der; +xer_type_decoder_f AMF_UE_NGAP_ID_decode_xer; +xer_type_encoder_f AMF_UE_NGAP_ID_encode_xer; +jer_type_encoder_f AMF_UE_NGAP_ID_encode_jer; +per_type_decoder_f AMF_UE_NGAP_ID_decode_uper; +per_type_encoder_f AMF_UE_NGAP_ID_encode_uper; +per_type_decoder_f AMF_UE_NGAP_ID_decode_aper; +per_type_encoder_f AMF_UE_NGAP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AMF_UE_NGAP_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/AMFName.c b/e2sim/asn1c/AMFName.c new file mode 100644 index 0000000..6b20ec2 --- /dev/null +++ b/e2sim/asn1c/AMFName.c @@ -0,0 +1,116 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "AMFName.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_1[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +AMFName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 150UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_AMFName_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_AMFName_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using PrintableString, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AMFName_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_AMFName_1_v2c, /* Value to PER code map */ + asn_PER_MAP_AMFName_1_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AMFName_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AMFName = { + "AMFName", + "AMFName", + &asn_OP_PrintableString, + asn_DEF_AMFName_tags_1, + sizeof(asn_DEF_AMFName_tags_1) + /sizeof(asn_DEF_AMFName_tags_1[0]), /* 1 */ + asn_DEF_AMFName_tags_1, /* Same as above */ + sizeof(asn_DEF_AMFName_tags_1) + /sizeof(asn_DEF_AMFName_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AMFName_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AMFName_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/AMFName.h b/e2sim/asn1c/AMFName.h new file mode 100644 index 0000000..ee1d031 --- /dev/null +++ b/e2sim/asn1c/AMFName.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _AMFName_H_ +#define _AMFName_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrintableString.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AMFName */ +typedef PrintableString_t AMFName_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AMFName_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AMFName; +asn_struct_free_f AMFName_free; +asn_struct_print_f AMFName_print; +asn_constr_check_f AMFName_constraint; +ber_type_decoder_f AMFName_decode_ber; +der_type_encoder_f AMFName_encode_der; +xer_type_decoder_f AMFName_decode_xer; +xer_type_encoder_f AMFName_encode_xer; +jer_type_encoder_f AMFName_encode_jer; +per_type_decoder_f AMFName_decode_uper; +per_type_encoder_f AMFName_encode_uper; +per_type_decoder_f AMFName_decode_aper; +per_type_encoder_f AMFName_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AMFName_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/AMFPointer.c b/e2sim/asn1c/AMFPointer.c new file mode 100644 index 0000000..3959cbd --- /dev/null +++ b/e2sim/asn1c/AMFPointer.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "AMFPointer.h" + +int +AMFPointer_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 6UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AMFPointer_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 6, 6 } /* (SIZE(6..6)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AMFPointer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AMFPointer = { + "AMFPointer", + "AMFPointer", + &asn_OP_BIT_STRING, + asn_DEF_AMFPointer_tags_1, + sizeof(asn_DEF_AMFPointer_tags_1) + /sizeof(asn_DEF_AMFPointer_tags_1[0]), /* 1 */ + asn_DEF_AMFPointer_tags_1, /* Same as above */ + sizeof(asn_DEF_AMFPointer_tags_1) + /sizeof(asn_DEF_AMFPointer_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AMFPointer_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AMFPointer_constraint + }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/AMFPointer.h b/e2sim/asn1c/AMFPointer.h new file mode 100644 index 0000000..9f57168 --- /dev/null +++ b/e2sim/asn1c/AMFPointer.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _AMFPointer_H_ +#define _AMFPointer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AMFPointer */ +typedef BIT_STRING_t AMFPointer_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AMFPointer_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AMFPointer; +asn_struct_free_f AMFPointer_free; +asn_struct_print_f AMFPointer_print; +asn_constr_check_f AMFPointer_constraint; +ber_type_decoder_f AMFPointer_decode_ber; +der_type_encoder_f AMFPointer_encode_der; +xer_type_decoder_f AMFPointer_decode_xer; +xer_type_encoder_f AMFPointer_encode_xer; +jer_type_encoder_f AMFPointer_encode_jer; +per_type_decoder_f AMFPointer_decode_uper; +per_type_encoder_f AMFPointer_encode_uper; +per_type_decoder_f AMFPointer_decode_aper; +per_type_encoder_f AMFPointer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AMFPointer_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/AMFRegionID.c b/e2sim/asn1c/AMFRegionID.c new file mode 100644 index 0000000..48a2dc8 --- /dev/null +++ b/e2sim/asn1c/AMFRegionID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "AMFRegionID.h" + +int +AMFRegionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AMFRegionID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AMFRegionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AMFRegionID = { + "AMFRegionID", + "AMFRegionID", + &asn_OP_BIT_STRING, + asn_DEF_AMFRegionID_tags_1, + sizeof(asn_DEF_AMFRegionID_tags_1) + /sizeof(asn_DEF_AMFRegionID_tags_1[0]), /* 1 */ + asn_DEF_AMFRegionID_tags_1, /* Same as above */ + sizeof(asn_DEF_AMFRegionID_tags_1) + /sizeof(asn_DEF_AMFRegionID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AMFRegionID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AMFRegionID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/AMFRegionID.h b/e2sim/asn1c/AMFRegionID.h new file mode 100644 index 0000000..e2cd7de --- /dev/null +++ b/e2sim/asn1c/AMFRegionID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _AMFRegionID_H_ +#define _AMFRegionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AMFRegionID */ +typedef BIT_STRING_t AMFRegionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AMFRegionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AMFRegionID; +asn_struct_free_f AMFRegionID_free; +asn_struct_print_f AMFRegionID_print; +asn_constr_check_f AMFRegionID_constraint; +ber_type_decoder_f AMFRegionID_decode_ber; +der_type_encoder_f AMFRegionID_encode_der; +xer_type_decoder_f AMFRegionID_decode_xer; +xer_type_encoder_f AMFRegionID_encode_xer; +jer_type_encoder_f AMFRegionID_encode_jer; +per_type_decoder_f AMFRegionID_decode_uper; +per_type_encoder_f AMFRegionID_encode_uper; +per_type_decoder_f AMFRegionID_decode_aper; +per_type_encoder_f AMFRegionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AMFRegionID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/AMFSetID.c b/e2sim/asn1c/AMFSetID.c new file mode 100644 index 0000000..d8a927e --- /dev/null +++ b/e2sim/asn1c/AMFSetID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "AMFSetID.h" + +int +AMFSetID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 10UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AMFSetID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 10, 10 } /* (SIZE(10..10)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AMFSetID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AMFSetID = { + "AMFSetID", + "AMFSetID", + &asn_OP_BIT_STRING, + asn_DEF_AMFSetID_tags_1, + sizeof(asn_DEF_AMFSetID_tags_1) + /sizeof(asn_DEF_AMFSetID_tags_1[0]), /* 1 */ + asn_DEF_AMFSetID_tags_1, /* Same as above */ + sizeof(asn_DEF_AMFSetID_tags_1) + /sizeof(asn_DEF_AMFSetID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AMFSetID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AMFSetID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/AMFSetID.h b/e2sim/asn1c/AMFSetID.h new file mode 100644 index 0000000..e0f41c6 --- /dev/null +++ b/e2sim/asn1c/AMFSetID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _AMFSetID_H_ +#define _AMFSetID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* AMFSetID */ +typedef BIT_STRING_t AMFSetID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AMFSetID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AMFSetID; +asn_struct_free_f AMFSetID_free; +asn_struct_print_f AMFSetID_print; +asn_constr_check_f AMFSetID_constraint; +ber_type_decoder_f AMFSetID_decode_ber; +der_type_encoder_f AMFSetID_encode_der; +xer_type_decoder_f AMFSetID_decode_xer; +xer_type_encoder_f AMFSetID_encode_xer; +jer_type_encoder_f AMFSetID_encode_jer; +per_type_decoder_f AMFSetID_decode_uper; +per_type_encoder_f AMFSetID_encode_uper; +per_type_decoder_f AMFSetID_decode_aper; +per_type_encoder_f AMFSetID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AMFSetID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ANY.c b/e2sim/asn1c/ANY.c new file mode 100644 index 0000000..bf988db --- /dev/null +++ b/e2sim/asn1c/ANY.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#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, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_hex, + ANY_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + ANY_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, + 0, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + ANY_decode_uper, + ANY_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + ANY_decode_aper, + ANY_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_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, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, /* No constraints */ + 0, 0, /* No members */ + &asn_SPC_ANY_specs, +}; diff --git a/e2sim/asn1c/ANY.h b/e2sim/asn1c/ANY.h new file mode 100644 index 0000000..871ed5e --- /dev/null +++ b/e2sim/asn1c/ANY.h @@ -0,0 +1,84 @@ +/*- + * 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; + +#define ANY_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define ANY_print OCTET_STRING_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define ANY_compare OCTET_STRING_compare + +#define ANY_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define ANY_decode_ber OCTET_STRING_decode_ber +#define ANY_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define ANY_decode_xer OCTET_STRING_decode_xer_hex +xer_type_encoder_f ANY_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f ANY_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f ANY_decode_uper; +per_type_encoder_f ANY_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f ANY_decode_aper; +per_type_encoder_f ANY_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +/****************************** + * 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); +ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr); +#if !defined(ASN_DISABLE_APER_SUPPORT) +int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr); +ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr); +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +/* 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); +#if !defined(ASN_DISABLE_APER_SUPPORT) +int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#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/e2sim/asn1c/ANY_aper.c b/e2sim/asn1c/ANY_aper.c new file mode 100644 index 0000000..91d7277 --- /dev/null +++ b/e2sim/asn1c/ANY_aper.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(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_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_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; + } +} + +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, -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 = aper_put_length(po, -1, -1, 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 && aper_put_length(po, -1, -1, 0, NULL)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/ANY_ber.c b/e2sim/asn1c/ANY_ber.c new file mode 100644 index 0000000..2ebe45b --- /dev/null +++ b/e2sim/asn1c/ANY_ber.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +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) { + 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; +} + +int +ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + struct _callback_arg arg; + asn_enc_rval_t erval = {0,0,0}; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + arg.offset = arg.size = 0; + arg.buffer = 0; + + erval = der_encode(td, sptr, ANY__consume_bytes, &arg); + if(erval.encoded == -1) { + if(arg.buffer) FREEMEM(arg.buffer); + return -1; + } + assert((size_t)erval.encoded == arg.offset); + + if(st->buf) FREEMEM(st->buf); + st->buf = arg.buffer; + st->size = arg.offset; + + return 0; +} + +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; + } +} + +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; + } +} diff --git a/e2sim/asn1c/ANY_jer.c b/e2sim/asn1c/ANY_jer.c new file mode 100644 index 0000000..a86db9c --- /dev/null +++ b/e2sim/asn1c/ANY_jer.c @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +ANY_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + ASN__ENCODE_FAILED; + + /* Dump as binary */ + return OCTET_STRING_encode_jer(td, sptr, ilevel, flags, cb, app_key); +} diff --git a/e2sim/asn1c/ANY_uper.c b/e2sim/asn1c/ANY_uper.c new file mode 100644 index 0000000..65f1519 --- /dev/null +++ b/e2sim/asn1c/ANY_uper.c @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +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); +} diff --git a/e2sim/asn1c/ANY_xer.c b/e2sim/asn1c/ANY_xer.c new file mode 100644 index 0000000..112c213 --- /dev/null +++ b/e2sim/asn1c/ANY_xer.c @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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); +} diff --git a/e2sim/asn1c/BIT_STRING.c b/e2sim/asn1c/BIT_STRING.c new file mode 100644 index 0000000..b5ba940 --- /dev/null +++ b/e2sim/asn1c/BIT_STRING.c @@ -0,0 +1,213 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#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 */ +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + BIT_STRING_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + BIT_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_binary, + BIT_STRING_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + BIT_STRING_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + BIT_STRING_decode_oer, + BIT_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + BIT_STRING_decode_uper, /* Unaligned PER decoder */ + BIT_STRING_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + BIT_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 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]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 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; +} + +/* + * Non-destructively remove the trailing 0-bits from the given bit string. + */ +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; + + (void)specs; + 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; + } +} diff --git a/e2sim/asn1c/BIT_STRING.h b/e2sim/asn1c/BIT_STRING.h new file mode 100644 index 0000000..e755fe9 --- /dev/null +++ b/e2sim/asn1c/BIT_STRING.h @@ -0,0 +1,75 @@ +/*- + * 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; + +#define BIT_STRING_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f BIT_STRING_compare; + +asn_constr_check_f BIT_STRING_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define BIT_STRING_decode_ber OCTET_STRING_decode_ber +#define BIT_STRING_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary +xer_type_encoder_f BIT_STRING_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f BIT_STRING_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f BIT_STRING_decode_oer; +oer_type_encoder_f BIT_STRING_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f BIT_STRING_decode_uper; +per_type_encoder_f BIT_STRING_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define BIT_STRING_decode_aper OCTET_STRING_decode_aper +#define BIT_STRING_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f BIT_STRING_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +const BIT_STRING_t *BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp); + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/e2sim/asn1c/BIT_STRING_jer.c b/e2sim/asn1c/BIT_STRING_jer.c new file mode 100644 index 0000000..69c320d --- /dev/null +++ b/e2sim/asn1c/BIT_STRING_jer.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = 0; + 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; +} diff --git a/e2sim/asn1c/BIT_STRING_print.c b/e2sim/asn1c/BIT_STRING_print.c new file mode 100644 index 0000000..bab1ea5 --- /dev/null +++ b/e2sim/asn1c/BIT_STRING_print.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * 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; +} diff --git a/e2sim/asn1c/BIT_STRING_rfill.c b/e2sim/asn1c/BIT_STRING_rfill.c new file mode 100644 index 0000000..a6e6a95 --- /dev/null +++ b/e2sim/asn1c/BIT_STRING_rfill.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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 !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 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 { +#else + if(!constraints) constraints = &td->encoding_constraints; + { +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 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/e2sim/asn1c/BIT_STRING_uper.c b/e2sim/asn1c/BIT_STRING_uper.c new file mode 100644 index 0000000..d82349e --- /dev/null +++ b/e2sim/asn1c/BIT_STRING_uper.c @@ -0,0 +1,244 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +#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); +} diff --git a/e2sim/asn1c/BIT_STRING_xer.c b/e2sim/asn1c/BIT_STRING_xer.c new file mode 100644 index 0000000..67d5cb8 --- /dev/null +++ b/e2sim/asn1c/BIT_STRING_xer.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static const char *_bit_pattern[16] = { + "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" +}; + +asn_enc_rval_t +BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = (flags & XER_F_CANONICAL); + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Binary dump + */ + for(; buf < end; buf++) { + int v = *buf; + int nline = xcan?0:(((buf - st->buf) % 8) == 0); + if(p >= scend || nline) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + if(nline) ASN__TEXT_INDENT(1, ilevel); + } + memcpy(p + 0, _bit_pattern[v >> 4], 4); + memcpy(p + 4, _bit_pattern[v & 0x0f], 4); + p += 8; + } + + if(!xcan && ((buf - st->buf) % 8) == 0) + ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int v = *buf; + int ubits = st->bits_unused; + int i; + for(i = 7; i >= ubits; i--) + *p++ = (v & (1 << i)) ? 0x31 : 0x30; + ASN__CALLBACK(scratch, p - scratch); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/e2sim/asn1c/BOOLEAN.c b/e2sim/asn1c/BOOLEAN.c new file mode 100644 index 0000000..1373a6f --- /dev/null +++ b/e2sim/asn1c/BOOLEAN.c @@ -0,0 +1,128 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#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, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + BOOLEAN_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + BOOLEAN_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + BOOLEAN_decode_ber, + BOOLEAN_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + BOOLEAN_decode_xer, + BOOLEAN_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + BOOLEAN_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + BOOLEAN_decode_oer, + BOOLEAN_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + BOOLEAN_decode_uper, /* Unaligned PER decoder */ + BOOLEAN_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + BOOLEAN_decode_aper, /* Aligned PER decoder */ + BOOLEAN_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + BOOLEAN_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 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]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +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; + } + } +} + +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; + } +} diff --git a/e2sim/asn1c/BOOLEAN.h b/e2sim/asn1c/BOOLEAN.h new file mode 100644 index 0000000..2cbbe71 --- /dev/null +++ b/e2sim/asn1c/BOOLEAN.h @@ -0,0 +1,70 @@ +/*- + * 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 unsigned BOOLEAN_t; + +extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; +extern asn_TYPE_operation_t asn_OP_BOOLEAN; + +asn_struct_free_f BOOLEAN_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f BOOLEAN_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f BOOLEAN_compare; + +#define BOOLEAN_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f BOOLEAN_decode_ber; +der_type_encoder_f BOOLEAN_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f BOOLEAN_decode_xer; +xer_type_encoder_f BOOLEAN_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f BOOLEAN_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f BOOLEAN_decode_oer; +oer_type_encoder_f BOOLEAN_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f BOOLEAN_decode_uper; +per_type_encoder_f BOOLEAN_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f BOOLEAN_decode_aper; +per_type_encoder_f BOOLEAN_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f BOOLEAN_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _BOOLEAN_H_ */ diff --git a/e2sim/asn1c/BOOLEAN_aper.c b/e2sim/asn1c/BOOLEAN_aper.c new file mode 100644 index 0000000..d697cf5 --- /dev/null +++ b/e2sim/asn1c/BOOLEAN_aper.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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); +} diff --git a/e2sim/asn1c/BOOLEAN_ber.c b/e2sim/asn1c/BOOLEAN_ber.c new file mode 100644 index 0000000..176a4a4 --- /dev/null +++ b/e2sim/asn1c/BOOLEAN_ber.c @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode BOOLEAN type. + */ +asn_dec_rval_t +BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **bool_value, + const void *buf_ptr, size_t size, int tag_mode) { + BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + ber_tlv_len_t lidx; + + if(st == NULL) { + st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("Boolean length is %d bytes", (int)length); + + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * Compute boolean value. + */ + for(*st = 0, lidx = 0; + (lidx < length) && *st == 0; lidx++) { + /* + * Very simple approach: read bytes until the end or + * value is already TRUE. + * BOOLEAN is not supposed to contain meaningful data anyway. + */ + *st |= ((const uint8_t *)buf_ptr)[lidx]; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", + (long)rval.consumed, (long)length, + td->name, *st); + + return rval; +} + +asn_enc_rval_t +BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + + erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb) { + uint8_t bool_value; + + bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ + + if(cb(&bool_value, 1, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } + + erval.encoded += 1; + + ASN__ENCODED_OK(erval); +} diff --git a/e2sim/asn1c/BOOLEAN_jer.c b/e2sim/asn1c/BOOLEAN_jer.c new file mode 100644 index 0000000..6f4b093 --- /dev/null +++ b/e2sim/asn1c/BOOLEAN_jer.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_enc_rval_t +BOOLEAN_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_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("true", 4); + } else { + ASN__CALLBACK("false", 5); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/e2sim/asn1c/BOOLEAN_print.c b/e2sim/asn1c/BOOLEAN_print.c new file mode 100644 index 0000000..23aaade --- /dev/null +++ b/e2sim/asn1c/BOOLEAN_print.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; +} diff --git a/e2sim/asn1c/BOOLEAN_rfill.c b/e2sim/asn1c/BOOLEAN_rfill.c new file mode 100644 index 0000000..5ec628b --- /dev/null +++ b/e2sim/asn1c/BOOLEAN_rfill.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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 !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 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; + } + } +#else + if(!constraints) constraints = &td->encoding_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + + /* 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/e2sim/asn1c/BOOLEAN_uper.c b/e2sim/asn1c/BOOLEAN_uper.c new file mode 100644 index 0000000..8181ec9 --- /dev/null +++ b/e2sim/asn1c/BOOLEAN_uper.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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); +} diff --git a/e2sim/asn1c/BOOLEAN_xer.c b/e2sim/asn1c/BOOLEAN_xer.c new file mode 100644 index 0000000..7e9d8f8 --- /dev/null +++ b/e2sim/asn1c/BOOLEAN_xer.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * 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; +} diff --git a/e2sim/asn1c/BinIndex.c b/e2sim/asn1c/BinIndex.c new file mode 100644 index 0000000..9dea46f --- /dev/null +++ b/e2sim/asn1c/BinIndex.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "BinIndex.h" + +int +BinIndex_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_BinIndex_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_BinIndex_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BinIndex = { + "BinIndex", + "BinIndex", + &asn_OP_NativeInteger, + asn_DEF_BinIndex_tags_1, + sizeof(asn_DEF_BinIndex_tags_1) + /sizeof(asn_DEF_BinIndex_tags_1[0]), /* 1 */ + asn_DEF_BinIndex_tags_1, /* Same as above */ + sizeof(asn_DEF_BinIndex_tags_1) + /sizeof(asn_DEF_BinIndex_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BinIndex_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BinIndex_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/BinIndex.h b/e2sim/asn1c/BinIndex.h new file mode 100644 index 0000000..93792c9 --- /dev/null +++ b/e2sim/asn1c/BinIndex.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _BinIndex_H_ +#define _BinIndex_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BinIndex */ +typedef long BinIndex_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BinIndex_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BinIndex; +asn_struct_free_f BinIndex_free; +asn_struct_print_f BinIndex_print; +asn_constr_check_f BinIndex_constraint; +ber_type_decoder_f BinIndex_decode_ber; +der_type_encoder_f BinIndex_encode_der; +xer_type_decoder_f BinIndex_decode_xer; +xer_type_encoder_f BinIndex_encode_xer; +jer_type_encoder_f BinIndex_encode_jer; +per_type_decoder_f BinIndex_decode_uper; +per_type_encoder_f BinIndex_encode_uper; +per_type_decoder_f BinIndex_decode_aper; +per_type_encoder_f BinIndex_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BinIndex_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/BinRangeDefinition.c b/e2sim/asn1c/BinRangeDefinition.c new file mode 100644 index 0000000..a9b9b2f --- /dev/null +++ b/e2sim/asn1c/BinRangeDefinition.c @@ -0,0 +1,105 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "BinRangeDefinition.h" + +#include "BinRangeList.h" +asn_TYPE_member_t asn_MBR_BinRangeDefinition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BinRangeDefinition, binRangeListX), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BinRangeList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "binRangeListX" + }, + { ATF_POINTER, 2, offsetof(struct BinRangeDefinition, binRangeListY), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BinRangeList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "binRangeListY" + }, + { ATF_POINTER, 1, offsetof(struct BinRangeDefinition, binRangeListZ), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BinRangeList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "binRangeListZ" + }, +}; +static const int asn_MAP_BinRangeDefinition_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_BinRangeDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BinRangeDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* binRangeListX */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* binRangeListY */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* binRangeListZ */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BinRangeDefinition_specs_1 = { + sizeof(struct BinRangeDefinition), + offsetof(struct BinRangeDefinition, _asn_ctx), + asn_MAP_BinRangeDefinition_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_BinRangeDefinition_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BinRangeDefinition = { + "BinRangeDefinition", + "BinRangeDefinition", + &asn_OP_SEQUENCE, + asn_DEF_BinRangeDefinition_tags_1, + sizeof(asn_DEF_BinRangeDefinition_tags_1) + /sizeof(asn_DEF_BinRangeDefinition_tags_1[0]), /* 1 */ + asn_DEF_BinRangeDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_BinRangeDefinition_tags_1) + /sizeof(asn_DEF_BinRangeDefinition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_BinRangeDefinition_1, + 3, /* Elements count */ + &asn_SPC_BinRangeDefinition_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/BinRangeDefinition.h b/e2sim/asn1c/BinRangeDefinition.h new file mode 100644 index 0000000..5f30b2c --- /dev/null +++ b/e2sim/asn1c/BinRangeDefinition.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _BinRangeDefinition_H_ +#define _BinRangeDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BinRangeList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BinRangeList; + +/* BinRangeDefinition */ +typedef struct BinRangeDefinition { + BinRangeList_t binRangeListX; + struct BinRangeList *binRangeListY; /* OPTIONAL */ + struct BinRangeList *binRangeListZ; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BinRangeDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BinRangeDefinition; +extern asn_SEQUENCE_specifics_t asn_SPC_BinRangeDefinition_specs_1; +extern asn_TYPE_member_t asn_MBR_BinRangeDefinition_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _BinRangeDefinition_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/BinRangeItem.c b/e2sim/asn1c/BinRangeItem.c new file mode 100644 index 0000000..9e940d6 --- /dev/null +++ b/e2sim/asn1c/BinRangeItem.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "BinRangeItem.h" + +asn_TYPE_member_t asn_MBR_BinRangeItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BinRangeItem, binIndex), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BinIndex, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "binIndex" + }, + { ATF_NOFLAGS, 0, offsetof(struct BinRangeItem, startValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_BinRangeValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "startValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct BinRangeItem, endValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_BinRangeValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "endValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_BinRangeItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BinRangeItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* binIndex */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* startValue */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* endValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BinRangeItem_specs_1 = { + sizeof(struct BinRangeItem), + offsetof(struct BinRangeItem, _asn_ctx), + asn_MAP_BinRangeItem_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BinRangeItem = { + "BinRangeItem", + "BinRangeItem", + &asn_OP_SEQUENCE, + asn_DEF_BinRangeItem_tags_1, + sizeof(asn_DEF_BinRangeItem_tags_1) + /sizeof(asn_DEF_BinRangeItem_tags_1[0]), /* 1 */ + asn_DEF_BinRangeItem_tags_1, /* Same as above */ + sizeof(asn_DEF_BinRangeItem_tags_1) + /sizeof(asn_DEF_BinRangeItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_BinRangeItem_1, + 3, /* Elements count */ + &asn_SPC_BinRangeItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/BinRangeItem.h b/e2sim/asn1c/BinRangeItem.h new file mode 100644 index 0000000..5f9d5c7 --- /dev/null +++ b/e2sim/asn1c/BinRangeItem.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _BinRangeItem_H_ +#define _BinRangeItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BinIndex.h" +#include "BinRangeValue.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BinRangeItem */ +typedef struct BinRangeItem { + BinIndex_t binIndex; + BinRangeValue_t startValue; + BinRangeValue_t endValue; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BinRangeItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BinRangeItem; +extern asn_SEQUENCE_specifics_t asn_SPC_BinRangeItem_specs_1; +extern asn_TYPE_member_t asn_MBR_BinRangeItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _BinRangeItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/BinRangeList.c b/e2sim/asn1c/BinRangeList.c new file mode 100644 index 0000000..83d44f7 --- /dev/null +++ b/e2sim/asn1c/BinRangeList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "BinRangeList.h" + +#include "BinRangeItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_BinRangeList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_BinRangeList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BinRangeItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_BinRangeList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_BinRangeList_specs_1 = { + sizeof(struct BinRangeList), + offsetof(struct BinRangeList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_BinRangeList = { + "BinRangeList", + "BinRangeList", + &asn_OP_SEQUENCE_OF, + asn_DEF_BinRangeList_tags_1, + sizeof(asn_DEF_BinRangeList_tags_1) + /sizeof(asn_DEF_BinRangeList_tags_1[0]), /* 1 */ + asn_DEF_BinRangeList_tags_1, /* Same as above */ + sizeof(asn_DEF_BinRangeList_tags_1) + /sizeof(asn_DEF_BinRangeList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BinRangeList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_BinRangeList_1, + 1, /* Single element */ + &asn_SPC_BinRangeList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/BinRangeList.h b/e2sim/asn1c/BinRangeList.h new file mode 100644 index 0000000..243780c --- /dev/null +++ b/e2sim/asn1c/BinRangeList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _BinRangeList_H_ +#define _BinRangeList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BinRangeItem; + +/* BinRangeList */ +typedef struct BinRangeList { + A_SEQUENCE_OF(struct BinRangeItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BinRangeList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BinRangeList; +extern asn_SET_OF_specifics_t asn_SPC_BinRangeList_specs_1; +extern asn_TYPE_member_t asn_MBR_BinRangeList_1[1]; +extern asn_per_constraints_t asn_PER_type_BinRangeList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _BinRangeList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/BinRangeValue.c b/e2sim/asn1c/BinRangeValue.c new file mode 100644 index 0000000..fdf3964 --- /dev/null +++ b/e2sim/asn1c/BinRangeValue.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "BinRangeValue.h" + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_BinRangeValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_BinRangeValue_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BinRangeValue, choice.valueInt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "valueInt" + }, + { ATF_NOFLAGS, 0, offsetof(struct BinRangeValue, choice.valueReal), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeReal, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "valueReal" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_BinRangeValue_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* valueReal */ +}; +asn_CHOICE_specifics_t asn_SPC_BinRangeValue_specs_1 = { + sizeof(struct BinRangeValue), + offsetof(struct BinRangeValue, _asn_ctx), + offsetof(struct BinRangeValue, present), + sizeof(((struct BinRangeValue *)0)->present), + asn_MAP_BinRangeValue_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_BinRangeValue = { + "BinRangeValue", + "BinRangeValue", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BinRangeValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_BinRangeValue_1, + 2, /* Elements count */ + &asn_SPC_BinRangeValue_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/BinRangeValue.h b/e2sim/asn1c/BinRangeValue.h new file mode 100644 index 0000000..32f11ad --- /dev/null +++ b/e2sim/asn1c/BinRangeValue.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _BinRangeValue_H_ +#define _BinRangeValue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "NativeReal.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BinRangeValue_PR { + BinRangeValue_PR_NOTHING, /* No components present */ + BinRangeValue_PR_valueInt, + BinRangeValue_PR_valueReal + /* Extensions may appear below */ + +} BinRangeValue_PR; + +/* BinRangeValue */ +typedef struct BinRangeValue { + BinRangeValue_PR present; + union BinRangeValue_u { + long valueInt; + double valueReal; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BinRangeValue_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BinRangeValue; +extern asn_CHOICE_specifics_t asn_SPC_BinRangeValue_specs_1; +extern asn_TYPE_member_t asn_MBR_BinRangeValue_1[2]; +extern asn_per_constraints_t asn_PER_type_BinRangeValue_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _BinRangeValue_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CGI.c b/e2sim/asn1c/CGI.c new file mode 100644 index 0000000..2873169 --- /dev/null +++ b/e2sim/asn1c/CGI.c @@ -0,0 +1,90 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CGI.h" + +#include "NR-CGI.h" +#include "EUTRA-CGI.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CGI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_CGI_1[] = { + { ATF_POINTER, 0, offsetof(struct CGI, choice.nR_CGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_CGI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nR-CGI" + }, + { ATF_POINTER, 0, offsetof(struct CGI, choice.eUTRA_CGI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EUTRA_CGI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eUTRA-CGI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_CGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR-CGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRA-CGI */ +}; +asn_CHOICE_specifics_t asn_SPC_CGI_specs_1 = { + sizeof(struct CGI), + offsetof(struct CGI, _asn_ctx), + offsetof(struct CGI, present), + sizeof(((struct CGI *)0)->present), + asn_MAP_CGI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_CGI = { + "CGI", + "CGI", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CGI_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_CGI_1, + 2, /* Elements count */ + &asn_SPC_CGI_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CGI.h b/e2sim/asn1c/CGI.h new file mode 100644 index 0000000..1e7c422 --- /dev/null +++ b/e2sim/asn1c/CGI.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CGI_H_ +#define _CGI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CGI_PR { + CGI_PR_NOTHING, /* No components present */ + CGI_PR_nR_CGI, + CGI_PR_eUTRA_CGI + /* Extensions may appear below */ + +} CGI_PR; + +/* Forward declarations */ +struct NR_CGI; +struct EUTRA_CGI; + +/* CGI */ +typedef struct CGI { + CGI_PR present; + union CGI_u { + struct NR_CGI *nR_CGI; + struct EUTRA_CGI *eUTRA_CGI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CGI; +extern asn_CHOICE_specifics_t asn_SPC_CGI_specs_1; +extern asn_TYPE_member_t asn_MBR_CGI_1[2]; +extern asn_per_constraints_t asn_PER_type_CGI_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CGI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CMakeLists.txt b/e2sim/asn1c/CMakeLists.txt old mode 100644 new mode 100755 similarity index 100% rename from e2sim/src/ASN1c/CMakeLists.txt rename to e2sim/asn1c/CMakeLists.txt diff --git a/e2sim/asn1c/Cause.c b/e2sim/asn1c/Cause.c new file mode 100644 index 0000000..025786f --- /dev/null +++ b/e2sim/asn1c/Cause.c @@ -0,0 +1,160 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "Cause.h" + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Cause_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_Cause_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricRequest), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRICrequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricService), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRICservice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricService" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.e2Node), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseE2node, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2Node" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseTransport, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "transport" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseProtocol, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocol" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseMisc, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "misc" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Cause_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* misc */ +}; +asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = { + sizeof(struct Cause), + offsetof(struct Cause, _asn_ctx), + offsetof(struct Cause, present), + sizeof(((struct Cause *)0)->present), + asn_MAP_Cause_tag2el_1, + 6, /* Count of tags in the map */ + 0, 0, + 6 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Cause = { + "Cause", + "Cause", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Cause_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_Cause_1, + 6, /* Elements count */ + &asn_SPC_Cause_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/Cause.h b/e2sim/asn1c/Cause.h new file mode 100644 index 0000000..887fd01 --- /dev/null +++ b/e2sim/asn1c/Cause.h @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _Cause_H_ +#define _Cause_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CauseRICrequest.h" +#include "CauseRICservice.h" +#include "CauseE2node.h" +#include "CauseTransport.h" +#include "CauseProtocol.h" +#include "CauseMisc.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Cause_PR { + Cause_PR_NOTHING, /* No components present */ + Cause_PR_ricRequest, + Cause_PR_ricService, + Cause_PR_e2Node, + Cause_PR_transport, + Cause_PR_protocol, + Cause_PR_misc + /* Extensions may appear below */ + +} Cause_PR; + +/* Cause */ +typedef struct Cause { + Cause_PR present; + union Cause_u { + CauseRICrequest_t ricRequest; + CauseRICservice_t ricService; + CauseE2node_t e2Node; + CauseTransport_t transport; + CauseProtocol_t protocol; + CauseMisc_t misc; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Cause; +extern asn_CHOICE_specifics_t asn_SPC_Cause_specs_1; +extern asn_TYPE_member_t asn_MBR_Cause_1[6]; +extern asn_per_constraints_t asn_PER_type_Cause_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Cause_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CauseE2node.c b/e2sim/asn1c/CauseE2node.c new file mode 100644 index 0000000..808bb58 --- /dev/null +++ b/e2sim/asn1c/CauseE2node.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CauseE2node.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CauseE2node_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_CauseE2node_value2enum_1[] = { + { 0, 24, "e2node-component-unknown" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseE2node_enum2value_1[] = { + 0 /* e2node-component-unknown(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseE2node_specs_1 = { + asn_MAP_CauseE2node_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseE2node_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseE2node_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseE2node = { + "CauseE2node", + "CauseE2node", + &asn_OP_NativeEnumerated, + asn_DEF_CauseE2node_tags_1, + sizeof(asn_DEF_CauseE2node_tags_1) + /sizeof(asn_DEF_CauseE2node_tags_1[0]), /* 1 */ + asn_DEF_CauseE2node_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseE2node_tags_1) + /sizeof(asn_DEF_CauseE2node_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CauseE2node_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseE2node_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CauseE2node.h b/e2sim/asn1c/CauseE2node.h new file mode 100644 index 0000000..21076c1 --- /dev/null +++ b/e2sim/asn1c/CauseE2node.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CauseE2node_H_ +#define _CauseE2node_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseE2node { + CauseE2node_e2node_component_unknown = 0 + /* + * Enumeration is extensible + */ +} e_CauseE2node; + +/* CauseE2node */ +typedef long CauseE2node_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseE2node_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseE2node; +extern const asn_INTEGER_specifics_t asn_SPC_CauseE2node_specs_1; +asn_struct_free_f CauseE2node_free; +asn_struct_print_f CauseE2node_print; +asn_constr_check_f CauseE2node_constraint; +ber_type_decoder_f CauseE2node_decode_ber; +der_type_encoder_f CauseE2node_encode_der; +xer_type_decoder_f CauseE2node_decode_xer; +xer_type_encoder_f CauseE2node_encode_xer; +jer_type_encoder_f CauseE2node_encode_jer; +per_type_decoder_f CauseE2node_decode_uper; +per_type_encoder_f CauseE2node_encode_uper; +per_type_decoder_f CauseE2node_decode_aper; +per_type_encoder_f CauseE2node_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseE2node_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CauseMisc.c b/e2sim/asn1c/CauseMisc.c new file mode 100644 index 0000000..26a7904 --- /dev/null +++ b/e2sim/asn1c/CauseMisc.c @@ -0,0 +1,69 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CauseMisc.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = { + { 0, 27, "control-processing-overload" }, + { 1, 16, "hardware-failure" }, + { 2, 15, "om-intervention" }, + { 3, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = { + 0, /* control-processing-overload(0) */ + 1, /* hardware-failure(1) */ + 2, /* om-intervention(2) */ + 3 /* unspecified(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = { + asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseMisc_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseMisc = { + "CauseMisc", + "CauseMisc", + &asn_OP_NativeEnumerated, + asn_DEF_CauseMisc_tags_1, + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + asn_DEF_CauseMisc_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CauseMisc_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseMisc_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CauseMisc.h b/e2sim/asn1c/CauseMisc.h new file mode 100644 index 0000000..b351f04 --- /dev/null +++ b/e2sim/asn1c/CauseMisc.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CauseMisc_H_ +#define _CauseMisc_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseMisc { + CauseMisc_control_processing_overload = 0, + CauseMisc_hardware_failure = 1, + CauseMisc_om_intervention = 2, + CauseMisc_unspecified = 3 + /* + * Enumeration is extensible + */ +} e_CauseMisc; + +/* CauseMisc */ +typedef long CauseMisc_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseMisc_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseMisc; +extern const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1; +asn_struct_free_f CauseMisc_free; +asn_struct_print_f CauseMisc_print; +asn_constr_check_f CauseMisc_constraint; +ber_type_decoder_f CauseMisc_decode_ber; +der_type_encoder_f CauseMisc_encode_der; +xer_type_decoder_f CauseMisc_decode_xer; +xer_type_encoder_f CauseMisc_encode_xer; +jer_type_encoder_f CauseMisc_encode_jer; +per_type_decoder_f CauseMisc_decode_uper; +per_type_encoder_f CauseMisc_encode_uper; +per_type_decoder_f CauseMisc_decode_aper; +per_type_encoder_f CauseMisc_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseMisc_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CauseProtocol.c b/e2sim/asn1c/CauseProtocol.c new file mode 100644 index 0000000..4c5ffd7 --- /dev/null +++ b/e2sim/asn1c/CauseProtocol.c @@ -0,0 +1,75 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CauseProtocol.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_CauseProtocol_value2enum_1[] = { + { 0, 21, "transfer-syntax-error" }, + { 1, 28, "abstract-syntax-error-reject" }, + { 2, 39, "abstract-syntax-error-ignore-and-notify" }, + { 3, 42, "message-not-compatible-with-receiver-state" }, + { 4, 14, "semantic-error" }, + { 5, 49, "abstract-syntax-error-falsely-constructed-message" }, + { 6, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = { + 5, /* abstract-syntax-error-falsely-constructed-message(5) */ + 2, /* abstract-syntax-error-ignore-and-notify(2) */ + 1, /* abstract-syntax-error-reject(1) */ + 3, /* message-not-compatible-with-receiver-state(3) */ + 4, /* semantic-error(4) */ + 0, /* transfer-syntax-error(0) */ + 6 /* unspecified(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = { + asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseProtocol_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseProtocol = { + "CauseProtocol", + "CauseProtocol", + &asn_OP_NativeEnumerated, + asn_DEF_CauseProtocol_tags_1, + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + asn_DEF_CauseProtocol_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CauseProtocol_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseProtocol_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CauseProtocol.h b/e2sim/asn1c/CauseProtocol.h new file mode 100644 index 0000000..9334e3c --- /dev/null +++ b/e2sim/asn1c/CauseProtocol.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CauseProtocol_H_ +#define _CauseProtocol_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseProtocol { + CauseProtocol_transfer_syntax_error = 0, + CauseProtocol_abstract_syntax_error_reject = 1, + CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, + CauseProtocol_message_not_compatible_with_receiver_state = 3, + CauseProtocol_semantic_error = 4, + CauseProtocol_abstract_syntax_error_falsely_constructed_message = 5, + CauseProtocol_unspecified = 6 + /* + * Enumeration is extensible + */ +} e_CauseProtocol; + +/* CauseProtocol */ +typedef long CauseProtocol_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol; +extern const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1; +asn_struct_free_f CauseProtocol_free; +asn_struct_print_f CauseProtocol_print; +asn_constr_check_f CauseProtocol_constraint; +ber_type_decoder_f CauseProtocol_decode_ber; +der_type_encoder_f CauseProtocol_encode_der; +xer_type_decoder_f CauseProtocol_decode_xer; +xer_type_encoder_f CauseProtocol_encode_xer; +jer_type_encoder_f CauseProtocol_encode_jer; +per_type_decoder_f CauseProtocol_decode_uper; +per_type_encoder_f CauseProtocol_encode_uper; +per_type_decoder_f CauseProtocol_decode_aper; +per_type_encoder_f CauseProtocol_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseProtocol_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CauseRICrequest.c b/e2sim/asn1c/CauseRICrequest.c new file mode 100644 index 0000000..3997661 --- /dev/null +++ b/e2sim/asn1c/CauseRICrequest.c @@ -0,0 +1,101 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CauseRICrequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CauseRICrequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 13 } /* (0..13,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_CauseRICrequest_value2enum_1[] = { + { 0, 23, "ran-function-id-invalid" }, + { 1, 20, "action-not-supported" }, + { 2, 17, "excessive-actions" }, + { 3, 16, "duplicate-action" }, + { 4, 23, "duplicate-event-trigger" }, + { 5, 23, "function-resource-limit" }, + { 6, 18, "request-id-unknown" }, + { 7, 46, "inconsistent-action-subsequent-action-sequence" }, + { 8, 23, "control-message-invalid" }, + { 9, 27, "ric-call-process-id-invalid" }, + { 10, 21, "control-timer-expired" }, + { 11, 25, "control-failed-to-execute" }, + { 12, 16, "system-not-ready" }, + { 13, 11, "unspecified" }, + { 14, 33, "ric-subscription-end-time-expired" }, + { 15, 33, "ric-subscription-end-time-invalid" }, + { 16, 24, "duplicate-ric-request-id" }, + { 17, 24, "eventTriggerNotSupported" }, + { 18, 33, "requested-information-unavailable" }, + { 19, 27, "invalid-information-request" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRICrequest_enum2value_1[] = { + 1, /* action-not-supported(1) */ + 11, /* control-failed-to-execute(11) */ + 8, /* control-message-invalid(8) */ + 10, /* control-timer-expired(10) */ + 3, /* duplicate-action(3) */ + 4, /* duplicate-event-trigger(4) */ + 16, /* duplicate-ric-request-id(16) */ + 17, /* eventTriggerNotSupported(17) */ + 2, /* excessive-actions(2) */ + 5, /* function-resource-limit(5) */ + 7, /* inconsistent-action-subsequent-action-sequence(7) */ + 19, /* invalid-information-request(19) */ + 0, /* ran-function-id-invalid(0) */ + 6, /* request-id-unknown(6) */ + 18, /* requested-information-unavailable(18) */ + 9, /* ric-call-process-id-invalid(9) */ + 14, /* ric-subscription-end-time-expired(14) */ + 15, /* ric-subscription-end-time-invalid(15) */ + 12, /* system-not-ready(12) */ + 13 /* unspecified(13) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRICrequest_specs_1 = { + asn_MAP_CauseRICrequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRICrequest_enum2value_1, /* N => "tag"; sorted by N */ + 20, /* Number of elements in the maps */ + 15, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRICrequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRICrequest = { + "CauseRICrequest", + "CauseRICrequest", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRICrequest_tags_1, + sizeof(asn_DEF_CauseRICrequest_tags_1) + /sizeof(asn_DEF_CauseRICrequest_tags_1[0]), /* 1 */ + asn_DEF_CauseRICrequest_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRICrequest_tags_1) + /sizeof(asn_DEF_CauseRICrequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CauseRICrequest_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRICrequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CauseRICrequest.h b/e2sim/asn1c/CauseRICrequest.h new file mode 100644 index 0000000..6499c1a --- /dev/null +++ b/e2sim/asn1c/CauseRICrequest.h @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CauseRICrequest_H_ +#define _CauseRICrequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRICrequest { + CauseRICrequest_ran_function_id_invalid = 0, + CauseRICrequest_action_not_supported = 1, + CauseRICrequest_excessive_actions = 2, + CauseRICrequest_duplicate_action = 3, + CauseRICrequest_duplicate_event_trigger = 4, + CauseRICrequest_function_resource_limit = 5, + CauseRICrequest_request_id_unknown = 6, + CauseRICrequest_inconsistent_action_subsequent_action_sequence = 7, + CauseRICrequest_control_message_invalid = 8, + CauseRICrequest_ric_call_process_id_invalid = 9, + CauseRICrequest_control_timer_expired = 10, + CauseRICrequest_control_failed_to_execute = 11, + CauseRICrequest_system_not_ready = 12, + CauseRICrequest_unspecified = 13, + /* + * Enumeration is extensible + */ + CauseRICrequest_ric_subscription_end_time_expired = 14, + CauseRICrequest_ric_subscription_end_time_invalid = 15, + CauseRICrequest_duplicate_ric_request_id = 16, + CauseRICrequest_eventTriggerNotSupported = 17, + CauseRICrequest_requested_information_unavailable = 18, + CauseRICrequest_invalid_information_request = 19 +} e_CauseRICrequest; + +/* CauseRICrequest */ +typedef long CauseRICrequest_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRICrequest_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRICrequest; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRICrequest_specs_1; +asn_struct_free_f CauseRICrequest_free; +asn_struct_print_f CauseRICrequest_print; +asn_constr_check_f CauseRICrequest_constraint; +ber_type_decoder_f CauseRICrequest_decode_ber; +der_type_encoder_f CauseRICrequest_encode_der; +xer_type_decoder_f CauseRICrequest_decode_xer; +xer_type_encoder_f CauseRICrequest_encode_xer; +jer_type_encoder_f CauseRICrequest_encode_jer; +per_type_decoder_f CauseRICrequest_decode_uper; +per_type_encoder_f CauseRICrequest_encode_uper; +per_type_decoder_f CauseRICrequest_decode_aper; +per_type_encoder_f CauseRICrequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRICrequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CauseRICservice.c b/e2sim/asn1c/CauseRICservice.c new file mode 100644 index 0000000..5cc27b0 --- /dev/null +++ b/e2sim/asn1c/CauseRICservice.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CauseRICservice.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_CauseRICservice_value2enum_1[] = { + { 0, 26, "ran-function-not-supported" }, + { 1, 19, "excessive-functions" }, + { 2, 18, "ric-resource-limit" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRICservice_enum2value_1[] = { + 1, /* excessive-functions(1) */ + 0, /* ran-function-not-supported(0) */ + 2 /* ric-resource-limit(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1 = { + asn_MAP_CauseRICservice_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRICservice_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRICservice_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRICservice = { + "CauseRICservice", + "CauseRICservice", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRICservice_tags_1, + sizeof(asn_DEF_CauseRICservice_tags_1) + /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ + asn_DEF_CauseRICservice_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRICservice_tags_1) + /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CauseRICservice_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRICservice_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CauseRICservice.h b/e2sim/asn1c/CauseRICservice.h new file mode 100644 index 0000000..a082d55 --- /dev/null +++ b/e2sim/asn1c/CauseRICservice.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CauseRICservice_H_ +#define _CauseRICservice_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRICservice { + CauseRICservice_ran_function_not_supported = 0, + CauseRICservice_excessive_functions = 1, + CauseRICservice_ric_resource_limit = 2 + /* + * Enumeration is extensible + */ +} e_CauseRICservice; + +/* CauseRICservice */ +typedef long CauseRICservice_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRICservice; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1; +asn_struct_free_f CauseRICservice_free; +asn_struct_print_f CauseRICservice_print; +asn_constr_check_f CauseRICservice_constraint; +ber_type_decoder_f CauseRICservice_decode_ber; +der_type_encoder_f CauseRICservice_encode_der; +xer_type_decoder_f CauseRICservice_decode_xer; +xer_type_encoder_f CauseRICservice_encode_xer; +jer_type_encoder_f CauseRICservice_encode_jer; +per_type_decoder_f CauseRICservice_decode_uper; +per_type_encoder_f CauseRICservice_encode_uper; +per_type_decoder_f CauseRICservice_decode_aper; +per_type_encoder_f CauseRICservice_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRICservice_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CauseTransport.c b/e2sim/asn1c/CauseTransport.c new file mode 100644 index 0000000..be78340 --- /dev/null +++ b/e2sim/asn1c/CauseTransport.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CauseTransport.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = { + { 0, 11, "unspecified" }, + { 1, 30, "transport-resource-unavailable" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = { + 1, /* transport-resource-unavailable(1) */ + 0 /* unspecified(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = { + asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseTransport = { + "CauseTransport", + "CauseTransport", + &asn_OP_NativeEnumerated, + asn_DEF_CauseTransport_tags_1, + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + asn_DEF_CauseTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CauseTransport_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseTransport_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CauseTransport.h b/e2sim/asn1c/CauseTransport.h new file mode 100644 index 0000000..33b7f12 --- /dev/null +++ b/e2sim/asn1c/CauseTransport.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CauseTransport_H_ +#define _CauseTransport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseTransport { + CauseTransport_unspecified = 0, + CauseTransport_transport_resource_unavailable = 1 + /* + * Enumeration is extensible + */ +} e_CauseTransport; + +/* CauseTransport */ +typedef long CauseTransport_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseTransport_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseTransport; +extern const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1; +asn_struct_free_f CauseTransport_free; +asn_struct_print_f CauseTransport_print; +asn_constr_check_f CauseTransport_constraint; +ber_type_decoder_f CauseTransport_decode_ber; +der_type_encoder_f CauseTransport_encode_der; +xer_type_decoder_f CauseTransport_decode_xer; +xer_type_encoder_f CauseTransport_encode_xer; +jer_type_encoder_f CauseTransport_encode_jer; +per_type_decoder_f CauseTransport_decode_uper; +per_type_encoder_f CauseTransport_encode_uper; +per_type_decoder_f CauseTransport_decode_aper; +per_type_encoder_f CauseTransport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseTransport_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CoreCPID.c b/e2sim/asn1c/CoreCPID.c new file mode 100644 index 0000000..2768aa2 --- /dev/null +++ b/e2sim/asn1c/CoreCPID.c @@ -0,0 +1,90 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CoreCPID.h" + +#include "GUAMI.h" +#include "GUMMEI.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_CoreCPID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_CoreCPID_1[] = { + { ATF_POINTER, 0, offsetof(struct CoreCPID, choice.fiveGC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GUAMI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "fiveGC" + }, + { ATF_POINTER, 0, offsetof(struct CoreCPID, choice.ePC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GUMMEI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ePC" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_CoreCPID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveGC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ePC */ +}; +static asn_CHOICE_specifics_t asn_SPC_CoreCPID_specs_1 = { + sizeof(struct CoreCPID), + offsetof(struct CoreCPID, _asn_ctx), + offsetof(struct CoreCPID, present), + sizeof(((struct CoreCPID *)0)->present), + asn_MAP_CoreCPID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_CoreCPID = { + "CoreCPID", + "CoreCPID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CoreCPID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_CoreCPID_1, + 2, /* Elements count */ + &asn_SPC_CoreCPID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CoreCPID.h b/e2sim/asn1c/CoreCPID.h new file mode 100644 index 0000000..8376c20 --- /dev/null +++ b/e2sim/asn1c/CoreCPID.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CoreCPID_H_ +#define _CoreCPID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CoreCPID_PR { + CoreCPID_PR_NOTHING, /* No components present */ + CoreCPID_PR_fiveGC, + CoreCPID_PR_ePC + /* Extensions may appear below */ + +} CoreCPID_PR; + +/* Forward declarations */ +struct GUAMI; +struct GUMMEI; + +/* CoreCPID */ +typedef struct CoreCPID { + CoreCPID_PR present; + union CoreCPID_u { + struct GUAMI *fiveGC; + struct GUMMEI *ePC; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoreCPID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoreCPID; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoreCPID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/Criticality.c b/e2sim/asn1c/Criticality.c new file mode 100644 index 0000000..903f268 --- /dev/null +++ b/e2sim/asn1c/Criticality.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "Criticality.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Criticality_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = { + { 0, 6, "reject" }, + { 1, 6, "ignore" }, + { 2, 6, "notify" } +}; +static const unsigned int asn_MAP_Criticality_enum2value_1[] = { + 1, /* ignore(1) */ + 2, /* notify(2) */ + 0 /* reject(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = { + asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Criticality = { + "Criticality", + "Criticality", + &asn_OP_NativeEnumerated, + asn_DEF_Criticality_tags_1, + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + asn_DEF_Criticality_tags_1, /* Same as above */ + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Criticality_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Criticality_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/Criticality.h b/e2sim/asn1c/Criticality.h new file mode 100644 index 0000000..11a5afb --- /dev/null +++ b/e2sim/asn1c/Criticality.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _Criticality_H_ +#define _Criticality_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Criticality { + Criticality_reject = 0, + Criticality_ignore = 1, + Criticality_notify = 2 +} e_Criticality; + +/* Criticality */ +typedef long Criticality_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Criticality_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Criticality; +extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1; +asn_struct_free_f Criticality_free; +asn_struct_print_f Criticality_print; +asn_constr_check_f Criticality_constraint; +ber_type_decoder_f Criticality_decode_ber; +der_type_encoder_f Criticality_encode_der; +xer_type_decoder_f Criticality_decode_xer; +xer_type_encoder_f Criticality_encode_xer; +jer_type_encoder_f Criticality_encode_jer; +per_type_decoder_f Criticality_decode_uper; +per_type_encoder_f Criticality_encode_uper; +per_type_decoder_f Criticality_decode_aper; +per_type_encoder_f Criticality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Criticality_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CriticalityDiagnostics-IE-Item.c b/e2sim/asn1c/CriticalityDiagnostics-IE-Item.c new file mode 100644 index 0000000..3e1cc21 --- /dev/null +++ b/e2sim/asn1c/CriticalityDiagnostics-IE-Item.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CriticalityDiagnostics-IE-Item.h" + +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iECriticality), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "iECriticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iE_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "iE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, typeOfError), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TypeOfError, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "typeOfError" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* typeOfError */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 = { + sizeof(struct CriticalityDiagnostics_IE_Item), + offsetof(struct CriticalityDiagnostics_IE_Item, _asn_ctx), + asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item = { + "CriticalityDiagnostics-IE-Item", + "CriticalityDiagnostics-IE-Item", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CriticalityDiagnostics_IE_Item_1, + 3, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CriticalityDiagnostics-IE-Item.h b/e2sim/asn1c/CriticalityDiagnostics-IE-Item.h new file mode 100644 index 0000000..dbb3df0 --- /dev/null +++ b/e2sim/asn1c/CriticalityDiagnostics-IE-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CriticalityDiagnostics_IE_Item_H_ +#define _CriticalityDiagnostics_IE_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Criticality.h" +#include "ProtocolIE-ID.h" +#include "TypeOfError.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CriticalityDiagnostics-IE-Item */ +typedef struct CriticalityDiagnostics_IE_Item { + Criticality_t iECriticality; + ProtocolIE_ID_t iE_ID; + TypeOfError_t typeOfError; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_IE_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CriticalityDiagnostics-IE-List.c b/e2sim/asn1c/CriticalityDiagnostics-IE-List.c new file mode 100644 index 0000000..679af8c --- /dev/null +++ b/e2sim/asn1c/CriticalityDiagnostics-IE-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CriticalityDiagnostics-IE-List.h" + +#include "CriticalityDiagnostics-IE-Item.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics_IE_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = { + sizeof(struct CriticalityDiagnostics_IE_List), + offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = { + "CriticalityDiagnostics-IE-List", + "CriticalityDiagnostics-IE-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_CriticalityDiagnostics_IE_List_1, + 1, /* Single element */ + &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CriticalityDiagnostics-IE-List.h b/e2sim/asn1c/CriticalityDiagnostics-IE-List.h new file mode 100644 index 0000000..f92da52 --- /dev/null +++ b/e2sim/asn1c/CriticalityDiagnostics-IE-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CriticalityDiagnostics_IE_List_H_ +#define _CriticalityDiagnostics_IE_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CriticalityDiagnostics_IE_Item; + +/* CriticalityDiagnostics-IE-List */ +typedef struct CriticalityDiagnostics_IE_List { + A_SEQUENCE_OF(struct CriticalityDiagnostics_IE_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List; +extern asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[1]; +extern asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_IE_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/CriticalityDiagnostics.c b/e2sim/asn1c/CriticalityDiagnostics.c new file mode 100644 index 0000000..efa02c8 --- /dev/null +++ b/e2sim/asn1c/CriticalityDiagnostics.c @@ -0,0 +1,142 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "CriticalityDiagnostics.h" + +#include "RICrequestID.h" +#include "CriticalityDiagnostics-IE-List.h" +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = { + { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TriggeringMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "triggeringMessage" + }, + { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "procedureCriticality" + }, + { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, ricRequestorID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricRequestorID" + }, + { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CriticalityDiagnostics_IE_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "iEsCriticalityDiagnostics" + }, +}; +static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ricRequestorID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iEsCriticalityDiagnostics */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = { + sizeof(struct CriticalityDiagnostics), + offsetof(struct CriticalityDiagnostics, _asn_ctx), + asn_MAP_CriticalityDiagnostics_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = { + "CriticalityDiagnostics", + "CriticalityDiagnostics", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CriticalityDiagnostics_1, + 5, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/CriticalityDiagnostics.h b/e2sim/asn1c/CriticalityDiagnostics.h new file mode 100644 index 0000000..9c49e96 --- /dev/null +++ b/e2sim/asn1c/CriticalityDiagnostics.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _CriticalityDiagnostics_H_ +#define _CriticalityDiagnostics_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "TriggeringMessage.h" +#include "Criticality.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICrequestID; +struct CriticalityDiagnostics_IE_List; + +/* CriticalityDiagnostics */ +typedef struct CriticalityDiagnostics { + ProcedureCode_t *procedureCode; /* OPTIONAL */ + TriggeringMessage_t *triggeringMessage; /* OPTIONAL */ + Criticality_t *procedureCriticality; /* OPTIONAL */ + struct RICrequestID *ricRequestorID; /* OPTIONAL */ + struct CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/DistMeasurementBinRangeItem.c b/e2sim/asn1c/DistMeasurementBinRangeItem.c new file mode 100644 index 0000000..63f6393 --- /dev/null +++ b/e2sim/asn1c/DistMeasurementBinRangeItem.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "DistMeasurementBinRangeItem.h" + +asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DistMeasurementBinRangeItem, measType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MeasurementType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measType" + }, + { ATF_NOFLAGS, 0, offsetof(struct DistMeasurementBinRangeItem, binRangeDef), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BinRangeDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "binRangeDef" + }, +}; +static const ber_tlv_tag_t asn_DEF_DistMeasurementBinRangeItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DistMeasurementBinRangeItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* binRangeDef */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DistMeasurementBinRangeItem_specs_1 = { + sizeof(struct DistMeasurementBinRangeItem), + offsetof(struct DistMeasurementBinRangeItem, _asn_ctx), + asn_MAP_DistMeasurementBinRangeItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeItem = { + "DistMeasurementBinRangeItem", + "DistMeasurementBinRangeItem", + &asn_OP_SEQUENCE, + asn_DEF_DistMeasurementBinRangeItem_tags_1, + sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1) + /sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1[0]), /* 1 */ + asn_DEF_DistMeasurementBinRangeItem_tags_1, /* Same as above */ + sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1) + /sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DistMeasurementBinRangeItem_1, + 2, /* Elements count */ + &asn_SPC_DistMeasurementBinRangeItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/DistMeasurementBinRangeItem.h b/e2sim/asn1c/DistMeasurementBinRangeItem.h new file mode 100644 index 0000000..50d9874 --- /dev/null +++ b/e2sim/asn1c/DistMeasurementBinRangeItem.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _DistMeasurementBinRangeItem_H_ +#define _DistMeasurementBinRangeItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementType.h" +#include "BinRangeDefinition.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DistMeasurementBinRangeItem */ +typedef struct DistMeasurementBinRangeItem { + MeasurementType_t measType; + BinRangeDefinition_t binRangeDef; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DistMeasurementBinRangeItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeItem; +extern asn_SEQUENCE_specifics_t asn_SPC_DistMeasurementBinRangeItem_specs_1; +extern asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DistMeasurementBinRangeItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/DistMeasurementBinRangeList.c b/e2sim/asn1c/DistMeasurementBinRangeList.c new file mode 100644 index 0000000..a80af05 --- /dev/null +++ b/e2sim/asn1c/DistMeasurementBinRangeList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "DistMeasurementBinRangeList.h" + +#include "DistMeasurementBinRangeItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DistMeasurementBinRangeList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DistMeasurementBinRangeItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_DistMeasurementBinRangeList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_DistMeasurementBinRangeList_specs_1 = { + sizeof(struct DistMeasurementBinRangeList), + offsetof(struct DistMeasurementBinRangeList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeList = { + "DistMeasurementBinRangeList", + "DistMeasurementBinRangeList", + &asn_OP_SEQUENCE_OF, + asn_DEF_DistMeasurementBinRangeList_tags_1, + sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1) + /sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1[0]), /* 1 */ + asn_DEF_DistMeasurementBinRangeList_tags_1, /* Same as above */ + sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1) + /sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DistMeasurementBinRangeList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_DistMeasurementBinRangeList_1, + 1, /* Single element */ + &asn_SPC_DistMeasurementBinRangeList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/DistMeasurementBinRangeList.h b/e2sim/asn1c/DistMeasurementBinRangeList.h new file mode 100644 index 0000000..4716e1f --- /dev/null +++ b/e2sim/asn1c/DistMeasurementBinRangeList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _DistMeasurementBinRangeList_H_ +#define _DistMeasurementBinRangeList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct DistMeasurementBinRangeItem; + +/* DistMeasurementBinRangeList */ +typedef struct DistMeasurementBinRangeList { + A_SEQUENCE_OF(struct DistMeasurementBinRangeItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DistMeasurementBinRangeList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeList; +extern asn_SET_OF_specifics_t asn_SPC_DistMeasurementBinRangeList_specs_1; +extern asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeList_1[1]; +extern asn_per_constraints_t asn_PER_type_DistMeasurementBinRangeList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _DistMeasurementBinRangeList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E-UTRA-ARFCN.c b/e2sim/asn1c/E-UTRA-ARFCN.c new file mode 100644 index 0000000..65b3503 --- /dev/null +++ b/e2sim/asn1c/E-UTRA-ARFCN.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E-UTRA-ARFCN.h" + +int +E_UTRA_ARFCN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E_UTRA_ARFCN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_E_UTRA_ARFCN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_UTRA_ARFCN = { + "E-UTRA-ARFCN", + "E-UTRA-ARFCN", + &asn_OP_NativeInteger, + asn_DEF_E_UTRA_ARFCN_tags_1, + sizeof(asn_DEF_E_UTRA_ARFCN_tags_1) + /sizeof(asn_DEF_E_UTRA_ARFCN_tags_1[0]), /* 1 */ + asn_DEF_E_UTRA_ARFCN_tags_1, /* Same as above */ + sizeof(asn_DEF_E_UTRA_ARFCN_tags_1) + /sizeof(asn_DEF_E_UTRA_ARFCN_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E_UTRA_ARFCN_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + E_UTRA_ARFCN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/E-UTRA-ARFCN.h b/e2sim/asn1c/E-UTRA-ARFCN.h new file mode 100644 index 0000000..813be9f --- /dev/null +++ b/e2sim/asn1c/E-UTRA-ARFCN.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E_UTRA_ARFCN_H_ +#define _E_UTRA_ARFCN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E-UTRA-ARFCN */ +typedef long E_UTRA_ARFCN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E_UTRA_ARFCN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E_UTRA_ARFCN; +asn_struct_free_f E_UTRA_ARFCN_free; +asn_struct_print_f E_UTRA_ARFCN_print; +asn_constr_check_f E_UTRA_ARFCN_constraint; +ber_type_decoder_f E_UTRA_ARFCN_decode_ber; +der_type_encoder_f E_UTRA_ARFCN_encode_der; +xer_type_decoder_f E_UTRA_ARFCN_decode_xer; +xer_type_encoder_f E_UTRA_ARFCN_encode_xer; +jer_type_encoder_f E_UTRA_ARFCN_encode_jer; +per_type_decoder_f E_UTRA_ARFCN_decode_uper; +per_type_encoder_f E_UTRA_ARFCN_encode_uper; +per_type_decoder_f E_UTRA_ARFCN_decode_aper; +per_type_encoder_f E_UTRA_ARFCN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_UTRA_ARFCN_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E-UTRA-PCI.c b/e2sim/asn1c/E-UTRA-PCI.c new file mode 100644 index 0000000..599fea5 --- /dev/null +++ b/e2sim/asn1c/E-UTRA-PCI.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E-UTRA-PCI.h" + +int +E_UTRA_PCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 503L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E_UTRA_PCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 9, 9, 0, 503 } /* (0..503,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_E_UTRA_PCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_UTRA_PCI = { + "E-UTRA-PCI", + "E-UTRA-PCI", + &asn_OP_NativeInteger, + asn_DEF_E_UTRA_PCI_tags_1, + sizeof(asn_DEF_E_UTRA_PCI_tags_1) + /sizeof(asn_DEF_E_UTRA_PCI_tags_1[0]), /* 1 */ + asn_DEF_E_UTRA_PCI_tags_1, /* Same as above */ + sizeof(asn_DEF_E_UTRA_PCI_tags_1) + /sizeof(asn_DEF_E_UTRA_PCI_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E_UTRA_PCI_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + E_UTRA_PCI_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/E-UTRA-PCI.h b/e2sim/asn1c/E-UTRA-PCI.h new file mode 100644 index 0000000..6e7e5ba --- /dev/null +++ b/e2sim/asn1c/E-UTRA-PCI.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E_UTRA_PCI_H_ +#define _E_UTRA_PCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E-UTRA-PCI */ +typedef long E_UTRA_PCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E_UTRA_PCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E_UTRA_PCI; +asn_struct_free_f E_UTRA_PCI_free; +asn_struct_print_f E_UTRA_PCI_print; +asn_constr_check_f E_UTRA_PCI_constraint; +ber_type_decoder_f E_UTRA_PCI_decode_ber; +der_type_encoder_f E_UTRA_PCI_encode_der; +xer_type_decoder_f E_UTRA_PCI_decode_xer; +xer_type_encoder_f E_UTRA_PCI_encode_xer; +jer_type_encoder_f E_UTRA_PCI_encode_jer; +per_type_decoder_f E_UTRA_PCI_decode_uper; +per_type_encoder_f E_UTRA_PCI_encode_uper; +per_type_decoder_f E_UTRA_PCI_decode_aper; +per_type_encoder_f E_UTRA_PCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_UTRA_PCI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E-UTRA-TAC.c b/e2sim/asn1c/E-UTRA-TAC.c new file mode 100644 index 0000000..b68cb59 --- /dev/null +++ b/e2sim/asn1c/E-UTRA-TAC.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E-UTRA-TAC.h" + +int +E_UTRA_TAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_E_UTRA_TAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_E_UTRA_TAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_UTRA_TAC = { + "E-UTRA-TAC", + "E-UTRA-TAC", + &asn_OP_OCTET_STRING, + asn_DEF_E_UTRA_TAC_tags_1, + sizeof(asn_DEF_E_UTRA_TAC_tags_1) + /sizeof(asn_DEF_E_UTRA_TAC_tags_1[0]), /* 1 */ + asn_DEF_E_UTRA_TAC_tags_1, /* Same as above */ + sizeof(asn_DEF_E_UTRA_TAC_tags_1) + /sizeof(asn_DEF_E_UTRA_TAC_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E_UTRA_TAC_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + E_UTRA_TAC_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E-UTRA-TAC.h b/e2sim/asn1c/E-UTRA-TAC.h new file mode 100644 index 0000000..60cd223 --- /dev/null +++ b/e2sim/asn1c/E-UTRA-TAC.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E_UTRA_TAC_H_ +#define _E_UTRA_TAC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E-UTRA-TAC */ +typedef OCTET_STRING_t E_UTRA_TAC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_UTRA_TAC; +asn_struct_free_f E_UTRA_TAC_free; +asn_struct_print_f E_UTRA_TAC_print; +asn_constr_check_f E_UTRA_TAC_constraint; +ber_type_decoder_f E_UTRA_TAC_decode_ber; +der_type_encoder_f E_UTRA_TAC_encode_der; +xer_type_decoder_f E_UTRA_TAC_decode_xer; +xer_type_encoder_f E_UTRA_TAC_encode_xer; +jer_type_encoder_f E_UTRA_TAC_encode_jer; +per_type_decoder_f E_UTRA_TAC_decode_uper; +per_type_encoder_f E_UTRA_TAC_encode_uper; +per_type_decoder_f E_UTRA_TAC_decode_aper; +per_type_encoder_f E_UTRA_TAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_UTRA_TAC_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2AP-IEs_ENB-ID.c b/e2sim/asn1c/E2AP-IEs_ENB-ID.c new file mode 100644 index 0000000..89757e6 --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_ENB-ID.c @@ -0,0 +1,276 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2AP-IEs_ENB-ID.h" + +static int +memb_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2AP_IEs_ENB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2AP_IEs_ENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2AP_IEs_ENB_ID, choice.macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_macro_eNB_ID_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_macro_eNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2AP_IEs_ENB_ID, choice.home_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_home_eNB_ID_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_home_eNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "home-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2AP_IEs_ENB_ID, choice.short_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_short_Macro_eNB_ID_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_short_Macro_eNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "short-Macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2AP_IEs_ENB_ID, choice.long_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_long_Macro_eNB_ID_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_long_Macro_eNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "long-Macro-eNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2AP_IEs_ENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_E2AP_IEs_ENB_ID_specs_1 = { + sizeof(struct E2AP_IEs_ENB_ID), + offsetof(struct E2AP_IEs_ENB_ID, _asn_ctx), + offsetof(struct E2AP_IEs_ENB_ID, present), + sizeof(((struct E2AP_IEs_ENB_ID *)0)->present), + asn_MAP_E2AP_IEs_ENB_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_ENB_ID = { + "ENB-ID", + "ENB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2AP_IEs_ENB_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_E2AP_IEs_ENB_ID_1, + 4, /* Elements count */ + &asn_SPC_E2AP_IEs_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2AP-IEs_ENB-ID.h b/e2sim/asn1c/E2AP-IEs_ENB-ID.h new file mode 100644 index 0000000..fabb332 --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_ENB-ID.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2AP_IEs_ENB_ID_H_ +#define _E2AP_IEs_ENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2AP_IEs_ENB_ID_PR { + E2AP_IEs_ENB_ID_PR_NOTHING, /* No components present */ + E2AP_IEs_ENB_ID_PR_macro_eNB_ID, + E2AP_IEs_ENB_ID_PR_home_eNB_ID, + /* Extensions may appear below */ + E2AP_IEs_ENB_ID_PR_short_Macro_eNB_ID, + E2AP_IEs_ENB_ID_PR_long_Macro_eNB_ID +} E2AP_IEs_ENB_ID_PR; + +/* E2AP-IEs_ENB-ID */ +typedef struct E2AP_IEs_ENB_ID { + E2AP_IEs_ENB_ID_PR present; + union E2AP_IEs_ENB_ID_u { + BIT_STRING_t macro_eNB_ID; + BIT_STRING_t home_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + BIT_STRING_t short_Macro_eNB_ID; + BIT_STRING_t long_Macro_eNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2AP_IEs_ENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_ENB_ID; +extern asn_CHOICE_specifics_t asn_SPC_E2AP_IEs_ENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_E2AP_IEs_ENB_ID_1[4]; +extern asn_per_constraints_t asn_PER_type_E2AP_IEs_ENB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_IEs_ENB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.c b/e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.c new file mode 100644 index 0000000..7a7977d --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2AP-IEs_GNB-CU-UP-ID.h" + +int +E2AP_IEs_GNB_CU_UP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0L && value <= 68719476735L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2AP_IEs_GNB_CU_UP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_E2AP_IEs_GNB_CU_UP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_GNB_CU_UP_ID = { + "GNB-CU-UP-ID", + "GNB-CU-UP-ID", + &asn_OP_INTEGER, + asn_DEF_E2AP_IEs_GNB_CU_UP_ID_tags_1, + sizeof(asn_DEF_E2AP_IEs_GNB_CU_UP_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_GNB_CU_UP_ID_tags_1[0]), /* 1 */ + asn_DEF_E2AP_IEs_GNB_CU_UP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2AP_IEs_GNB_CU_UP_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_GNB_CU_UP_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2AP_IEs_GNB_CU_UP_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + E2AP_IEs_GNB_CU_UP_ID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.h b/e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.h new file mode 100644 index 0000000..19f5a71 --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2AP_IEs_GNB_CU_UP_ID_H_ +#define _E2AP_IEs_GNB_CU_UP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2AP-IEs_GNB-CU-UP-ID */ +typedef INTEGER_t E2AP_IEs_GNB_CU_UP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E2AP_IEs_GNB_CU_UP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_GNB_CU_UP_ID; +asn_struct_free_f E2AP_IEs_GNB_CU_UP_ID_free; +asn_struct_print_f E2AP_IEs_GNB_CU_UP_ID_print; +asn_constr_check_f E2AP_IEs_GNB_CU_UP_ID_constraint; +ber_type_decoder_f E2AP_IEs_GNB_CU_UP_ID_decode_ber; +der_type_encoder_f E2AP_IEs_GNB_CU_UP_ID_encode_der; +xer_type_decoder_f E2AP_IEs_GNB_CU_UP_ID_decode_xer; +xer_type_encoder_f E2AP_IEs_GNB_CU_UP_ID_encode_xer; +jer_type_encoder_f E2AP_IEs_GNB_CU_UP_ID_encode_jer; +per_type_decoder_f E2AP_IEs_GNB_CU_UP_ID_decode_uper; +per_type_encoder_f E2AP_IEs_GNB_CU_UP_ID_encode_uper; +per_type_decoder_f E2AP_IEs_GNB_CU_UP_ID_decode_aper; +per_type_encoder_f E2AP_IEs_GNB_CU_UP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_IEs_GNB_CU_UP_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2AP-IEs_GNB-DU-ID.c b/e2sim/asn1c/E2AP-IEs_GNB-DU-ID.c new file mode 100644 index 0000000..291568d --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_GNB-DU-ID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2AP-IEs_GNB-DU-ID.h" + +int +E2AP_IEs_GNB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0L && value <= 68719476735L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2AP_IEs_GNB_DU_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_E2AP_IEs_GNB_DU_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_GNB_DU_ID = { + "GNB-DU-ID", + "GNB-DU-ID", + &asn_OP_INTEGER, + asn_DEF_E2AP_IEs_GNB_DU_ID_tags_1, + sizeof(asn_DEF_E2AP_IEs_GNB_DU_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_GNB_DU_ID_tags_1[0]), /* 1 */ + asn_DEF_E2AP_IEs_GNB_DU_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2AP_IEs_GNB_DU_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_GNB_DU_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2AP_IEs_GNB_DU_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + E2AP_IEs_GNB_DU_ID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/E2AP-IEs_GNB-DU-ID.h b/e2sim/asn1c/E2AP-IEs_GNB-DU-ID.h new file mode 100644 index 0000000..62f034a --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_GNB-DU-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2AP_IEs_GNB_DU_ID_H_ +#define _E2AP_IEs_GNB_DU_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2AP-IEs_GNB-DU-ID */ +typedef INTEGER_t E2AP_IEs_GNB_DU_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E2AP_IEs_GNB_DU_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_GNB_DU_ID; +asn_struct_free_f E2AP_IEs_GNB_DU_ID_free; +asn_struct_print_f E2AP_IEs_GNB_DU_ID_print; +asn_constr_check_f E2AP_IEs_GNB_DU_ID_constraint; +ber_type_decoder_f E2AP_IEs_GNB_DU_ID_decode_ber; +der_type_encoder_f E2AP_IEs_GNB_DU_ID_encode_der; +xer_type_decoder_f E2AP_IEs_GNB_DU_ID_decode_xer; +xer_type_encoder_f E2AP_IEs_GNB_DU_ID_encode_xer; +jer_type_encoder_f E2AP_IEs_GNB_DU_ID_encode_jer; +per_type_decoder_f E2AP_IEs_GNB_DU_ID_decode_uper; +per_type_encoder_f E2AP_IEs_GNB_DU_ID_encode_uper; +per_type_decoder_f E2AP_IEs_GNB_DU_ID_decode_aper; +per_type_encoder_f E2AP_IEs_GNB_DU_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_IEs_GNB_DU_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2AP-IEs_GlobalENB-ID.c b/e2sim/asn1c/E2AP-IEs_GlobalENB-ID.c new file mode 100644 index 0000000..a95e2b6 --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_GlobalENB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2AP-IEs_GlobalENB-ID.h" + +asn_TYPE_member_t asn_MBR_E2AP_IEs_GlobalENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2AP_IEs_GlobalENB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2AP_IEs_GlobalENB_ID, eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_ENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2AP_IEs_GlobalENB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2AP_IEs_GlobalENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2AP_IEs_GlobalENB_ID_specs_1 = { + sizeof(struct E2AP_IEs_GlobalENB_ID), + offsetof(struct E2AP_IEs_GlobalENB_ID, _asn_ctx), + asn_MAP_E2AP_IEs_GlobalENB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_GlobalENB_ID = { + "GlobalENB-ID", + "GlobalENB-ID", + &asn_OP_SEQUENCE, + asn_DEF_E2AP_IEs_GlobalENB_ID_tags_1, + sizeof(asn_DEF_E2AP_IEs_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_GlobalENB_ID_tags_1[0]), /* 1 */ + asn_DEF_E2AP_IEs_GlobalENB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2AP_IEs_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_GlobalENB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2AP_IEs_GlobalENB_ID_1, + 2, /* Elements count */ + &asn_SPC_E2AP_IEs_GlobalENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2AP-IEs_GlobalENB-ID.h b/e2sim/asn1c/E2AP-IEs_GlobalENB-ID.h new file mode 100644 index 0000000..9c4caa0 --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_GlobalENB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2AP_IEs_GlobalENB_ID_H_ +#define _E2AP_IEs_GlobalENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "E2AP-IEs_ENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2AP-IEs_GlobalENB-ID */ +typedef struct E2AP_IEs_GlobalENB_ID { + PLMN_Identity_t pLMN_Identity; + E2AP_IEs_ENB_ID_t eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2AP_IEs_GlobalENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_GlobalENB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_E2AP_IEs_GlobalENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_E2AP_IEs_GlobalENB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_IEs_GlobalENB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.c b/e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.c new file mode 100644 index 0000000..9cbf177 --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2AP-IEs_GlobalenGNB-ID.h" + +asn_TYPE_member_t asn_MBR_E2AP_IEs_GlobalenGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2AP_IEs_GlobalenGNB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2AP_IEs_GlobalenGNB_ID, gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENGNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2AP_IEs_GlobalenGNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2AP_IEs_GlobalenGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2AP_IEs_GlobalenGNB_ID_specs_1 = { + sizeof(struct E2AP_IEs_GlobalenGNB_ID), + offsetof(struct E2AP_IEs_GlobalenGNB_ID, _asn_ctx), + asn_MAP_E2AP_IEs_GlobalenGNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_GlobalenGNB_ID = { + "GlobalenGNB-ID", + "GlobalenGNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_E2AP_IEs_GlobalenGNB_ID_tags_1, + sizeof(asn_DEF_E2AP_IEs_GlobalenGNB_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_GlobalenGNB_ID_tags_1[0]), /* 1 */ + asn_DEF_E2AP_IEs_GlobalenGNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2AP_IEs_GlobalenGNB_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_GlobalenGNB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2AP_IEs_GlobalenGNB_ID_1, + 2, /* Elements count */ + &asn_SPC_E2AP_IEs_GlobalenGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.h b/e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.h new file mode 100644 index 0000000..f8dff82 --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2AP_IEs_GlobalenGNB_ID_H_ +#define _E2AP_IEs_GlobalenGNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENGNB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2AP-IEs_GlobalenGNB-ID */ +typedef struct E2AP_IEs_GlobalenGNB_ID { + PLMN_Identity_t pLMN_Identity; + ENGNB_ID_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2AP_IEs_GlobalenGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_GlobalenGNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_E2AP_IEs_GlobalenGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_E2AP_IEs_GlobalenGNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_IEs_GlobalenGNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.c b/e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.c new file mode 100644 index 0000000..a410c4d --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2AP-IEs_NGENB-DU-ID.h" + +int +E2AP_IEs_NGENB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0L && value <= 68719476735L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2AP_IEs_NGENB_DU_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_E2AP_IEs_NGENB_DU_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_NGENB_DU_ID = { + "NGENB-DU-ID", + "NGENB-DU-ID", + &asn_OP_INTEGER, + asn_DEF_E2AP_IEs_NGENB_DU_ID_tags_1, + sizeof(asn_DEF_E2AP_IEs_NGENB_DU_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_NGENB_DU_ID_tags_1[0]), /* 1 */ + asn_DEF_E2AP_IEs_NGENB_DU_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2AP_IEs_NGENB_DU_ID_tags_1) + /sizeof(asn_DEF_E2AP_IEs_NGENB_DU_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2AP_IEs_NGENB_DU_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + E2AP_IEs_NGENB_DU_ID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.h b/e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.h new file mode 100644 index 0000000..348cfac --- /dev/null +++ b/e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2AP_IEs_NGENB_DU_ID_H_ +#define _E2AP_IEs_NGENB_DU_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2AP-IEs_NGENB-DU-ID */ +typedef INTEGER_t E2AP_IEs_NGENB_DU_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E2AP_IEs_NGENB_DU_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E2AP_IEs_NGENB_DU_ID; +asn_struct_free_f E2AP_IEs_NGENB_DU_ID_free; +asn_struct_print_f E2AP_IEs_NGENB_DU_ID_print; +asn_constr_check_f E2AP_IEs_NGENB_DU_ID_constraint; +ber_type_decoder_f E2AP_IEs_NGENB_DU_ID_decode_ber; +der_type_encoder_f E2AP_IEs_NGENB_DU_ID_encode_der; +xer_type_decoder_f E2AP_IEs_NGENB_DU_ID_decode_xer; +xer_type_encoder_f E2AP_IEs_NGENB_DU_ID_encode_xer; +jer_type_encoder_f E2AP_IEs_NGENB_DU_ID_encode_jer; +per_type_decoder_f E2AP_IEs_NGENB_DU_ID_decode_uper; +per_type_encoder_f E2AP_IEs_NGENB_DU_ID_encode_uper; +per_type_decoder_f E2AP_IEs_NGENB_DU_ID_decode_aper; +per_type_encoder_f E2AP_IEs_NGENB_DU_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_IEs_NGENB_DU_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2AP-PDU.c b/e2sim/asn1c/E2AP-PDU.c new file mode 100644 index 0000000..8e3b43e --- /dev/null +++ b/e2sim/asn1c/E2AP-PDU.c @@ -0,0 +1,109 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "e2ap-epd-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2AP-PDU.h" + +#include "InitiatingMessage.h" +#include "SuccessfulOutcome.h" +#include "UnsuccessfulOutcome.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_E2AP_PDU_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_E2AP_PDU_1[] = { + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.initiatingMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InitiatingMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "initiatingMessage" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.successfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SuccessfulOutcome, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "successfulOutcome" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.unsuccessfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UnsuccessfulOutcome, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "unsuccessfulOutcome" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2AP_PDU_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2AP_PDU_specs_1 = { + sizeof(struct E2AP_PDU), + offsetof(struct E2AP_PDU, _asn_ctx), + offsetof(struct E2AP_PDU, present), + sizeof(((struct E2AP_PDU *)0)->present), + asn_MAP_E2AP_PDU_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_PDU = { + "E2AP-PDU", + "E2AP-PDU", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2AP_PDU_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_E2AP_PDU_1, + 3, /* Elements count */ + &asn_SPC_E2AP_PDU_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2AP-PDU.h b/e2sim/asn1c/E2AP-PDU.h new file mode 100644 index 0000000..148c9da --- /dev/null +++ b/e2sim/asn1c/E2AP-PDU.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "e2ap-epd-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2AP_PDU_H_ +#define _E2AP_PDU_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2AP_PDU_PR { + E2AP_PDU_PR_NOTHING, /* No components present */ + E2AP_PDU_PR_initiatingMessage, + E2AP_PDU_PR_successfulOutcome, + E2AP_PDU_PR_unsuccessfulOutcome + /* Extensions may appear below */ + +} E2AP_PDU_PR; + +/* Forward declarations */ +struct InitiatingMessage; +struct SuccessfulOutcome; +struct UnsuccessfulOutcome; + +/* E2AP-PDU */ +typedef struct E2AP_PDU { + E2AP_PDU_PR present; + union E2AP_PDU_u { + struct InitiatingMessage *initiatingMessage; + struct SuccessfulOutcome *successfulOutcome; + struct UnsuccessfulOutcome *unsuccessfulOutcome; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2AP_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2AP_PDU; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_PDU_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2RemovalFailure.c b/e2sim/asn1c/E2RemovalFailure.c new file mode 100644 index 0000000..a9b812e --- /dev/null +++ b/e2sim/asn1c/E2RemovalFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2RemovalFailure.h" + +asn_TYPE_member_t asn_MBR_E2RemovalFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P38, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2RemovalFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2RemovalFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2RemovalFailure_specs_1 = { + sizeof(struct E2RemovalFailure), + offsetof(struct E2RemovalFailure, _asn_ctx), + asn_MAP_E2RemovalFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2RemovalFailure = { + "E2RemovalFailure", + "E2RemovalFailure", + &asn_OP_SEQUENCE, + asn_DEF_E2RemovalFailure_tags_1, + sizeof(asn_DEF_E2RemovalFailure_tags_1) + /sizeof(asn_DEF_E2RemovalFailure_tags_1[0]), /* 1 */ + asn_DEF_E2RemovalFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_E2RemovalFailure_tags_1) + /sizeof(asn_DEF_E2RemovalFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2RemovalFailure_1, + 1, /* Elements count */ + &asn_SPC_E2RemovalFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2RemovalFailure.h b/e2sim/asn1c/E2RemovalFailure.h new file mode 100644 index 0000000..6059988 --- /dev/null +++ b/e2sim/asn1c/E2RemovalFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2RemovalFailure_H_ +#define _E2RemovalFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2RemovalFailure */ +typedef struct E2RemovalFailure { + ProtocolIE_Container_85P38_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2RemovalFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2RemovalFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_E2RemovalFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_E2RemovalFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2RemovalFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2RemovalRequest.c b/e2sim/asn1c/E2RemovalRequest.c new file mode 100644 index 0000000..1983618 --- /dev/null +++ b/e2sim/asn1c/E2RemovalRequest.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2RemovalRequest.h" + +asn_TYPE_member_t asn_MBR_E2RemovalRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P36, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2RemovalRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2RemovalRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2RemovalRequest_specs_1 = { + sizeof(struct E2RemovalRequest), + offsetof(struct E2RemovalRequest, _asn_ctx), + asn_MAP_E2RemovalRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2RemovalRequest = { + "E2RemovalRequest", + "E2RemovalRequest", + &asn_OP_SEQUENCE, + asn_DEF_E2RemovalRequest_tags_1, + sizeof(asn_DEF_E2RemovalRequest_tags_1) + /sizeof(asn_DEF_E2RemovalRequest_tags_1[0]), /* 1 */ + asn_DEF_E2RemovalRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_E2RemovalRequest_tags_1) + /sizeof(asn_DEF_E2RemovalRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2RemovalRequest_1, + 1, /* Elements count */ + &asn_SPC_E2RemovalRequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2RemovalRequest.h b/e2sim/asn1c/E2RemovalRequest.h new file mode 100644 index 0000000..5d21698 --- /dev/null +++ b/e2sim/asn1c/E2RemovalRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2RemovalRequest_H_ +#define _E2RemovalRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2RemovalRequest */ +typedef struct E2RemovalRequest { + ProtocolIE_Container_85P36_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2RemovalRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2RemovalRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_E2RemovalRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_E2RemovalRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2RemovalRequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2RemovalResponse.c b/e2sim/asn1c/E2RemovalResponse.c new file mode 100644 index 0000000..c48dbb2 --- /dev/null +++ b/e2sim/asn1c/E2RemovalResponse.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2RemovalResponse.h" + +asn_TYPE_member_t asn_MBR_E2RemovalResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P37, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2RemovalResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2RemovalResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2RemovalResponse_specs_1 = { + sizeof(struct E2RemovalResponse), + offsetof(struct E2RemovalResponse, _asn_ctx), + asn_MAP_E2RemovalResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2RemovalResponse = { + "E2RemovalResponse", + "E2RemovalResponse", + &asn_OP_SEQUENCE, + asn_DEF_E2RemovalResponse_tags_1, + sizeof(asn_DEF_E2RemovalResponse_tags_1) + /sizeof(asn_DEF_E2RemovalResponse_tags_1[0]), /* 1 */ + asn_DEF_E2RemovalResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_E2RemovalResponse_tags_1) + /sizeof(asn_DEF_E2RemovalResponse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2RemovalResponse_1, + 1, /* Elements count */ + &asn_SPC_E2RemovalResponse_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2RemovalResponse.h b/e2sim/asn1c/E2RemovalResponse.h new file mode 100644 index 0000000..095ce7e --- /dev/null +++ b/e2sim/asn1c/E2RemovalResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2RemovalResponse_H_ +#define _E2RemovalResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2RemovalResponse */ +typedef struct E2RemovalResponse { + ProtocolIE_Container_85P37_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2RemovalResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2RemovalResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_E2RemovalResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_E2RemovalResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2RemovalResponse_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.c b/e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.c new file mode 100644 index 0000000..248a4c3 --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.c @@ -0,0 +1,276 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-COMMON-IEs_ENB-ID.h" + +static int +memb_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2SM_COMMON_IEs_ENB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2SM_COMMON_IEs_ENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_COMMON_IEs_ENB_ID, choice.macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_macro_eNB_ID_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_macro_eNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_COMMON_IEs_ENB_ID, choice.home_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_home_eNB_ID_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_home_eNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "home-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_COMMON_IEs_ENB_ID, choice.short_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_short_Macro_eNB_ID_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_short_Macro_eNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "short-Macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_COMMON_IEs_ENB_ID, choice.long_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_long_Macro_eNB_ID_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_long_Macro_eNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "long-Macro-eNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_COMMON_IEs_ENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_E2SM_COMMON_IEs_ENB_ID_specs_1 = { + sizeof(struct E2SM_COMMON_IEs_ENB_ID), + offsetof(struct E2SM_COMMON_IEs_ENB_ID, _asn_ctx), + offsetof(struct E2SM_COMMON_IEs_ENB_ID, present), + sizeof(((struct E2SM_COMMON_IEs_ENB_ID *)0)->present), + asn_MAP_E2SM_COMMON_IEs_ENB_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_ENB_ID = { + "ENB-ID", + "ENB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2SM_COMMON_IEs_ENB_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_E2SM_COMMON_IEs_ENB_ID_1, + 4, /* Elements count */ + &asn_SPC_E2SM_COMMON_IEs_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.h b/e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.h new file mode 100644 index 0000000..5ce8cb8 --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_COMMON_IEs_ENB_ID_H_ +#define _E2SM_COMMON_IEs_ENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_COMMON_IEs_ENB_ID_PR { + E2SM_COMMON_IEs_ENB_ID_PR_NOTHING, /* No components present */ + E2SM_COMMON_IEs_ENB_ID_PR_macro_eNB_ID, + E2SM_COMMON_IEs_ENB_ID_PR_home_eNB_ID, + /* Extensions may appear below */ + E2SM_COMMON_IEs_ENB_ID_PR_short_Macro_eNB_ID, + E2SM_COMMON_IEs_ENB_ID_PR_long_Macro_eNB_ID +} E2SM_COMMON_IEs_ENB_ID_PR; + +/* E2SM-COMMON-IEs_ENB-ID */ +typedef struct E2SM_COMMON_IEs_ENB_ID { + E2SM_COMMON_IEs_ENB_ID_PR present; + union E2SM_COMMON_IEs_ENB_ID_u { + BIT_STRING_t macro_eNB_ID; + BIT_STRING_t home_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + BIT_STRING_t short_Macro_eNB_ID; + BIT_STRING_t long_Macro_eNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_COMMON_IEs_ENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_ENB_ID; +extern asn_CHOICE_specifics_t asn_SPC_E2SM_COMMON_IEs_ENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_COMMON_IEs_ENB_ID_1[4]; +extern asn_per_constraints_t asn_PER_type_E2SM_COMMON_IEs_ENB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_COMMON_IEs_ENB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.c b/e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.c new file mode 100644 index 0000000..629db65 --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-COMMON-IEs_GNB-CU-UP-ID.h" + +int +E2SM_COMMON_IEs_GNB_CU_UP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0L && value <= 68719476735L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2SM_COMMON_IEs_GNB_CU_UP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID = { + "GNB-CU-UP-ID", + "GNB-CU-UP-ID", + &asn_OP_INTEGER, + asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID_tags_1, + sizeof(asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID_tags_1[0]), /* 1 */ + asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2SM_COMMON_IEs_GNB_CU_UP_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + E2SM_COMMON_IEs_GNB_CU_UP_ID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.h b/e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.h new file mode 100644 index 0000000..c14a868 --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_COMMON_IEs_GNB_CU_UP_ID_H_ +#define _E2SM_COMMON_IEs_GNB_CU_UP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-COMMON-IEs_GNB-CU-UP-ID */ +typedef INTEGER_t E2SM_COMMON_IEs_GNB_CU_UP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E2SM_COMMON_IEs_GNB_CU_UP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID; +asn_struct_free_f E2SM_COMMON_IEs_GNB_CU_UP_ID_free; +asn_struct_print_f E2SM_COMMON_IEs_GNB_CU_UP_ID_print; +asn_constr_check_f E2SM_COMMON_IEs_GNB_CU_UP_ID_constraint; +ber_type_decoder_f E2SM_COMMON_IEs_GNB_CU_UP_ID_decode_ber; +der_type_encoder_f E2SM_COMMON_IEs_GNB_CU_UP_ID_encode_der; +xer_type_decoder_f E2SM_COMMON_IEs_GNB_CU_UP_ID_decode_xer; +xer_type_encoder_f E2SM_COMMON_IEs_GNB_CU_UP_ID_encode_xer; +jer_type_encoder_f E2SM_COMMON_IEs_GNB_CU_UP_ID_encode_jer; +per_type_decoder_f E2SM_COMMON_IEs_GNB_CU_UP_ID_decode_uper; +per_type_encoder_f E2SM_COMMON_IEs_GNB_CU_UP_ID_encode_uper; +per_type_decoder_f E2SM_COMMON_IEs_GNB_CU_UP_ID_decode_aper; +per_type_encoder_f E2SM_COMMON_IEs_GNB_CU_UP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_COMMON_IEs_GNB_CU_UP_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.c b/e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.c new file mode 100644 index 0000000..679e388 --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-COMMON-IEs_GNB-DU-ID.h" + +int +E2SM_COMMON_IEs_GNB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0L && value <= 68719476735L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2SM_COMMON_IEs_GNB_DU_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID = { + "GNB-DU-ID", + "GNB-DU-ID", + &asn_OP_INTEGER, + asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID_tags_1, + sizeof(asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID_tags_1[0]), /* 1 */ + asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2SM_COMMON_IEs_GNB_DU_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + E2SM_COMMON_IEs_GNB_DU_ID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.h b/e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.h new file mode 100644 index 0000000..8a71086 --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_COMMON_IEs_GNB_DU_ID_H_ +#define _E2SM_COMMON_IEs_GNB_DU_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-COMMON-IEs_GNB-DU-ID */ +typedef INTEGER_t E2SM_COMMON_IEs_GNB_DU_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E2SM_COMMON_IEs_GNB_DU_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID; +asn_struct_free_f E2SM_COMMON_IEs_GNB_DU_ID_free; +asn_struct_print_f E2SM_COMMON_IEs_GNB_DU_ID_print; +asn_constr_check_f E2SM_COMMON_IEs_GNB_DU_ID_constraint; +ber_type_decoder_f E2SM_COMMON_IEs_GNB_DU_ID_decode_ber; +der_type_encoder_f E2SM_COMMON_IEs_GNB_DU_ID_encode_der; +xer_type_decoder_f E2SM_COMMON_IEs_GNB_DU_ID_decode_xer; +xer_type_encoder_f E2SM_COMMON_IEs_GNB_DU_ID_encode_xer; +jer_type_encoder_f E2SM_COMMON_IEs_GNB_DU_ID_encode_jer; +per_type_decoder_f E2SM_COMMON_IEs_GNB_DU_ID_decode_uper; +per_type_encoder_f E2SM_COMMON_IEs_GNB_DU_ID_encode_uper; +per_type_decoder_f E2SM_COMMON_IEs_GNB_DU_ID_decode_aper; +per_type_encoder_f E2SM_COMMON_IEs_GNB_DU_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_COMMON_IEs_GNB_DU_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.c b/e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.c new file mode 100644 index 0000000..228f753 --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-COMMON-IEs_GlobalENB-ID.h" + +asn_TYPE_member_t asn_MBR_E2SM_COMMON_IEs_GlobalENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_COMMON_IEs_GlobalENB_ID, pLMNIdentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMNIdentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_COMMON_IEs_GlobalENB_ID, eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_E2SM_COMMON_IEs_ENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_COMMON_IEs_GlobalENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_COMMON_IEs_GlobalENB_ID_specs_1 = { + sizeof(struct E2SM_COMMON_IEs_GlobalENB_ID), + offsetof(struct E2SM_COMMON_IEs_GlobalENB_ID, _asn_ctx), + asn_MAP_E2SM_COMMON_IEs_GlobalENB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID = { + "GlobalENB-ID", + "GlobalENB-ID", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID_tags_1, + sizeof(asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID_tags_1[0]), /* 1 */ + asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_COMMON_IEs_GlobalENB_ID_1, + 2, /* Elements count */ + &asn_SPC_E2SM_COMMON_IEs_GlobalENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.h b/e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.h new file mode 100644 index 0000000..7a0ac65 --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_COMMON_IEs_GlobalENB_ID_H_ +#define _E2SM_COMMON_IEs_GlobalENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "E2SM-COMMON-IEs_ENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-COMMON-IEs_GlobalENB-ID */ +typedef struct E2SM_COMMON_IEs_GlobalENB_ID { + PLMNIdentity_t pLMNIdentity; + E2SM_COMMON_IEs_ENB_ID_t eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_COMMON_IEs_GlobalENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_COMMON_IEs_GlobalENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_COMMON_IEs_GlobalENB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_COMMON_IEs_GlobalENB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.c b/e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.c new file mode 100644 index 0000000..39b626f --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-COMMON-IEs_GlobalenGNB-ID.h" + +asn_TYPE_member_t asn_MBR_E2SM_COMMON_IEs_GlobalenGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_COMMON_IEs_GlobalenGNB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_COMMON_IEs_GlobalenGNB_ID, en_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_EN_GNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "en-gNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_COMMON_IEs_GlobalenGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* en-gNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_COMMON_IEs_GlobalenGNB_ID_specs_1 = { + sizeof(struct E2SM_COMMON_IEs_GlobalenGNB_ID), + offsetof(struct E2SM_COMMON_IEs_GlobalenGNB_ID, _asn_ctx), + asn_MAP_E2SM_COMMON_IEs_GlobalenGNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID = { + "GlobalenGNB-ID", + "GlobalenGNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID_tags_1, + sizeof(asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID_tags_1[0]), /* 1 */ + asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_COMMON_IEs_GlobalenGNB_ID_1, + 2, /* Elements count */ + &asn_SPC_E2SM_COMMON_IEs_GlobalenGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.h b/e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.h new file mode 100644 index 0000000..d91861a --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_COMMON_IEs_GlobalenGNB_ID_H_ +#define _E2SM_COMMON_IEs_GlobalenGNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "EN-GNB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-COMMON-IEs_GlobalenGNB-ID */ +typedef struct E2SM_COMMON_IEs_GlobalenGNB_ID { + PLMNIdentity_t pLMN_Identity; + EN_GNB_ID_t en_gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_COMMON_IEs_GlobalenGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_COMMON_IEs_GlobalenGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_COMMON_IEs_GlobalenGNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_COMMON_IEs_GlobalenGNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.c b/e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.c new file mode 100644 index 0000000..35ffa47 --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-COMMON-IEs_NGENB-DU-ID.h" + +int +E2SM_COMMON_IEs_NGENB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0L && value <= 68719476735L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2SM_COMMON_IEs_NGENB_DU_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID = { + "NGENB-DU-ID", + "NGENB-DU-ID", + &asn_OP_INTEGER, + asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID_tags_1, + sizeof(asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID_tags_1[0]), /* 1 */ + asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID_tags_1) + /sizeof(asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2SM_COMMON_IEs_NGENB_DU_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + E2SM_COMMON_IEs_NGENB_DU_ID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.h b/e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.h new file mode 100644 index 0000000..2dc8bef --- /dev/null +++ b/e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_COMMON_IEs_NGENB_DU_ID_H_ +#define _E2SM_COMMON_IEs_NGENB_DU_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-COMMON-IEs_NGENB-DU-ID */ +typedef INTEGER_t E2SM_COMMON_IEs_NGENB_DU_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E2SM_COMMON_IEs_NGENB_DU_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID; +asn_struct_free_f E2SM_COMMON_IEs_NGENB_DU_ID_free; +asn_struct_print_f E2SM_COMMON_IEs_NGENB_DU_ID_print; +asn_constr_check_f E2SM_COMMON_IEs_NGENB_DU_ID_constraint; +ber_type_decoder_f E2SM_COMMON_IEs_NGENB_DU_ID_decode_ber; +der_type_encoder_f E2SM_COMMON_IEs_NGENB_DU_ID_encode_der; +xer_type_decoder_f E2SM_COMMON_IEs_NGENB_DU_ID_decode_xer; +xer_type_encoder_f E2SM_COMMON_IEs_NGENB_DU_ID_encode_xer; +jer_type_encoder_f E2SM_COMMON_IEs_NGENB_DU_ID_encode_jer; +per_type_decoder_f E2SM_COMMON_IEs_NGENB_DU_ID_decode_uper; +per_type_encoder_f E2SM_COMMON_IEs_NGENB_DU_ID_encode_uper; +per_type_decoder_f E2SM_COMMON_IEs_NGENB_DU_ID_decode_aper; +per_type_encoder_f E2SM_COMMON_IEs_NGENB_DU_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_COMMON_IEs_NGENB_DU_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.c b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.c new file mode 100644 index 0000000..2c45c38 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.c @@ -0,0 +1,124 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-ActionDefinition-Format1.h" + +#include "CGI.h" +#include "DistMeasurementBinRangeList.h" +asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format1, measInfoList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementInfoList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measInfoList" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format1, granulPeriod), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GranularityPeriod, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "granulPeriod" + }, + { ATF_POINTER, 2, offsetof(struct E2SM_KPM_ActionDefinition_Format1, cellGlobalID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_CGI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cellGlobalID" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_KPM_ActionDefinition_Format1, distMeasBinRangeInfo), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DistMeasurementBinRangeList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "distMeasBinRangeInfo" + }, +}; +static const int asn_MAP_E2SM_KPM_ActionDefinition_Format1_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measInfoList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* granulPeriod */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cellGlobalID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* distMeasBinRangeInfo */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1 = { + sizeof(struct E2SM_KPM_ActionDefinition_Format1), + offsetof(struct E2SM_KPM_ActionDefinition_Format1, _asn_ctx), + asn_MAP_E2SM_KPM_ActionDefinition_Format1_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E2SM_KPM_ActionDefinition_Format1_oms_1, /* Optional members */ + 1, 1, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format1 = { + "E2SM-KPM-ActionDefinition-Format1", + "E2SM-KPM-ActionDefinition-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1, + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_ActionDefinition_Format1_1, + 4, /* Elements count */ + &asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.h b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.h new file mode 100644 index 0000000..87f52e5 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_ActionDefinition_Format1_H_ +#define _E2SM_KPM_ActionDefinition_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementInfoList.h" +#include "GranularityPeriod.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CGI; +struct DistMeasurementBinRangeList; + +/* E2SM-KPM-ActionDefinition-Format1 */ +typedef struct E2SM_KPM_ActionDefinition_Format1 { + MeasurementInfoList_t measInfoList; + GranularityPeriod_t granulPeriod; + struct CGI *cellGlobalID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + struct DistMeasurementBinRangeList *distMeasBinRangeInfo; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_ActionDefinition_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format1_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_ActionDefinition_Format1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.c b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.c new file mode 100644 index 0000000..646928f --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-ActionDefinition-Format2.h" + +asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format2, ueID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_UEID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ueID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format2, subscriptInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_ActionDefinition_Format1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "subscriptInfo" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subscriptInfo */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format2_specs_1 = { + sizeof(struct E2SM_KPM_ActionDefinition_Format2), + offsetof(struct E2SM_KPM_ActionDefinition_Format2, _asn_ctx), + asn_MAP_E2SM_KPM_ActionDefinition_Format2_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format2 = { + "E2SM-KPM-ActionDefinition-Format2", + "E2SM-KPM-ActionDefinition-Format2", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1, + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_ActionDefinition_Format2_1, + 2, /* Elements count */ + &asn_SPC_E2SM_KPM_ActionDefinition_Format2_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.h b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.h new file mode 100644 index 0000000..6751713 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_ActionDefinition_Format2_H_ +#define _E2SM_KPM_ActionDefinition_Format2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UEID.h" +#include "E2SM-KPM-ActionDefinition-Format1.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-KPM-ActionDefinition-Format2 */ +typedef struct E2SM_KPM_ActionDefinition_Format2 { + UEID_t ueID; + E2SM_KPM_ActionDefinition_Format1_t subscriptInfo; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_ActionDefinition_Format2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format2; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format2_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format2_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_ActionDefinition_Format2_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.c b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.c new file mode 100644 index 0000000..a558fe0 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.c @@ -0,0 +1,105 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-ActionDefinition-Format3.h" + +#include "CGI.h" +asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format3_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format3, measCondList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementCondList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measCondList" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format3, granulPeriod), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GranularityPeriod, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "granulPeriod" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_KPM_ActionDefinition_Format3, cellGlobalID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_CGI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cellGlobalID" + }, +}; +static const int asn_MAP_E2SM_KPM_ActionDefinition_Format3_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format3_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measCondList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* granulPeriod */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cellGlobalID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format3_specs_1 = { + sizeof(struct E2SM_KPM_ActionDefinition_Format3), + offsetof(struct E2SM_KPM_ActionDefinition_Format3, _asn_ctx), + asn_MAP_E2SM_KPM_ActionDefinition_Format3_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E2SM_KPM_ActionDefinition_Format3_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format3 = { + "E2SM-KPM-ActionDefinition-Format3", + "E2SM-KPM-ActionDefinition-Format3", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1, + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_ActionDefinition_Format3_1, + 3, /* Elements count */ + &asn_SPC_E2SM_KPM_ActionDefinition_Format3_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.h b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.h new file mode 100644 index 0000000..522ebaa --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_ActionDefinition_Format3_H_ +#define _E2SM_KPM_ActionDefinition_Format3_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementCondList.h" +#include "GranularityPeriod.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CGI; + +/* E2SM-KPM-ActionDefinition-Format3 */ +typedef struct E2SM_KPM_ActionDefinition_Format3 { + MeasurementCondList_t measCondList; + GranularityPeriod_t granulPeriod; + struct CGI *cellGlobalID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_ActionDefinition_Format3_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format3; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format3_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format3_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_ActionDefinition_Format3_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.c b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.c new file mode 100644 index 0000000..98b0435 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-ActionDefinition-Format4.h" + +asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format4_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format4, matchingUeCondList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MatchingUeCondPerSubList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "matchingUeCondList" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format4, subscriptionInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_ActionDefinition_Format1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "subscriptionInfo" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format4_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* matchingUeCondList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subscriptionInfo */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format4_specs_1 = { + sizeof(struct E2SM_KPM_ActionDefinition_Format4), + offsetof(struct E2SM_KPM_ActionDefinition_Format4, _asn_ctx), + asn_MAP_E2SM_KPM_ActionDefinition_Format4_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format4 = { + "E2SM-KPM-ActionDefinition-Format4", + "E2SM-KPM-ActionDefinition-Format4", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1, + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_ActionDefinition_Format4_1, + 2, /* Elements count */ + &asn_SPC_E2SM_KPM_ActionDefinition_Format4_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.h b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.h new file mode 100644 index 0000000..f2ca4b6 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_ActionDefinition_Format4_H_ +#define _E2SM_KPM_ActionDefinition_Format4_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MatchingUeCondPerSubList.h" +#include "E2SM-KPM-ActionDefinition-Format1.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-KPM-ActionDefinition-Format4 */ +typedef struct E2SM_KPM_ActionDefinition_Format4 { + MatchingUeCondPerSubList_t matchingUeCondList; + E2SM_KPM_ActionDefinition_Format1_t subscriptionInfo; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_ActionDefinition_Format4_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format4; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format4_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format4_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_ActionDefinition_Format4_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.c b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.c new file mode 100644 index 0000000..7e90cc9 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-ActionDefinition-Format5.h" + +asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format5_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format5, matchingUEidList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MatchingUEidPerSubList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "matchingUEidList" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format5, subscriptionInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_ActionDefinition_Format1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "subscriptionInfo" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format5_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* matchingUEidList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subscriptionInfo */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format5_specs_1 = { + sizeof(struct E2SM_KPM_ActionDefinition_Format5), + offsetof(struct E2SM_KPM_ActionDefinition_Format5, _asn_ctx), + asn_MAP_E2SM_KPM_ActionDefinition_Format5_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format5 = { + "E2SM-KPM-ActionDefinition-Format5", + "E2SM-KPM-ActionDefinition-Format5", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1, + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_ActionDefinition_Format5_1, + 2, /* Elements count */ + &asn_SPC_E2SM_KPM_ActionDefinition_Format5_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.h b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.h new file mode 100644 index 0000000..687d4a4 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_ActionDefinition_Format5_H_ +#define _E2SM_KPM_ActionDefinition_Format5_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MatchingUEidPerSubList.h" +#include "E2SM-KPM-ActionDefinition-Format1.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-KPM-ActionDefinition-Format5 */ +typedef struct E2SM_KPM_ActionDefinition_Format5 { + MatchingUEidPerSubList_t matchingUEidList; + E2SM_KPM_ActionDefinition_Format1_t subscriptionInfo; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_ActionDefinition_Format5_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format5; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format5_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format5_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_ActionDefinition_Format5_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition.c b/e2sim/asn1c/E2SM-KPM-ActionDefinition.c new file mode 100644 index 0000000..712d25c --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition.c @@ -0,0 +1,223 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-ActionDefinition.h" + +#include "E2SM-KPM-ActionDefinition-Format1.h" +#include "E2SM-KPM-ActionDefinition-Format2.h" +#include "E2SM-KPM-ActionDefinition-Format3.h" +#include "E2SM-KPM-ActionDefinition-Format4.h" +#include "E2SM-KPM-ActionDefinition-Format5.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_actionDefinition_formats_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_actionDefinition_formats_3[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_ActionDefinition_Format1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "actionDefinition-Format1" + }, + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format2), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_ActionDefinition_Format2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "actionDefinition-Format2" + }, + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format3), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_ActionDefinition_Format3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "actionDefinition-Format3" + }, + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format4), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_ActionDefinition_Format4, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "actionDefinition-Format4" + }, + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format5), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_ActionDefinition_Format5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "actionDefinition-Format5" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_actionDefinition_formats_tag2el_3[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* actionDefinition-Format1 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* actionDefinition-Format2 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* actionDefinition-Format3 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* actionDefinition-Format4 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* actionDefinition-Format5 */ +}; +static asn_CHOICE_specifics_t asn_SPC_actionDefinition_formats_specs_3 = { + sizeof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats), + offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, _asn_ctx), + offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, present), + sizeof(((struct E2SM_KPM_ActionDefinition__actionDefinition_formats *)0)->present), + asn_MAP_actionDefinition_formats_tag2el_3, + 5, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_actionDefinition_formats_3 = { + "actionDefinition-formats", + "actionDefinition-formats", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_actionDefinition_formats_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_actionDefinition_formats_3, + 5, /* Elements count */ + &asn_SPC_actionDefinition_formats_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, ric_Style_Type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Type, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ric-Style-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, actionDefinition_formats), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_actionDefinition_formats_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "actionDefinition-formats" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-Style-Type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionDefinition-formats */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_specs_1 = { + sizeof(struct E2SM_KPM_ActionDefinition), + offsetof(struct E2SM_KPM_ActionDefinition, _asn_ctx), + asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition = { + "E2SM-KPM-ActionDefinition", + "E2SM-KPM-ActionDefinition", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_ActionDefinition_tags_1, + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_ActionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1) + /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_ActionDefinition_1, + 2, /* Elements count */ + &asn_SPC_E2SM_KPM_ActionDefinition_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-ActionDefinition.h b/e2sim/asn1c/E2SM-KPM-ActionDefinition.h new file mode 100644 index 0000000..6bea5b1 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-ActionDefinition.h @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_ActionDefinition_H_ +#define _E2SM_KPM_ActionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_KPM_ActionDefinition__actionDefinition_formats_PR { + E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_NOTHING, /* No components present */ + E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format1, + E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format2, + E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format3, + /* Extensions may appear below */ + E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format4, + E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format5 +} E2SM_KPM_ActionDefinition__actionDefinition_formats_PR; + +/* Forward declarations */ +struct E2SM_KPM_ActionDefinition_Format1; +struct E2SM_KPM_ActionDefinition_Format2; +struct E2SM_KPM_ActionDefinition_Format3; +struct E2SM_KPM_ActionDefinition_Format4; +struct E2SM_KPM_ActionDefinition_Format5; + +/* E2SM-KPM-ActionDefinition */ +typedef struct E2SM_KPM_ActionDefinition { + RIC_Style_Type_t ric_Style_Type; + struct E2SM_KPM_ActionDefinition__actionDefinition_formats { + E2SM_KPM_ActionDefinition__actionDefinition_formats_PR present; + union E2SM_KPM_ActionDefinition__actionDefinition_formats_u { + struct E2SM_KPM_ActionDefinition_Format1 *actionDefinition_Format1; + struct E2SM_KPM_ActionDefinition_Format2 *actionDefinition_Format2; + struct E2SM_KPM_ActionDefinition_Format3 *actionDefinition_Format3; + /* + * This type is extensible, + * possible extensions are below. + */ + struct E2SM_KPM_ActionDefinition_Format4 *actionDefinition_Format4; + struct E2SM_KPM_ActionDefinition_Format5 *actionDefinition_Format5; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } actionDefinition_formats; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_ActionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_ActionDefinition_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.c b/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.c new file mode 100644 index 0000000..13439bf --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-EventTriggerDefinition-Format1.h" + +static int +reportingPeriod_2_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + unsigned long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const unsigned long *)sptr; + + if((value >= 1UL && value <= 4294967295UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +memb_reportingPeriod_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + unsigned long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const unsigned long *)sptr; + + if((value >= 1UL && value <= 4294967295UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_reportingPeriod_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 1, 4294967295 } /* (1..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_reportingPeriod_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 1, 4294967295 } /* (1..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_specifics_t asn_SPC_reportingPeriod_specs_2 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_reportingPeriod_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_reportingPeriod_2 = { + "reportingPeriod", + "reportingPeriod", + &asn_OP_NativeInteger, + asn_DEF_reportingPeriod_tags_2, + sizeof(asn_DEF_reportingPeriod_tags_2) + /sizeof(asn_DEF_reportingPeriod_tags_2[0]) - 1, /* 1 */ + asn_DEF_reportingPeriod_tags_2, /* Same as above */ + sizeof(asn_DEF_reportingPeriod_tags_2) + /sizeof(asn_DEF_reportingPeriod_tags_2[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_reportingPeriod_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + reportingPeriod_2_constraint + }, + 0, 0, /* No members */ + &asn_SPC_reportingPeriod_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, reportingPeriod), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_reportingPeriod_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_reportingPeriod_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_reportingPeriod_constraint_1 + }, + 0, 0, /* No default value */ + "reportingPeriod" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* reportingPeriod */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 = { + sizeof(struct E2SM_KPM_EventTriggerDefinition_Format1), + offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, _asn_ctx), + asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1 = { + "E2SM-KPM-EventTriggerDefinition-Format1", + "E2SM-KPM-EventTriggerDefinition-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1, + sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.h b/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.h new file mode 100644 index 0000000..fba47e9 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_EventTriggerDefinition_Format1_H_ +#define _E2SM_KPM_EventTriggerDefinition_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-KPM-EventTriggerDefinition-Format1 */ +typedef struct E2SM_KPM_EventTriggerDefinition_Format1 { + unsigned long reportingPeriod; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_EventTriggerDefinition_Format1_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_reportingPeriod_2; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_EventTriggerDefinition_Format1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.c b/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.c new file mode 100644 index 0000000..1a3f636 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.c @@ -0,0 +1,129 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-EventTriggerDefinition.h" + +#include "E2SM-KPM-EventTriggerDefinition-Format1.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_eventDefinition_formats_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_eventDefinition_formats_2[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats, choice.eventDefinition_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eventDefinition-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_eventDefinition_formats_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_eventDefinition_formats_specs_2 = { + sizeof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats), + offsetof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats, _asn_ctx), + offsetof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats, present), + sizeof(((struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats *)0)->present), + asn_MAP_eventDefinition_formats_tag2el_2, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_eventDefinition_formats_2 = { + "eventDefinition-formats", + "eventDefinition-formats", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_eventDefinition_formats_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_eventDefinition_formats_2, + 1, /* Elements count */ + &asn_SPC_eventDefinition_formats_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition, eventDefinition_formats), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_eventDefinition_formats_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eventDefinition-formats" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-formats */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 = { + sizeof(struct E2SM_KPM_EventTriggerDefinition), + offsetof(struct E2SM_KPM_EventTriggerDefinition, _asn_ctx), + asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition = { + "E2SM-KPM-EventTriggerDefinition", + "E2SM-KPM-EventTriggerDefinition", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1, + sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1) + /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1) + /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_EventTriggerDefinition_1, + 1, /* Elements count */ + &asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.h b/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.h new file mode 100644 index 0000000..a173ba1 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_EventTriggerDefinition_H_ +#define _E2SM_KPM_EventTriggerDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR { + E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR_NOTHING, /* No components present */ + E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR_eventDefinition_Format1 + /* Extensions may appear below */ + +} E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR; + +/* Forward declarations */ +struct E2SM_KPM_EventTriggerDefinition_Format1; + +/* E2SM-KPM-EventTriggerDefinition */ +typedef struct E2SM_KPM_EventTriggerDefinition { + struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats { + E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR present; + union E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_u { + struct E2SM_KPM_EventTriggerDefinition_Format1 *eventDefinition_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } eventDefinition_formats; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_EventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_EventTriggerDefinition_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.c b/e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.c new file mode 100644 index 0000000..f64fdea --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.c @@ -0,0 +1,448 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-IndicationHeader-Format1.h" + +static const int permitted_alphabet_table_3[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_3[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_3(const void *sptr) { + const int *table = permitted_alphabet_table_3; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static const int permitted_alphabet_table_4[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_4[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_4(const void *sptr) { + const int *table = permitted_alphabet_table_4; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static const int permitted_alphabet_table_5[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_5[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_5(const void *sptr) { + const int *table = permitted_alphabet_table_5; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static const int permitted_alphabet_table_6[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_6[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_6(const void *sptr) { + const int *table = permitted_alphabet_table_6; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static int +memb_fileFormatversion_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size <= 15UL) + && !check_permitted_alphabet_3(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_fileFormatversion_3_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0])) + return -1; + return permitted_alphabet_table_3[value] - 1; +} +static int asn_PER_MAP_fileFormatversion_3_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0])) + return -1; + return permitted_alphabet_code2value_3[code]; +} +static int +memb_senderName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size <= 400UL) + && !check_permitted_alphabet_4(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_senderName_4_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0])) + return -1; + return permitted_alphabet_table_4[value] - 1; +} +static int asn_PER_MAP_senderName_4_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0])) + return -1; + return permitted_alphabet_code2value_4[code]; +} +static int +memb_senderType_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size <= 8UL) + && !check_permitted_alphabet_5(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_senderType_5_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_5)/sizeof(permitted_alphabet_table_5[0])) + return -1; + return permitted_alphabet_table_5[value] - 1; +} +static int asn_PER_MAP_senderType_5_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_5)/sizeof(permitted_alphabet_code2value_5[0])) + return -1; + return permitted_alphabet_code2value_5[code]; +} +static int +memb_vendorName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size <= 32UL) + && !check_permitted_alphabet_6(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_vendorName_6_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_6)/sizeof(permitted_alphabet_table_6[0])) + return -1; + return permitted_alphabet_table_6[value] - 1; +} +static int asn_PER_MAP_vendorName_6_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_6)/sizeof(permitted_alphabet_code2value_6[0])) + return -1; + return permitted_alphabet_code2value_6[code]; +} +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_fileFormatversion_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (SIZE(0..15,...)) */, + asn_PER_MAP_fileFormatversion_3_v2c, /* Value to PER code map */ + asn_PER_MAP_fileFormatversion_3_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_senderName_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 9, 9, 0, 400 } /* (SIZE(0..400,...)) */, + asn_PER_MAP_senderName_4_v2c, /* Value to PER code map */ + asn_PER_MAP_senderName_4_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_senderType_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 8 } /* (SIZE(0..8,...)) */, + asn_PER_MAP_senderType_5_v2c, /* Value to PER code map */ + asn_PER_MAP_senderType_5_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_vendorName_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 0, 32 } /* (SIZE(0..32,...)) */, + asn_PER_MAP_vendorName_6_v2c, /* Value to PER code map */ + asn_PER_MAP_vendorName_6_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader_Format1, colletStartTime), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeStamp, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "colletStartTime" + }, + { ATF_POINTER, 4, offsetof(struct E2SM_KPM_IndicationHeader_Format1, fileFormatversion), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_fileFormatversion_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_fileFormatversion_constraint_1 + }, + 0, 0, /* No default value */ + "fileFormatversion" + }, + { ATF_POINTER, 3, offsetof(struct E2SM_KPM_IndicationHeader_Format1, senderName), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_senderName_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_senderName_constraint_1 + }, + 0, 0, /* No default value */ + "senderName" + }, + { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationHeader_Format1, senderType), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_senderType_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_senderType_constraint_1 + }, + 0, 0, /* No default value */ + "senderType" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationHeader_Format1, vendorName), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_vendorName_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_vendorName_constraint_1 + }, + 0, 0, /* No default value */ + "vendorName" + }, +}; +static const int asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* colletStartTime */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* fileFormatversion */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* senderName */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* senderType */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* vendorName */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 = { + sizeof(struct E2SM_KPM_IndicationHeader_Format1), + offsetof(struct E2SM_KPM_IndicationHeader_Format1, _asn_ctx), + asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1 = { + "E2SM-KPM-IndicationHeader-Format1", + "E2SM-KPM-IndicationHeader-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1, + sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_IndicationHeader_Format1_1, + 5, /* Elements count */ + &asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.h b/e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.h new file mode 100644 index 0000000..3790e79 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_IndicationHeader_Format1_H_ +#define _E2SM_KPM_IndicationHeader_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TimeStamp.h" +#include "PrintableString.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-KPM-IndicationHeader-Format1 */ +typedef struct E2SM_KPM_IndicationHeader_Format1 { + TimeStamp_t colletStartTime; + PrintableString_t *fileFormatversion; /* OPTIONAL */ + PrintableString_t *senderName; /* OPTIONAL */ + PrintableString_t *senderType; /* OPTIONAL */ + PrintableString_t *vendorName; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_IndicationHeader_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_IndicationHeader_Format1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-IndicationHeader.c b/e2sim/asn1c/E2SM-KPM-IndicationHeader.c new file mode 100644 index 0000000..6b749c6 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationHeader.c @@ -0,0 +1,129 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-IndicationHeader.h" + +#include "E2SM-KPM-IndicationHeader-Format1.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_indicationHeader_formats_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_indicationHeader_formats_2[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats, choice.indicationHeader_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_IndicationHeader_Format1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "indicationHeader-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_indicationHeader_formats_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_indicationHeader_formats_specs_2 = { + sizeof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats), + offsetof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats, _asn_ctx), + offsetof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats, present), + sizeof(((struct E2SM_KPM_IndicationHeader__indicationHeader_formats *)0)->present), + asn_MAP_indicationHeader_formats_tag2el_2, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_indicationHeader_formats_2 = { + "indicationHeader-formats", + "indicationHeader-formats", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_indicationHeader_formats_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_indicationHeader_formats_2, + 1, /* Elements count */ + &asn_SPC_indicationHeader_formats_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader, indicationHeader_formats), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_indicationHeader_formats_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "indicationHeader-formats" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-formats */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_specs_1 = { + sizeof(struct E2SM_KPM_IndicationHeader), + offsetof(struct E2SM_KPM_IndicationHeader, _asn_ctx), + asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader = { + "E2SM-KPM-IndicationHeader", + "E2SM-KPM-IndicationHeader", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_IndicationHeader_tags_1, + sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_IndicationHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_IndicationHeader_1, + 1, /* Elements count */ + &asn_SPC_E2SM_KPM_IndicationHeader_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-IndicationHeader.h b/e2sim/asn1c/E2SM-KPM-IndicationHeader.h new file mode 100644 index 0000000..2788365 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationHeader.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_IndicationHeader_H_ +#define _E2SM_KPM_IndicationHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_KPM_IndicationHeader__indicationHeader_formats_PR { + E2SM_KPM_IndicationHeader__indicationHeader_formats_PR_NOTHING, /* No components present */ + E2SM_KPM_IndicationHeader__indicationHeader_formats_PR_indicationHeader_Format1 + /* Extensions may appear below */ + +} E2SM_KPM_IndicationHeader__indicationHeader_formats_PR; + +/* Forward declarations */ +struct E2SM_KPM_IndicationHeader_Format1; + +/* E2SM-KPM-IndicationHeader */ +typedef struct E2SM_KPM_IndicationHeader { + struct E2SM_KPM_IndicationHeader__indicationHeader_formats { + E2SM_KPM_IndicationHeader__indicationHeader_formats_PR present; + union E2SM_KPM_IndicationHeader__indicationHeader_formats_u { + struct E2SM_KPM_IndicationHeader_Format1 *indicationHeader_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } indicationHeader_formats; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_IndicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_IndicationHeader_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.c b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.c new file mode 100644 index 0000000..3a3562e --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.c @@ -0,0 +1,105 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-IndicationMessage-Format1.h" + +#include "MeasurementInfoList.h" +asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format1, measData), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measData" + }, + { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationMessage_Format1, measInfoList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementInfoList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measInfoList" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationMessage_Format1, granulPeriod), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GranularityPeriod, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "granulPeriod" + }, +}; +static const int asn_MAP_E2SM_KPM_IndicationMessage_Format1_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measData */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measInfoList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* granulPeriod */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 = { + sizeof(struct E2SM_KPM_IndicationMessage_Format1), + offsetof(struct E2SM_KPM_IndicationMessage_Format1, _asn_ctx), + asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E2SM_KPM_IndicationMessage_Format1_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1 = { + "E2SM-KPM-IndicationMessage-Format1", + "E2SM-KPM-IndicationMessage-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1, + sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_IndicationMessage_Format1_1, + 3, /* Elements count */ + &asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.h b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.h new file mode 100644 index 0000000..466f01b --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_IndicationMessage_Format1_H_ +#define _E2SM_KPM_IndicationMessage_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementData.h" +#include "GranularityPeriod.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MeasurementInfoList; + +/* E2SM-KPM-IndicationMessage-Format1 */ +typedef struct E2SM_KPM_IndicationMessage_Format1 { + MeasurementData_t measData; + struct MeasurementInfoList *measInfoList; /* OPTIONAL */ + GranularityPeriod_t *granulPeriod; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_IndicationMessage_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_IndicationMessage_Format1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.c b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.c new file mode 100644 index 0000000..2a259c9 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-IndicationMessage-Format2.h" + +asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format2, measData), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measData" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format2, measCondUEidList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementCondUEidList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measCondUEidList" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationMessage_Format2, granulPeriod), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GranularityPeriod, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "granulPeriod" + }, +}; +static const int asn_MAP_E2SM_KPM_IndicationMessage_Format2_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measData */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measCondUEidList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* granulPeriod */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format2_specs_1 = { + sizeof(struct E2SM_KPM_IndicationMessage_Format2), + offsetof(struct E2SM_KPM_IndicationMessage_Format2, _asn_ctx), + asn_MAP_E2SM_KPM_IndicationMessage_Format2_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E2SM_KPM_IndicationMessage_Format2_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format2 = { + "E2SM-KPM-IndicationMessage-Format2", + "E2SM-KPM-IndicationMessage-Format2", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1, + sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_IndicationMessage_Format2_1, + 3, /* Elements count */ + &asn_SPC_E2SM_KPM_IndicationMessage_Format2_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.h b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.h new file mode 100644 index 0000000..418ff59 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_IndicationMessage_Format2_H_ +#define _E2SM_KPM_IndicationMessage_Format2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementData.h" +#include "MeasurementCondUEidList.h" +#include "GranularityPeriod.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-KPM-IndicationMessage-Format2 */ +typedef struct E2SM_KPM_IndicationMessage_Format2 { + MeasurementData_t measData; + MeasurementCondUEidList_t measCondUEidList; + GranularityPeriod_t *granulPeriod; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_IndicationMessage_Format2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format2; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format2_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format2_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_IndicationMessage_Format2_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.c b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.c new file mode 100644 index 0000000..a1f1e27 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-IndicationMessage-Format3.h" + +asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format3_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format3, ueMeasReportList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEMeasurementReportList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ueMeasReportList" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format3_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueMeasReportList */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format3_specs_1 = { + sizeof(struct E2SM_KPM_IndicationMessage_Format3), + offsetof(struct E2SM_KPM_IndicationMessage_Format3, _asn_ctx), + asn_MAP_E2SM_KPM_IndicationMessage_Format3_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format3 = { + "E2SM-KPM-IndicationMessage-Format3", + "E2SM-KPM-IndicationMessage-Format3", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1, + sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_IndicationMessage_Format3_1, + 1, /* Elements count */ + &asn_SPC_E2SM_KPM_IndicationMessage_Format3_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.h b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.h new file mode 100644 index 0000000..c3bcc4c --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_IndicationMessage_Format3_H_ +#define _E2SM_KPM_IndicationMessage_Format3_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UEMeasurementReportList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-KPM-IndicationMessage-Format3 */ +typedef struct E2SM_KPM_IndicationMessage_Format3 { + UEMeasurementReportList_t ueMeasReportList; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_IndicationMessage_Format3_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format3; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format3_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format3_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_IndicationMessage_Format3_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-IndicationMessage.c b/e2sim/asn1c/E2SM-KPM-IndicationMessage.c new file mode 100644 index 0000000..b0c848f --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationMessage.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-IndicationMessage.h" + +#include "E2SM-KPM-IndicationMessage-Format1.h" +#include "E2SM-KPM-IndicationMessage-Format2.h" +#include "E2SM-KPM-IndicationMessage-Format3.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_indicationMessage_formats_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_indicationMessage_formats_2[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, choice.indicationMessage_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_IndicationMessage_Format1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "indicationMessage-Format1" + }, + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, choice.indicationMessage_Format2), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_IndicationMessage_Format2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "indicationMessage-Format2" + }, + { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, choice.indicationMessage_Format3), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_IndicationMessage_Format3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "indicationMessage-Format3" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_indicationMessage_formats_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* indicationMessage-Format1 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* indicationMessage-Format2 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* indicationMessage-Format3 */ +}; +static asn_CHOICE_specifics_t asn_SPC_indicationMessage_formats_specs_2 = { + sizeof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats), + offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, _asn_ctx), + offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, present), + sizeof(((struct E2SM_KPM_IndicationMessage__indicationMessage_formats *)0)->present), + asn_MAP_indicationMessage_formats_tag2el_2, + 3, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_indicationMessage_formats_2 = { + "indicationMessage-formats", + "indicationMessage-formats", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_indicationMessage_formats_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_indicationMessage_formats_2, + 3, /* Elements count */ + &asn_SPC_indicationMessage_formats_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, indicationMessage_formats), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_indicationMessage_formats_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "indicationMessage-formats" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-formats */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_specs_1 = { + sizeof(struct E2SM_KPM_IndicationMessage), + offsetof(struct E2SM_KPM_IndicationMessage, _asn_ctx), + asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage = { + "E2SM-KPM-IndicationMessage", + "E2SM-KPM-IndicationMessage", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_IndicationMessage_tags_1, + sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_IndicationMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1) + /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_IndicationMessage_1, + 1, /* Elements count */ + &asn_SPC_E2SM_KPM_IndicationMessage_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-IndicationMessage.h b/e2sim/asn1c/E2SM-KPM-IndicationMessage.h new file mode 100644 index 0000000..d90fbf6 --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-IndicationMessage.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_IndicationMessage_H_ +#define _E2SM_KPM_IndicationMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_KPM_IndicationMessage__indicationMessage_formats_PR { + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_NOTHING, /* No components present */ + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format1, + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format2, + /* Extensions may appear below */ + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format3 +} E2SM_KPM_IndicationMessage__indicationMessage_formats_PR; + +/* Forward declarations */ +struct E2SM_KPM_IndicationMessage_Format1; +struct E2SM_KPM_IndicationMessage_Format2; +struct E2SM_KPM_IndicationMessage_Format3; + +/* E2SM-KPM-IndicationMessage */ +typedef struct E2SM_KPM_IndicationMessage { + struct E2SM_KPM_IndicationMessage__indicationMessage_formats { + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR present; + union E2SM_KPM_IndicationMessage__indicationMessage_formats_u { + struct E2SM_KPM_IndicationMessage_Format1 *indicationMessage_Format1; + struct E2SM_KPM_IndicationMessage_Format2 *indicationMessage_Format2; + /* + * This type is extensible, + * possible extensions are below. + */ + struct E2SM_KPM_IndicationMessage_Format3 *indicationMessage_Format3; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } indicationMessage_formats; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_IndicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_IndicationMessage_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2SM-KPM-RANfunction-Description.c b/e2sim/asn1c/E2SM-KPM-RANfunction-Description.c new file mode 100644 index 0000000..901926e --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-RANfunction-Description.c @@ -0,0 +1,292 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2SM-KPM-RANfunction-Description.h" + +#include "RIC-EventTriggerStyle-Item.h" +#include "RIC-ReportStyle-Item.h" +static int +memb_ric_EventTriggerStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 63UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ric_ReportStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1UL && size <= 63UL)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ric_ReportStyle_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ric_ReportStyle_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_ric_EventTriggerStyle_List_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RIC_EventTriggerStyle_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_EventTriggerStyle_List_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_EventTriggerStyle_List_specs_3 = { + sizeof(struct E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List), + offsetof(struct E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_EventTriggerStyle_List_3 = { + "ric-EventTriggerStyle-List", + "ric-EventTriggerStyle-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_EventTriggerStyle_List_tags_3, + sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3) + /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]) - 1, /* 1 */ + asn_DEF_ric_EventTriggerStyle_List_tags_3, /* Same as above */ + sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3) + /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ric_EventTriggerStyle_List_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ric_EventTriggerStyle_List_3, + 1, /* Single element */ + &asn_SPC_ric_EventTriggerStyle_List_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ric_ReportStyle_List_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RIC_ReportStyle_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_ReportStyle_List_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_ReportStyle_List_specs_5 = { + sizeof(struct E2SM_KPM_RANfunction_Description__ric_ReportStyle_List), + offsetof(struct E2SM_KPM_RANfunction_Description__ric_ReportStyle_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_ReportStyle_List_5 = { + "ric-ReportStyle-List", + "ric-ReportStyle-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_ReportStyle_List_tags_5, + sizeof(asn_DEF_ric_ReportStyle_List_tags_5) + /sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]) - 1, /* 1 */ + asn_DEF_ric_ReportStyle_List_tags_5, /* Same as above */ + sizeof(asn_DEF_ric_ReportStyle_List_tags_5) + /sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ric_ReportStyle_List_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ric_ReportStyle_List_5, + 1, /* Single element */ + &asn_SPC_ric_ReportStyle_List_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_KPM_RANfunction_Description_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_RANfunction_Description, ranFunction_Name), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunction_Name, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunction-Name" + }, + { ATF_POINTER, 2, offsetof(struct E2SM_KPM_RANfunction_Description, ric_EventTriggerStyle_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_ric_EventTriggerStyle_List_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ric_EventTriggerStyle_List_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ric_EventTriggerStyle_List_constraint_1 + }, + 0, 0, /* No default value */ + "ric-EventTriggerStyle-List" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_KPM_RANfunction_Description, ric_ReportStyle_List), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + 0, + &asn_DEF_ric_ReportStyle_List_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ric_ReportStyle_List_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ric_ReportStyle_List_constraint_1 + }, + 0, 0, /* No default value */ + "ric-ReportStyle-List" + }, +}; +static const int asn_MAP_E2SM_KPM_RANfunction_Description_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-List */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-ReportStyle-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_RANfunction_Description_specs_1 = { + sizeof(struct E2SM_KPM_RANfunction_Description), + offsetof(struct E2SM_KPM_RANfunction_Description, _asn_ctx), + asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E2SM_KPM_RANfunction_Description_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description = { + "E2SM-KPM-RANfunction-Description", + "E2SM-KPM-RANfunction-Description", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_KPM_RANfunction_Description_tags_1, + sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1) + /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */ + asn_DEF_E2SM_KPM_RANfunction_Description_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1) + /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2SM_KPM_RANfunction_Description_1, + 3, /* Elements count */ + &asn_SPC_E2SM_KPM_RANfunction_Description_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2SM-KPM-RANfunction-Description.h b/e2sim/asn1c/E2SM-KPM-RANfunction-Description.h new file mode 100644 index 0000000..002a34b --- /dev/null +++ b/e2sim/asn1c/E2SM-KPM-RANfunction-Description.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2SM_KPM_RANfunction_Description_H_ +#define _E2SM_KPM_RANfunction_Description_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunction-Name.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RIC_EventTriggerStyle_Item; +struct RIC_ReportStyle_Item; + +/* E2SM-KPM-RANfunction-Description */ +typedef struct E2SM_KPM_RANfunction_Description { + RANfunction_Name_t ranFunction_Name; + struct E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List { + A_SEQUENCE_OF(struct RIC_EventTriggerStyle_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *ric_EventTriggerStyle_List; + struct E2SM_KPM_RANfunction_Description__ric_ReportStyle_List { + A_SEQUENCE_OF(struct RIC_ReportStyle_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *ric_ReportStyle_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_KPM_RANfunction_Description_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_KPM_RANfunction_Description_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2connectionSetupFailed-Item.c b/e2sim/asn1c/E2connectionSetupFailed-Item.c new file mode 100644 index 0000000..269c522 --- /dev/null +++ b/e2sim/asn1c/E2connectionSetupFailed-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2connectionSetupFailed-Item.h" + +asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_Item, tnlInformation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TNLinformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "tnlInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionSetupFailed_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionSetupFailed_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlInformation */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_Item_specs_1 = { + sizeof(struct E2connectionSetupFailed_Item), + offsetof(struct E2connectionSetupFailed_Item, _asn_ctx), + asn_MAP_E2connectionSetupFailed_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_Item = { + "E2connectionSetupFailed-Item", + "E2connectionSetupFailed-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionSetupFailed_Item_tags_1, + sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1) + /sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1[0]), /* 1 */ + asn_DEF_E2connectionSetupFailed_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1) + /sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionSetupFailed_Item_1, + 2, /* Elements count */ + &asn_SPC_E2connectionSetupFailed_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2connectionSetupFailed-Item.h b/e2sim/asn1c/E2connectionSetupFailed-Item.h new file mode 100644 index 0000000..e9d932c --- /dev/null +++ b/e2sim/asn1c/E2connectionSetupFailed-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2connectionSetupFailed_Item_H_ +#define _E2connectionSetupFailed_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TNLinformation.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2connectionSetupFailed-Item */ +typedef struct E2connectionSetupFailed_Item { + TNLinformation_t tnlInformation; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionSetupFailed_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2connectionSetupFailed_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2connectionSetupFailed-List.c b/e2sim/asn1c/E2connectionSetupFailed-List.c new file mode 100644 index 0000000..f2dfb1a --- /dev/null +++ b/e2sim/asn1c/E2connectionSetupFailed-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2connectionSetupFailed-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2connectionSetupFailed_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P21, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionSetupFailed_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2connectionSetupFailed_List_specs_1 = { + sizeof(struct E2connectionSetupFailed_List), + offsetof(struct E2connectionSetupFailed_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_List = { + "E2connectionSetupFailed-List", + "E2connectionSetupFailed-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2connectionSetupFailed_List_tags_1, + sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1) + /sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1[0]), /* 1 */ + asn_DEF_E2connectionSetupFailed_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1) + /sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2connectionSetupFailed_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2connectionSetupFailed_List_1, + 1, /* Single element */ + &asn_SPC_E2connectionSetupFailed_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2connectionSetupFailed-List.h b/e2sim/asn1c/E2connectionSetupFailed-List.h new file mode 100644 index 0000000..481438e --- /dev/null +++ b/e2sim/asn1c/E2connectionSetupFailed-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2connectionSetupFailed_List_H_ +#define _E2connectionSetupFailed_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2connectionSetupFailed-List */ +typedef struct E2connectionSetupFailed_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionSetupFailed_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_List; +extern asn_SET_OF_specifics_t asn_SPC_E2connectionSetupFailed_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2connectionSetupFailed_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2connectionSetupFailed_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2connectionUpdate-Item.c b/e2sim/asn1c/E2connectionUpdate-Item.c new file mode 100644 index 0000000..fc1dcaf --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdate-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2connectionUpdate-Item.h" + +asn_TYPE_member_t asn_MBR_E2connectionUpdate_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_Item, tnlInformation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TNLinformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "tnlInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_Item, tnlUsage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TNLusage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "tnlUsage" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlInformation */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tnlUsage */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_Item_specs_1 = { + sizeof(struct E2connectionUpdate_Item), + offsetof(struct E2connectionUpdate_Item, _asn_ctx), + asn_MAP_E2connectionUpdate_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_Item = { + "E2connectionUpdate-Item", + "E2connectionUpdate-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdate_Item_tags_1, + sizeof(asn_DEF_E2connectionUpdate_Item_tags_1) + /sizeof(asn_DEF_E2connectionUpdate_Item_tags_1[0]), /* 1 */ + asn_DEF_E2connectionUpdate_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdate_Item_tags_1) + /sizeof(asn_DEF_E2connectionUpdate_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdate_Item_1, + 2, /* Elements count */ + &asn_SPC_E2connectionUpdate_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2connectionUpdate-Item.h b/e2sim/asn1c/E2connectionUpdate-Item.h new file mode 100644 index 0000000..83242d7 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdate-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2connectionUpdate_Item_H_ +#define _E2connectionUpdate_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TNLinformation.h" +#include "TNLusage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2connectionUpdate-Item */ +typedef struct E2connectionUpdate_Item { + TNLinformation_t tnlInformation; + TNLusage_t tnlUsage; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdate_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2connectionUpdate_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2connectionUpdate-List.c b/e2sim/asn1c/E2connectionUpdate-List.c new file mode 100644 index 0000000..d2c1ecb --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdate-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2connectionUpdate-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2connectionUpdate_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2connectionUpdate_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P19, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2connectionUpdate_List_specs_1 = { + sizeof(struct E2connectionUpdate_List), + offsetof(struct E2connectionUpdate_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_List = { + "E2connectionUpdate-List", + "E2connectionUpdate-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2connectionUpdate_List_tags_1, + sizeof(asn_DEF_E2connectionUpdate_List_tags_1) + /sizeof(asn_DEF_E2connectionUpdate_List_tags_1[0]), /* 1 */ + asn_DEF_E2connectionUpdate_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdate_List_tags_1) + /sizeof(asn_DEF_E2connectionUpdate_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2connectionUpdate_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2connectionUpdate_List_1, + 1, /* Single element */ + &asn_SPC_E2connectionUpdate_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2connectionUpdate-List.h b/e2sim/asn1c/E2connectionUpdate-List.h new file mode 100644 index 0000000..5165684 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdate-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2connectionUpdate_List_H_ +#define _E2connectionUpdate_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2connectionUpdate-List */ +typedef struct E2connectionUpdate_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdate_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_List; +extern asn_SET_OF_specifics_t asn_SPC_E2connectionUpdate_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2connectionUpdate_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2connectionUpdate_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2connectionUpdate.c b/e2sim/asn1c/E2connectionUpdate.c new file mode 100644 index 0000000..25614f2 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdate.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2connectionUpdate.h" + +asn_TYPE_member_t asn_MBR_E2connectionUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P24, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_specs_1 = { + sizeof(struct E2connectionUpdate), + offsetof(struct E2connectionUpdate, _asn_ctx), + asn_MAP_E2connectionUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate = { + "E2connectionUpdate", + "E2connectionUpdate", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdate_tags_1, + sizeof(asn_DEF_E2connectionUpdate_tags_1) + /sizeof(asn_DEF_E2connectionUpdate_tags_1[0]), /* 1 */ + asn_DEF_E2connectionUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdate_tags_1) + /sizeof(asn_DEF_E2connectionUpdate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdate_1, + 1, /* Elements count */ + &asn_SPC_E2connectionUpdate_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2connectionUpdate.h b/e2sim/asn1c/E2connectionUpdate.h new file mode 100644 index 0000000..1c6b4f7 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2connectionUpdate_H_ +#define _E2connectionUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2connectionUpdate */ +typedef struct E2connectionUpdate { + ProtocolIE_Container_85P24_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2connectionUpdate_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2connectionUpdateAcknowledge.c b/e2sim/asn1c/E2connectionUpdateAcknowledge.c new file mode 100644 index 0000000..6978668 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdateAcknowledge.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2connectionUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_E2connectionUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P25, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAcknowledge_specs_1 = { + sizeof(struct E2connectionUpdateAcknowledge), + offsetof(struct E2connectionUpdateAcknowledge, _asn_ctx), + asn_MAP_E2connectionUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAcknowledge = { + "E2connectionUpdateAcknowledge", + "E2connectionUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdateAcknowledge_tags_1, + sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_E2connectionUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_E2connectionUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2connectionUpdateAcknowledge.h b/e2sim/asn1c/E2connectionUpdateAcknowledge.h new file mode 100644 index 0000000..ace92b9 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdateAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2connectionUpdateAcknowledge_H_ +#define _E2connectionUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2connectionUpdateAcknowledge */ +typedef struct E2connectionUpdateAcknowledge { + ProtocolIE_Container_85P25_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2connectionUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2connectionUpdateFailure.c b/e2sim/asn1c/E2connectionUpdateFailure.c new file mode 100644 index 0000000..e537ba4 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdateFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2connectionUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P26, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_specs_1 = { + sizeof(struct E2connectionUpdateFailure), + offsetof(struct E2connectionUpdateFailure, _asn_ctx), + asn_MAP_E2connectionUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure = { + "E2connectionUpdateFailure", + "E2connectionUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdateFailure_tags_1, + sizeof(asn_DEF_E2connectionUpdateFailure_tags_1) + /sizeof(asn_DEF_E2connectionUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_E2connectionUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdateFailure_tags_1) + /sizeof(asn_DEF_E2connectionUpdateFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_E2connectionUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2connectionUpdateFailure.h b/e2sim/asn1c/E2connectionUpdateFailure.h new file mode 100644 index 0000000..6562915 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdateFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2connectionUpdateFailure_H_ +#define _E2connectionUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2connectionUpdateFailure */ +typedef struct E2connectionUpdateFailure { + ProtocolIE_Container_85P26_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2connectionUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2connectionUpdateRemove-Item.c b/e2sim/asn1c/E2connectionUpdateRemove-Item.c new file mode 100644 index 0000000..a788d76 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdateRemove-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2connectionUpdateRemove-Item.h" + +asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_Item, tnlInformation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TNLinformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "tnlInformation" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdateRemove_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateRemove_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tnlInformation */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_Item_specs_1 = { + sizeof(struct E2connectionUpdateRemove_Item), + offsetof(struct E2connectionUpdateRemove_Item, _asn_ctx), + asn_MAP_E2connectionUpdateRemove_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_Item = { + "E2connectionUpdateRemove-Item", + "E2connectionUpdateRemove-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdateRemove_Item_tags_1, + sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1) + /sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1[0]), /* 1 */ + asn_DEF_E2connectionUpdateRemove_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1) + /sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdateRemove_Item_1, + 1, /* Elements count */ + &asn_SPC_E2connectionUpdateRemove_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2connectionUpdateRemove-Item.h b/e2sim/asn1c/E2connectionUpdateRemove-Item.h new file mode 100644 index 0000000..f988de6 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdateRemove-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2connectionUpdateRemove_Item_H_ +#define _E2connectionUpdateRemove_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TNLinformation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2connectionUpdateRemove-Item */ +typedef struct E2connectionUpdateRemove_Item { + TNLinformation_t tnlInformation; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdateRemove_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2connectionUpdateRemove_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2connectionUpdateRemove-List.c b/e2sim/asn1c/E2connectionUpdateRemove-List.c new file mode 100644 index 0000000..ec3d7da --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdateRemove-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2connectionUpdateRemove-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2connectionUpdateRemove_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P20, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdateRemove_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2connectionUpdateRemove_List_specs_1 = { + sizeof(struct E2connectionUpdateRemove_List), + offsetof(struct E2connectionUpdateRemove_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_List = { + "E2connectionUpdateRemove-List", + "E2connectionUpdateRemove-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2connectionUpdateRemove_List_tags_1, + sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1) + /sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1[0]), /* 1 */ + asn_DEF_E2connectionUpdateRemove_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1) + /sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2connectionUpdateRemove_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2connectionUpdateRemove_List_1, + 1, /* Single element */ + &asn_SPC_E2connectionUpdateRemove_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2connectionUpdateRemove-List.h b/e2sim/asn1c/E2connectionUpdateRemove-List.h new file mode 100644 index 0000000..bb13654 --- /dev/null +++ b/e2sim/asn1c/E2connectionUpdateRemove-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2connectionUpdateRemove_List_H_ +#define _E2connectionUpdateRemove_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2connectionUpdateRemove-List */ +typedef struct E2connectionUpdateRemove_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdateRemove_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_List; +extern asn_SET_OF_specifics_t asn_SPC_E2connectionUpdateRemove_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2connectionUpdateRemove_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2connectionUpdateRemove_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigAddition-Item.c b/e2sim/asn1c/E2nodeComponentConfigAddition-Item.c new file mode 100644 index 0000000..1b4d003 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigAddition-Item.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigAddition-Item.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_Item, e2nodeComponentInterfaceType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceType" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_Item, e2nodeComponentID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_E2nodeComponentID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_Item, e2nodeComponentConfiguration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentConfiguration, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentConfiguration" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAddition_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAddition_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfiguration */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_Item_specs_1 = { + sizeof(struct E2nodeComponentConfigAddition_Item), + offsetof(struct E2nodeComponentConfigAddition_Item, _asn_ctx), + asn_MAP_E2nodeComponentConfigAddition_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_Item = { + "E2nodeComponentConfigAddition-Item", + "E2nodeComponentConfigAddition-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigAddition_Item_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigAddition_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigAddition_Item_1, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigAddition_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigAddition-Item.h b/e2sim/asn1c/E2nodeComponentConfigAddition-Item.h new file mode 100644 index 0000000..c4acf3f --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigAddition-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigAddition_Item_H_ +#define _E2nodeComponentConfigAddition_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2nodeComponentInterfaceType.h" +#include "E2nodeComponentID.h" +#include "E2nodeComponentConfiguration.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentConfigAddition-Item */ +typedef struct E2nodeComponentConfigAddition_Item { + E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; + E2nodeComponentID_t e2nodeComponentID; + E2nodeComponentConfiguration_t e2nodeComponentConfiguration; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigAddition_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigAddition_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigAddition-List.c b/e2sim/asn1c/E2nodeComponentConfigAddition-List.c new file mode 100644 index 0000000..3659351 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigAddition-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigAddition-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2nodeComponentConfigAddition_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P22, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAddition_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigAddition_List_specs_1 = { + sizeof(struct E2nodeComponentConfigAddition_List), + offsetof(struct E2nodeComponentConfigAddition_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_List = { + "E2nodeComponentConfigAddition-List", + "E2nodeComponentConfigAddition-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2nodeComponentConfigAddition_List_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigAddition_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2nodeComponentConfigAddition_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2nodeComponentConfigAddition_List_1, + 1, /* Single element */ + &asn_SPC_E2nodeComponentConfigAddition_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigAddition-List.h b/e2sim/asn1c/E2nodeComponentConfigAddition-List.h new file mode 100644 index 0000000..3a8bb0d --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigAddition-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigAddition_List_H_ +#define _E2nodeComponentConfigAddition_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2nodeComponentConfigAddition-List */ +typedef struct E2nodeComponentConfigAddition_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigAddition_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_List; +extern asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigAddition_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2nodeComponentConfigAddition_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigAddition_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.c b/e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.c new file mode 100644 index 0000000..d88973e --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigAdditionAck-Item.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_Item, e2nodeComponentInterfaceType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceType" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_Item, e2nodeComponentID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_E2nodeComponentID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_Item, e2nodeComponentConfigurationAck), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentConfigurationAck, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentConfigurationAck" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAdditionAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfigurationAck */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_Item_specs_1 = { + sizeof(struct E2nodeComponentConfigAdditionAck_Item), + offsetof(struct E2nodeComponentConfigAdditionAck_Item, _asn_ctx), + asn_MAP_E2nodeComponentConfigAdditionAck_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_Item = { + "E2nodeComponentConfigAdditionAck-Item", + "E2nodeComponentConfigAdditionAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigAdditionAck_Item_1, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigAdditionAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.h b/e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.h new file mode 100644 index 0000000..6da8715 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigAdditionAck_Item_H_ +#define _E2nodeComponentConfigAdditionAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2nodeComponentInterfaceType.h" +#include "E2nodeComponentID.h" +#include "E2nodeComponentConfigurationAck.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentConfigAdditionAck-Item */ +typedef struct E2nodeComponentConfigAdditionAck_Item { + E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; + E2nodeComponentID_t e2nodeComponentID; + E2nodeComponentConfigurationAck_t e2nodeComponentConfigurationAck; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigAdditionAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigAdditionAck_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.c b/e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.c new file mode 100644 index 0000000..2f29cf7 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigAdditionAck-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2nodeComponentConfigAdditionAck_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P26, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_List_specs_1 = { + sizeof(struct E2nodeComponentConfigAdditionAck_List), + offsetof(struct E2nodeComponentConfigAdditionAck_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_List = { + "E2nodeComponentConfigAdditionAck-List", + "E2nodeComponentConfigAdditionAck-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2nodeComponentConfigAdditionAck_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2nodeComponentConfigAdditionAck_List_1, + 1, /* Single element */ + &asn_SPC_E2nodeComponentConfigAdditionAck_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.h b/e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.h new file mode 100644 index 0000000..1c635ab --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigAdditionAck_List_H_ +#define _E2nodeComponentConfigAdditionAck_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2nodeComponentConfigAdditionAck-List */ +typedef struct E2nodeComponentConfigAdditionAck_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigAdditionAck_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_List; +extern asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2nodeComponentConfigAdditionAck_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigAdditionAck_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigRemoval-Item.c b/e2sim/asn1c/E2nodeComponentConfigRemoval-Item.c new file mode 100644 index 0000000..f8d317e --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigRemoval-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigRemoval-Item.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_Item, e2nodeComponentInterfaceType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceType" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_Item, e2nodeComponentID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_E2nodeComponentID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemoval_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* e2nodeComponentID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_Item_specs_1 = { + sizeof(struct E2nodeComponentConfigRemoval_Item), + offsetof(struct E2nodeComponentConfigRemoval_Item, _asn_ctx), + asn_MAP_E2nodeComponentConfigRemoval_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_Item = { + "E2nodeComponentConfigRemoval-Item", + "E2nodeComponentConfigRemoval-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigRemoval_Item_1, + 2, /* Elements count */ + &asn_SPC_E2nodeComponentConfigRemoval_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigRemoval-Item.h b/e2sim/asn1c/E2nodeComponentConfigRemoval-Item.h new file mode 100644 index 0000000..b2121c5 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigRemoval-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigRemoval_Item_H_ +#define _E2nodeComponentConfigRemoval_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2nodeComponentInterfaceType.h" +#include "E2nodeComponentID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentConfigRemoval-Item */ +typedef struct E2nodeComponentConfigRemoval_Item { + E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; + E2nodeComponentID_t e2nodeComponentID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigRemoval_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigRemoval_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigRemoval-List.c b/e2sim/asn1c/E2nodeComponentConfigRemoval-List.c new file mode 100644 index 0000000..bd54cdf --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigRemoval-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigRemoval-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2nodeComponentConfigRemoval_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P24, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemoval_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigRemoval_List_specs_1 = { + sizeof(struct E2nodeComponentConfigRemoval_List), + offsetof(struct E2nodeComponentConfigRemoval_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_List = { + "E2nodeComponentConfigRemoval-List", + "E2nodeComponentConfigRemoval-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2nodeComponentConfigRemoval_List_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigRemoval_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2nodeComponentConfigRemoval_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2nodeComponentConfigRemoval_List_1, + 1, /* Single element */ + &asn_SPC_E2nodeComponentConfigRemoval_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigRemoval-List.h b/e2sim/asn1c/E2nodeComponentConfigRemoval-List.h new file mode 100644 index 0000000..571fecf --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigRemoval-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigRemoval_List_H_ +#define _E2nodeComponentConfigRemoval_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2nodeComponentConfigRemoval-List */ +typedef struct E2nodeComponentConfigRemoval_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigRemoval_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_List; +extern asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigRemoval_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2nodeComponentConfigRemoval_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigRemoval_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.c b/e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.c new file mode 100644 index 0000000..f86caa6 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigRemovalAck-Item.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_Item, e2nodeComponentInterfaceType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceType" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_Item, e2nodeComponentID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_E2nodeComponentID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_Item, e2nodeComponentConfigurationAck), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentConfigurationAck, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentConfigurationAck" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemovalAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfigurationAck */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_Item_specs_1 = { + sizeof(struct E2nodeComponentConfigRemovalAck_Item), + offsetof(struct E2nodeComponentConfigRemovalAck_Item, _asn_ctx), + asn_MAP_E2nodeComponentConfigRemovalAck_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_Item = { + "E2nodeComponentConfigRemovalAck-Item", + "E2nodeComponentConfigRemovalAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigRemovalAck_Item_1, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigRemovalAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.h b/e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.h new file mode 100644 index 0000000..fcfd912 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigRemovalAck_Item_H_ +#define _E2nodeComponentConfigRemovalAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2nodeComponentInterfaceType.h" +#include "E2nodeComponentID.h" +#include "E2nodeComponentConfigurationAck.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentConfigRemovalAck-Item */ +typedef struct E2nodeComponentConfigRemovalAck_Item { + E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; + E2nodeComponentID_t e2nodeComponentID; + E2nodeComponentConfigurationAck_t e2nodeComponentConfigurationAck; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigRemovalAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigRemovalAck_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.c b/e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.c new file mode 100644 index 0000000..d7139ca --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigRemovalAck-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2nodeComponentConfigRemovalAck_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P28, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_List_specs_1 = { + sizeof(struct E2nodeComponentConfigRemovalAck_List), + offsetof(struct E2nodeComponentConfigRemovalAck_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_List = { + "E2nodeComponentConfigRemovalAck-List", + "E2nodeComponentConfigRemovalAck-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2nodeComponentConfigRemovalAck_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2nodeComponentConfigRemovalAck_List_1, + 1, /* Single element */ + &asn_SPC_E2nodeComponentConfigRemovalAck_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.h b/e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.h new file mode 100644 index 0000000..98c5799 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigRemovalAck_List_H_ +#define _E2nodeComponentConfigRemovalAck_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2nodeComponentConfigRemovalAck-List */ +typedef struct E2nodeComponentConfigRemovalAck_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigRemovalAck_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_List; +extern asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2nodeComponentConfigRemovalAck_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigRemovalAck_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigUpdate-Item.c b/e2sim/asn1c/E2nodeComponentConfigUpdate-Item.c new file mode 100644 index 0000000..809d7aa --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigUpdate-Item.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigUpdate-Item.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_Item, e2nodeComponentInterfaceType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceType" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_Item, e2nodeComponentID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_E2nodeComponentID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_Item, e2nodeComponentConfiguration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentConfiguration, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentConfiguration" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdate_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfiguration */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_Item_specs_1 = { + sizeof(struct E2nodeComponentConfigUpdate_Item), + offsetof(struct E2nodeComponentConfigUpdate_Item, _asn_ctx), + asn_MAP_E2nodeComponentConfigUpdate_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_Item = { + "E2nodeComponentConfigUpdate-Item", + "E2nodeComponentConfigUpdate-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigUpdate_Item_1, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigUpdate_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigUpdate-Item.h b/e2sim/asn1c/E2nodeComponentConfigUpdate-Item.h new file mode 100644 index 0000000..7876b71 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigUpdate-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigUpdate_Item_H_ +#define _E2nodeComponentConfigUpdate_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2nodeComponentInterfaceType.h" +#include "E2nodeComponentID.h" +#include "E2nodeComponentConfiguration.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentConfigUpdate-Item */ +typedef struct E2nodeComponentConfigUpdate_Item { + E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; + E2nodeComponentID_t e2nodeComponentID; + E2nodeComponentConfiguration_t e2nodeComponentConfiguration; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigUpdate_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigUpdate_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigUpdate-List.c b/e2sim/asn1c/E2nodeComponentConfigUpdate-List.c new file mode 100644 index 0000000..e8ee504 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigUpdate-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigUpdate-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2nodeComponentConfigUpdate_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P23, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdate_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigUpdate_List_specs_1 = { + sizeof(struct E2nodeComponentConfigUpdate_List), + offsetof(struct E2nodeComponentConfigUpdate_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_List = { + "E2nodeComponentConfigUpdate-List", + "E2nodeComponentConfigUpdate-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2nodeComponentConfigUpdate_List_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigUpdate_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2nodeComponentConfigUpdate_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2nodeComponentConfigUpdate_List_1, + 1, /* Single element */ + &asn_SPC_E2nodeComponentConfigUpdate_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigUpdate-List.h b/e2sim/asn1c/E2nodeComponentConfigUpdate-List.h new file mode 100644 index 0000000..27a0d30 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigUpdate-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigUpdate_List_H_ +#define _E2nodeComponentConfigUpdate_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2nodeComponentConfigUpdate-List */ +typedef struct E2nodeComponentConfigUpdate_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigUpdate_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_List; +extern asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigUpdate_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2nodeComponentConfigUpdate_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigUpdate_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.c b/e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.c new file mode 100644 index 0000000..90bb44c --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigUpdateAck-Item.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_Item, e2nodeComponentInterfaceType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceType" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_Item, e2nodeComponentID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_E2nodeComponentID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_Item, e2nodeComponentConfigurationAck), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentConfigurationAck, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentConfigurationAck" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdateAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfigurationAck */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_Item_specs_1 = { + sizeof(struct E2nodeComponentConfigUpdateAck_Item), + offsetof(struct E2nodeComponentConfigUpdateAck_Item, _asn_ctx), + asn_MAP_E2nodeComponentConfigUpdateAck_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_Item = { + "E2nodeComponentConfigUpdateAck-Item", + "E2nodeComponentConfigUpdateAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigUpdateAck_Item_1, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigUpdateAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.h b/e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.h new file mode 100644 index 0000000..f495729 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigUpdateAck_Item_H_ +#define _E2nodeComponentConfigUpdateAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2nodeComponentInterfaceType.h" +#include "E2nodeComponentID.h" +#include "E2nodeComponentConfigurationAck.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentConfigUpdateAck-Item */ +typedef struct E2nodeComponentConfigUpdateAck_Item { + E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; + E2nodeComponentID_t e2nodeComponentID; + E2nodeComponentConfigurationAck_t e2nodeComponentConfigurationAck; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigUpdateAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigUpdateAck_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.c b/e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.c new file mode 100644 index 0000000..1a85f0f --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigUpdateAck-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2nodeComponentConfigUpdateAck_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P27, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_List_specs_1 = { + sizeof(struct E2nodeComponentConfigUpdateAck_List), + offsetof(struct E2nodeComponentConfigUpdateAck_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_List = { + "E2nodeComponentConfigUpdateAck-List", + "E2nodeComponentConfigUpdateAck-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2nodeComponentConfigUpdateAck_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2nodeComponentConfigUpdateAck_List_1, + 1, /* Single element */ + &asn_SPC_E2nodeComponentConfigUpdateAck_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.h b/e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.h new file mode 100644 index 0000000..8618b65 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigUpdateAck_List_H_ +#define _E2nodeComponentConfigUpdateAck_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2nodeComponentConfigUpdateAck-List */ +typedef struct E2nodeComponentConfigUpdateAck_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigUpdateAck_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_List; +extern asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2nodeComponentConfigUpdateAck_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigUpdateAck_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfiguration.c b/e2sim/asn1c/E2nodeComponentConfiguration.c new file mode 100644 index 0000000..9d34d24 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfiguration.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfiguration.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfiguration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfiguration, e2nodeComponentRequestPart), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentRequestPart" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfiguration, e2nodeComponentResponsePart), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentResponsePart" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfiguration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfiguration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentRequestPart */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* e2nodeComponentResponsePart */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfiguration_specs_1 = { + sizeof(struct E2nodeComponentConfiguration), + offsetof(struct E2nodeComponentConfiguration, _asn_ctx), + asn_MAP_E2nodeComponentConfiguration_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfiguration = { + "E2nodeComponentConfiguration", + "E2nodeComponentConfiguration", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfiguration_tags_1, + sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfiguration_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfiguration_1, + 2, /* Elements count */ + &asn_SPC_E2nodeComponentConfiguration_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfiguration.h b/e2sim/asn1c/E2nodeComponentConfiguration.h new file mode 100644 index 0000000..c9baf67 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfiguration.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfiguration_H_ +#define _E2nodeComponentConfiguration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentConfiguration */ +typedef struct E2nodeComponentConfiguration { + OCTET_STRING_t e2nodeComponentRequestPart; + OCTET_STRING_t e2nodeComponentResponsePart; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfiguration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfiguration; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfiguration_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfiguration_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfiguration_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentConfigurationAck.c b/e2sim/asn1c/E2nodeComponentConfigurationAck.c new file mode 100644 index 0000000..3f2e6c1 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigurationAck.c @@ -0,0 +1,145 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentConfigurationAck.h" + +#include "Cause.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_updateOutcome_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_updateOutcome_value2enum_2[] = { + { 0, 7, "success" }, + { 1, 7, "failure" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_updateOutcome_enum2value_2[] = { + 1, /* failure(1) */ + 0 /* success(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_updateOutcome_specs_2 = { + asn_MAP_updateOutcome_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_updateOutcome_enum2value_2, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_updateOutcome_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_updateOutcome_2 = { + "updateOutcome", + "updateOutcome", + &asn_OP_NativeEnumerated, + asn_DEF_updateOutcome_tags_2, + sizeof(asn_DEF_updateOutcome_tags_2) + /sizeof(asn_DEF_updateOutcome_tags_2[0]) - 1, /* 1 */ + asn_DEF_updateOutcome_tags_2, /* Same as above */ + sizeof(asn_DEF_updateOutcome_tags_2) + /sizeof(asn_DEF_updateOutcome_tags_2[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_updateOutcome_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_updateOutcome_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigurationAck_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigurationAck, updateOutcome), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_updateOutcome_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "updateOutcome" + }, + { ATF_POINTER, 1, offsetof(struct E2nodeComponentConfigurationAck, failureCause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "failureCause" + }, +}; +static const int asn_MAP_E2nodeComponentConfigurationAck_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigurationAck_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigurationAck_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* updateOutcome */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* failureCause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigurationAck_specs_1 = { + sizeof(struct E2nodeComponentConfigurationAck), + offsetof(struct E2nodeComponentConfigurationAck, _asn_ctx), + asn_MAP_E2nodeComponentConfigurationAck_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E2nodeComponentConfigurationAck_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigurationAck = { + "E2nodeComponentConfigurationAck", + "E2nodeComponentConfigurationAck", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigurationAck_tags_1, + sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigurationAck_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1) + /sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigurationAck_1, + 2, /* Elements count */ + &asn_SPC_E2nodeComponentConfigurationAck_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentConfigurationAck.h b/e2sim/asn1c/E2nodeComponentConfigurationAck.h new file mode 100644 index 0000000..c766034 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentConfigurationAck.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentConfigurationAck_H_ +#define _E2nodeComponentConfigurationAck_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2nodeComponentConfigurationAck__updateOutcome { + E2nodeComponentConfigurationAck__updateOutcome_success = 0, + E2nodeComponentConfigurationAck__updateOutcome_failure = 1 + /* + * Enumeration is extensible + */ +} e_E2nodeComponentConfigurationAck__updateOutcome; + +/* Forward declarations */ +struct Cause; + +/* E2nodeComponentConfigurationAck */ +typedef struct E2nodeComponentConfigurationAck { + long updateOutcome; + struct Cause *failureCause; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigurationAck_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_updateOutcome_2; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigurationAck; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigurationAck_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigurationAck_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentConfigurationAck_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentID.c b/e2sim/asn1c/E2nodeComponentID.c new file mode 100644 index 0000000..caf749b --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentID.c @@ -0,0 +1,185 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentID.h" + +#include "E2nodeComponentInterfaceNG.h" +#include "E2nodeComponentInterfaceXn.h" +#include "E2nodeComponentInterfaceE1.h" +#include "E2nodeComponentInterfaceF1.h" +#include "E2nodeComponentInterfaceW1.h" +#include "E2nodeComponentInterfaceS1.h" +#include "E2nodeComponentInterfaceX2.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2nodeComponentID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2nodeComponentID_1[] = { + { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeNG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceNG, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceTypeNG" + }, + { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeXn), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceXn, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceTypeXn" + }, + { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeE1), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceE1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceTypeE1" + }, + { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeF1), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceF1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceTypeF1" + }, + { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeW1), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceW1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceTypeW1" + }, + { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeS1), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceS1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceTypeS1" + }, + { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeX2), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2nodeComponentInterfaceX2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e2nodeComponentInterfaceTypeX2" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceTypeNG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentInterfaceTypeXn */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2nodeComponentInterfaceTypeE1 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e2nodeComponentInterfaceTypeF1 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* e2nodeComponentInterfaceTypeW1 */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e2nodeComponentInterfaceTypeS1 */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* e2nodeComponentInterfaceTypeX2 */ +}; +asn_CHOICE_specifics_t asn_SPC_E2nodeComponentID_specs_1 = { + sizeof(struct E2nodeComponentID), + offsetof(struct E2nodeComponentID, _asn_ctx), + offsetof(struct E2nodeComponentID, present), + sizeof(((struct E2nodeComponentID *)0)->present), + asn_MAP_E2nodeComponentID_tag2el_1, + 7, /* Count of tags in the map */ + 0, 0, + 7 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentID = { + "E2nodeComponentID", + "E2nodeComponentID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2nodeComponentID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_E2nodeComponentID_1, + 7, /* Elements count */ + &asn_SPC_E2nodeComponentID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentID.h b/e2sim/asn1c/E2nodeComponentID.h new file mode 100644 index 0000000..89d1638 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentID.h @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentID_H_ +#define _E2nodeComponentID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2nodeComponentID_PR { + E2nodeComponentID_PR_NOTHING, /* No components present */ + E2nodeComponentID_PR_e2nodeComponentInterfaceTypeNG, + E2nodeComponentID_PR_e2nodeComponentInterfaceTypeXn, + E2nodeComponentID_PR_e2nodeComponentInterfaceTypeE1, + E2nodeComponentID_PR_e2nodeComponentInterfaceTypeF1, + E2nodeComponentID_PR_e2nodeComponentInterfaceTypeW1, + E2nodeComponentID_PR_e2nodeComponentInterfaceTypeS1, + E2nodeComponentID_PR_e2nodeComponentInterfaceTypeX2 + /* Extensions may appear below */ + +} E2nodeComponentID_PR; + +/* Forward declarations */ +struct E2nodeComponentInterfaceNG; +struct E2nodeComponentInterfaceXn; +struct E2nodeComponentInterfaceE1; +struct E2nodeComponentInterfaceF1; +struct E2nodeComponentInterfaceW1; +struct E2nodeComponentInterfaceS1; +struct E2nodeComponentInterfaceX2; + +/* E2nodeComponentID */ +typedef struct E2nodeComponentID { + E2nodeComponentID_PR present; + union E2nodeComponentID_u { + struct E2nodeComponentInterfaceNG *e2nodeComponentInterfaceTypeNG; + struct E2nodeComponentInterfaceXn *e2nodeComponentInterfaceTypeXn; + struct E2nodeComponentInterfaceE1 *e2nodeComponentInterfaceTypeE1; + struct E2nodeComponentInterfaceF1 *e2nodeComponentInterfaceTypeF1; + struct E2nodeComponentInterfaceW1 *e2nodeComponentInterfaceTypeW1; + struct E2nodeComponentInterfaceS1 *e2nodeComponentInterfaceTypeS1; + struct E2nodeComponentInterfaceX2 *e2nodeComponentInterfaceTypeX2; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentID; +extern asn_CHOICE_specifics_t asn_SPC_E2nodeComponentID_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentID_1[7]; +extern asn_per_constraints_t asn_PER_type_E2nodeComponentID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentInterfaceE1.c b/e2sim/asn1c/E2nodeComponentInterfaceE1.c new file mode 100644 index 0000000..7a89b39 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceE1.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentInterfaceE1.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceE1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceE1, gNB_CU_UP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GNB_CU_UP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-UP-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceE1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceE1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-UP-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceE1_specs_1 = { + sizeof(struct E2nodeComponentInterfaceE1), + offsetof(struct E2nodeComponentInterfaceE1, _asn_ctx), + asn_MAP_E2nodeComponentInterfaceE1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceE1 = { + "E2nodeComponentInterfaceE1", + "E2nodeComponentInterfaceE1", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentInterfaceE1_tags_1, + sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentInterfaceE1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentInterfaceE1_1, + 1, /* Elements count */ + &asn_SPC_E2nodeComponentInterfaceE1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentInterfaceE1.h b/e2sim/asn1c/E2nodeComponentInterfaceE1.h new file mode 100644 index 0000000..d6e1dbc --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceE1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentInterfaceE1_H_ +#define _E2nodeComponentInterfaceE1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2AP-IEs_GNB-CU-UP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentInterfaceE1 */ +typedef struct E2nodeComponentInterfaceE1 { + E2AP_IEs_GNB_CU_UP_ID_t gNB_CU_UP_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentInterfaceE1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceE1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceE1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceE1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentInterfaceE1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentInterfaceF1.c b/e2sim/asn1c/E2nodeComponentInterfaceF1.c new file mode 100644 index 0000000..04b98fd --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceF1.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentInterfaceF1.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceF1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceF1, gNB_DU_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GNB_DU_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-DU-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceF1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceF1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-DU-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceF1_specs_1 = { + sizeof(struct E2nodeComponentInterfaceF1), + offsetof(struct E2nodeComponentInterfaceF1, _asn_ctx), + asn_MAP_E2nodeComponentInterfaceF1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceF1 = { + "E2nodeComponentInterfaceF1", + "E2nodeComponentInterfaceF1", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentInterfaceF1_tags_1, + sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentInterfaceF1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentInterfaceF1_1, + 1, /* Elements count */ + &asn_SPC_E2nodeComponentInterfaceF1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentInterfaceF1.h b/e2sim/asn1c/E2nodeComponentInterfaceF1.h new file mode 100644 index 0000000..d1d87ac --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceF1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentInterfaceF1_H_ +#define _E2nodeComponentInterfaceF1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2AP-IEs_GNB-DU-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentInterfaceF1 */ +typedef struct E2nodeComponentInterfaceF1 { + E2AP_IEs_GNB_DU_ID_t gNB_DU_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentInterfaceF1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceF1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceF1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceF1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentInterfaceF1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentInterfaceNG.c b/e2sim/asn1c/E2nodeComponentInterfaceNG.c new file mode 100644 index 0000000..b452648 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceNG.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentInterfaceNG.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceNG_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceNG, amf_name), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AMFName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "amf-name" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceNG_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceNG_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* amf-name */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceNG_specs_1 = { + sizeof(struct E2nodeComponentInterfaceNG), + offsetof(struct E2nodeComponentInterfaceNG, _asn_ctx), + asn_MAP_E2nodeComponentInterfaceNG_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceNG = { + "E2nodeComponentInterfaceNG", + "E2nodeComponentInterfaceNG", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentInterfaceNG_tags_1, + sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentInterfaceNG_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentInterfaceNG_1, + 1, /* Elements count */ + &asn_SPC_E2nodeComponentInterfaceNG_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentInterfaceNG.h b/e2sim/asn1c/E2nodeComponentInterfaceNG.h new file mode 100644 index 0000000..0d5dab3 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceNG.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentInterfaceNG_H_ +#define _E2nodeComponentInterfaceNG_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AMFName.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentInterfaceNG */ +typedef struct E2nodeComponentInterfaceNG { + AMFName_t amf_name; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentInterfaceNG_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceNG; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceNG_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceNG_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentInterfaceNG_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentInterfaceS1.c b/e2sim/asn1c/E2nodeComponentInterfaceS1.c new file mode 100644 index 0000000..646f75f --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceS1.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentInterfaceS1.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceS1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceS1, mme_name), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MMEname, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mme-name" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceS1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceS1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mme-name */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceS1_specs_1 = { + sizeof(struct E2nodeComponentInterfaceS1), + offsetof(struct E2nodeComponentInterfaceS1, _asn_ctx), + asn_MAP_E2nodeComponentInterfaceS1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceS1 = { + "E2nodeComponentInterfaceS1", + "E2nodeComponentInterfaceS1", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentInterfaceS1_tags_1, + sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentInterfaceS1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentInterfaceS1_1, + 1, /* Elements count */ + &asn_SPC_E2nodeComponentInterfaceS1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentInterfaceS1.h b/e2sim/asn1c/E2nodeComponentInterfaceS1.h new file mode 100644 index 0000000..1266777 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceS1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentInterfaceS1_H_ +#define _E2nodeComponentInterfaceS1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MMEname.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentInterfaceS1 */ +typedef struct E2nodeComponentInterfaceS1 { + MMEname_t mme_name; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentInterfaceS1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceS1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceS1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceS1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentInterfaceS1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentInterfaceType.c b/e2sim/asn1c/E2nodeComponentInterfaceType.c new file mode 100644 index 0000000..8880f69 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceType.c @@ -0,0 +1,75 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentInterfaceType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2nodeComponentInterfaceType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_E2nodeComponentInterfaceType_value2enum_1[] = { + { 0, 2, "ng" }, + { 1, 2, "xn" }, + { 2, 2, "e1" }, + { 3, 2, "f1" }, + { 4, 2, "w1" }, + { 5, 2, "s1" }, + { 6, 2, "x2" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_E2nodeComponentInterfaceType_enum2value_1[] = { + 2, /* e1(2) */ + 3, /* f1(3) */ + 0, /* ng(0) */ + 5, /* s1(5) */ + 4, /* w1(4) */ + 6, /* x2(6) */ + 1 /* xn(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_E2nodeComponentInterfaceType_specs_1 = { + asn_MAP_E2nodeComponentInterfaceType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_E2nodeComponentInterfaceType_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceType = { + "E2nodeComponentInterfaceType", + "E2nodeComponentInterfaceType", + &asn_OP_NativeEnumerated, + asn_DEF_E2nodeComponentInterfaceType_tags_1, + sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentInterfaceType_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2nodeComponentInterfaceType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_E2nodeComponentInterfaceType_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentInterfaceType.h b/e2sim/asn1c/E2nodeComponentInterfaceType.h new file mode 100644 index 0000000..d282617 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceType.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentInterfaceType_H_ +#define _E2nodeComponentInterfaceType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2nodeComponentInterfaceType { + E2nodeComponentInterfaceType_ng = 0, + E2nodeComponentInterfaceType_xn = 1, + E2nodeComponentInterfaceType_e1 = 2, + E2nodeComponentInterfaceType_f1 = 3, + E2nodeComponentInterfaceType_w1 = 4, + E2nodeComponentInterfaceType_s1 = 5, + E2nodeComponentInterfaceType_x2 = 6 + /* + * Enumeration is extensible + */ +} e_E2nodeComponentInterfaceType; + +/* E2nodeComponentInterfaceType */ +typedef long E2nodeComponentInterfaceType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E2nodeComponentInterfaceType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceType; +extern const asn_INTEGER_specifics_t asn_SPC_E2nodeComponentInterfaceType_specs_1; +asn_struct_free_f E2nodeComponentInterfaceType_free; +asn_struct_print_f E2nodeComponentInterfaceType_print; +asn_constr_check_f E2nodeComponentInterfaceType_constraint; +ber_type_decoder_f E2nodeComponentInterfaceType_decode_ber; +der_type_encoder_f E2nodeComponentInterfaceType_encode_der; +xer_type_decoder_f E2nodeComponentInterfaceType_decode_xer; +xer_type_encoder_f E2nodeComponentInterfaceType_encode_xer; +jer_type_encoder_f E2nodeComponentInterfaceType_encode_jer; +per_type_decoder_f E2nodeComponentInterfaceType_decode_uper; +per_type_encoder_f E2nodeComponentInterfaceType_encode_uper; +per_type_decoder_f E2nodeComponentInterfaceType_decode_aper; +per_type_encoder_f E2nodeComponentInterfaceType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentInterfaceType_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentInterfaceW1.c b/e2sim/asn1c/E2nodeComponentInterfaceW1.c new file mode 100644 index 0000000..8fdbd2b --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceW1.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentInterfaceW1.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceW1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceW1, ng_eNB_DU_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_NGENB_DU_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ng-eNB-DU-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceW1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceW1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ng-eNB-DU-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceW1_specs_1 = { + sizeof(struct E2nodeComponentInterfaceW1), + offsetof(struct E2nodeComponentInterfaceW1, _asn_ctx), + asn_MAP_E2nodeComponentInterfaceW1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceW1 = { + "E2nodeComponentInterfaceW1", + "E2nodeComponentInterfaceW1", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentInterfaceW1_tags_1, + sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentInterfaceW1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentInterfaceW1_1, + 1, /* Elements count */ + &asn_SPC_E2nodeComponentInterfaceW1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentInterfaceW1.h b/e2sim/asn1c/E2nodeComponentInterfaceW1.h new file mode 100644 index 0000000..4c0cc47 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceW1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentInterfaceW1_H_ +#define _E2nodeComponentInterfaceW1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2AP-IEs_NGENB-DU-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentInterfaceW1 */ +typedef struct E2nodeComponentInterfaceW1 { + E2AP_IEs_NGENB_DU_ID_t ng_eNB_DU_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentInterfaceW1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceW1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceW1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceW1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentInterfaceW1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentInterfaceX2.c b/e2sim/asn1c/E2nodeComponentInterfaceX2.c new file mode 100644 index 0000000..9c771ed --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceX2.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentInterfaceX2.h" + +#include "E2AP-IEs_GlobalENB-ID.h" +#include "E2AP-IEs_GlobalenGNB-ID.h" +asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceX2_1[] = { + { ATF_POINTER, 2, offsetof(struct E2nodeComponentInterfaceX2, global_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GlobalENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-eNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct E2nodeComponentInterfaceX2, global_en_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GlobalenGNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-en-gNB-ID" + }, +}; +static const int asn_MAP_E2nodeComponentInterfaceX2_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceX2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceX2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global-en-gNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceX2_specs_1 = { + sizeof(struct E2nodeComponentInterfaceX2), + offsetof(struct E2nodeComponentInterfaceX2, _asn_ctx), + asn_MAP_E2nodeComponentInterfaceX2_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E2nodeComponentInterfaceX2_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceX2 = { + "E2nodeComponentInterfaceX2", + "E2nodeComponentInterfaceX2", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentInterfaceX2_tags_1, + sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentInterfaceX2_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentInterfaceX2_1, + 2, /* Elements count */ + &asn_SPC_E2nodeComponentInterfaceX2_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentInterfaceX2.h b/e2sim/asn1c/E2nodeComponentInterfaceX2.h new file mode 100644 index 0000000..fa71d6e --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceX2.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentInterfaceX2_H_ +#define _E2nodeComponentInterfaceX2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GlobalENB_ID; +struct GlobalenGNB_ID; + +/* E2nodeComponentInterfaceX2 */ +typedef struct E2nodeComponentInterfaceX2 { + struct GlobalENB_ID *global_eNB_ID; /* OPTIONAL */ + struct GlobalenGNB_ID *global_en_gNB_ID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentInterfaceX2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceX2; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceX2_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceX2_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentInterfaceX2_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeComponentInterfaceXn.c b/e2sim/asn1c/E2nodeComponentInterfaceXn.c new file mode 100644 index 0000000..1180a3e --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceXn.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeComponentInterfaceXn.h" + +asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceXn_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceXn, global_NG_RAN_Node_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GlobalNG_RANNode_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-NG-RAN-Node-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceXn_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceXn_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-NG-RAN-Node-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceXn_specs_1 = { + sizeof(struct E2nodeComponentInterfaceXn), + offsetof(struct E2nodeComponentInterfaceXn, _asn_ctx), + asn_MAP_E2nodeComponentInterfaceXn_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceXn = { + "E2nodeComponentInterfaceXn", + "E2nodeComponentInterfaceXn", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentInterfaceXn_tags_1, + sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1[0]), /* 1 */ + asn_DEF_E2nodeComponentInterfaceXn_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1) + /sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentInterfaceXn_1, + 1, /* Elements count */ + &asn_SPC_E2nodeComponentInterfaceXn_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeComponentInterfaceXn.h b/e2sim/asn1c/E2nodeComponentInterfaceXn.h new file mode 100644 index 0000000..c9d4504 --- /dev/null +++ b/e2sim/asn1c/E2nodeComponentInterfaceXn.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeComponentInterfaceXn_H_ +#define _E2nodeComponentInterfaceXn_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalNG-RANNode-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeComponentInterfaceXn */ +typedef struct E2nodeComponentInterfaceXn { + GlobalNG_RANNode_ID_t global_NG_RAN_Node_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentInterfaceXn_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceXn; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceXn_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceXn_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeComponentInterfaceXn_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeConfigurationUpdate.c b/e2sim/asn1c/E2nodeConfigurationUpdate.c new file mode 100644 index 0000000..fa76717 --- /dev/null +++ b/e2sim/asn1c/E2nodeConfigurationUpdate.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeConfigurationUpdate.h" + +asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P27, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_specs_1 = { + sizeof(struct E2nodeConfigurationUpdate), + offsetof(struct E2nodeConfigurationUpdate, _asn_ctx), + asn_MAP_E2nodeConfigurationUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate = { + "E2nodeConfigurationUpdate", + "E2nodeConfigurationUpdate", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeConfigurationUpdate_tags_1, + sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1) + /sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1[0]), /* 1 */ + asn_DEF_E2nodeConfigurationUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1) + /sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeConfigurationUpdate_1, + 1, /* Elements count */ + &asn_SPC_E2nodeConfigurationUpdate_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeConfigurationUpdate.h b/e2sim/asn1c/E2nodeConfigurationUpdate.h new file mode 100644 index 0000000..e669d4d --- /dev/null +++ b/e2sim/asn1c/E2nodeConfigurationUpdate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeConfigurationUpdate_H_ +#define _E2nodeConfigurationUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeConfigurationUpdate */ +typedef struct E2nodeConfigurationUpdate { + ProtocolIE_Container_85P27_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeConfigurationUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeConfigurationUpdate_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.c b/e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.c new file mode 100644 index 0000000..c027cf6 --- /dev/null +++ b/e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeConfigurationUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P28, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_specs_1 = { + sizeof(struct E2nodeConfigurationUpdateAcknowledge), + offsetof(struct E2nodeConfigurationUpdateAcknowledge, _asn_ctx), + asn_MAP_E2nodeConfigurationUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge = { + "E2nodeConfigurationUpdateAcknowledge", + "E2nodeConfigurationUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1, + sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeConfigurationUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_E2nodeConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.h b/e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.h new file mode 100644 index 0000000..095ec32 --- /dev/null +++ b/e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeConfigurationUpdateAcknowledge_H_ +#define _E2nodeConfigurationUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeConfigurationUpdateAcknowledge */ +typedef struct E2nodeConfigurationUpdateAcknowledge { + ProtocolIE_Container_85P28_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeConfigurationUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeConfigurationUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeConfigurationUpdateFailure.c b/e2sim/asn1c/E2nodeConfigurationUpdateFailure.c new file mode 100644 index 0000000..f91b880 --- /dev/null +++ b/e2sim/asn1c/E2nodeConfigurationUpdateFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeConfigurationUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P29, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_specs_1 = { + sizeof(struct E2nodeConfigurationUpdateFailure), + offsetof(struct E2nodeConfigurationUpdateFailure, _asn_ctx), + asn_MAP_E2nodeConfigurationUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure = { + "E2nodeConfigurationUpdateFailure", + "E2nodeConfigurationUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeConfigurationUpdateFailure_tags_1, + sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_E2nodeConfigurationUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeConfigurationUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_E2nodeConfigurationUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeConfigurationUpdateFailure.h b/e2sim/asn1c/E2nodeConfigurationUpdateFailure.h new file mode 100644 index 0000000..3c752a4 --- /dev/null +++ b/e2sim/asn1c/E2nodeConfigurationUpdateFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeConfigurationUpdateFailure_H_ +#define _E2nodeConfigurationUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeConfigurationUpdateFailure */ +typedef struct E2nodeConfigurationUpdateFailure { + ProtocolIE_Container_85P29_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeConfigurationUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeConfigurationUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeTNLassociationRemoval-Item.c b/e2sim/asn1c/E2nodeTNLassociationRemoval-Item.c new file mode 100644 index 0000000..86065e2 --- /dev/null +++ b/e2sim/asn1c/E2nodeTNLassociationRemoval-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeTNLassociationRemoval-Item.h" + +asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_Item, tnlInformation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TNLinformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "tnlInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_Item, tnlInformationRIC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TNLinformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "tnlInformationRIC" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeTNLassociationRemoval_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlInformation */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tnlInformationRIC */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_Item_specs_1 = { + sizeof(struct E2nodeTNLassociationRemoval_Item), + offsetof(struct E2nodeTNLassociationRemoval_Item, _asn_ctx), + asn_MAP_E2nodeTNLassociationRemoval_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_Item = { + "E2nodeTNLassociationRemoval-Item", + "E2nodeTNLassociationRemoval-Item", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1, + sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1) + /sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1[0]), /* 1 */ + asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1) + /sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeTNLassociationRemoval_Item_1, + 2, /* Elements count */ + &asn_SPC_E2nodeTNLassociationRemoval_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeTNLassociationRemoval-Item.h b/e2sim/asn1c/E2nodeTNLassociationRemoval-Item.h new file mode 100644 index 0000000..06ff83b --- /dev/null +++ b/e2sim/asn1c/E2nodeTNLassociationRemoval-Item.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeTNLassociationRemoval_Item_H_ +#define _E2nodeTNLassociationRemoval_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TNLinformation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2nodeTNLassociationRemoval-Item */ +typedef struct E2nodeTNLassociationRemoval_Item { + TNLinformation_t tnlInformation; + TNLinformation_t tnlInformationRIC; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeTNLassociationRemoval_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeTNLassociationRemoval_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2nodeTNLassociationRemoval-List.c b/e2sim/asn1c/E2nodeTNLassociationRemoval-List.c new file mode 100644 index 0000000..2805422 --- /dev/null +++ b/e2sim/asn1c/E2nodeTNLassociationRemoval-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2nodeTNLassociationRemoval-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_E2nodeTNLassociationRemoval_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P25, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeTNLassociationRemoval_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E2nodeTNLassociationRemoval_List_specs_1 = { + sizeof(struct E2nodeTNLassociationRemoval_List), + offsetof(struct E2nodeTNLassociationRemoval_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_List = { + "E2nodeTNLassociationRemoval-List", + "E2nodeTNLassociationRemoval-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E2nodeTNLassociationRemoval_List_tags_1, + sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1) + /sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1[0]), /* 1 */ + asn_DEF_E2nodeTNLassociationRemoval_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1) + /sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_E2nodeTNLassociationRemoval_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_E2nodeTNLassociationRemoval_List_1, + 1, /* Single element */ + &asn_SPC_E2nodeTNLassociationRemoval_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2nodeTNLassociationRemoval-List.h b/e2sim/asn1c/E2nodeTNLassociationRemoval-List.h new file mode 100644 index 0000000..c30f029 --- /dev/null +++ b/e2sim/asn1c/E2nodeTNLassociationRemoval-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2nodeTNLassociationRemoval_List_H_ +#define _E2nodeTNLassociationRemoval_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* E2nodeTNLassociationRemoval-List */ +typedef struct E2nodeTNLassociationRemoval_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeTNLassociationRemoval_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_List; +extern asn_SET_OF_specifics_t asn_SPC_E2nodeTNLassociationRemoval_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E2nodeTNLassociationRemoval_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2nodeTNLassociationRemoval_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2setupFailure.c b/e2sim/asn1c/E2setupFailure.c new file mode 100644 index 0000000..ff6eaa4 --- /dev/null +++ b/e2sim/asn1c/E2setupFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2setupFailure.h" + +asn_TYPE_member_t asn_MBR_E2setupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P23, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1 = { + sizeof(struct E2setupFailure), + offsetof(struct E2setupFailure, _asn_ctx), + asn_MAP_E2setupFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupFailure = { + "E2setupFailure", + "E2setupFailure", + &asn_OP_SEQUENCE, + asn_DEF_E2setupFailure_tags_1, + sizeof(asn_DEF_E2setupFailure_tags_1) + /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ + asn_DEF_E2setupFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_E2setupFailure_tags_1) + /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2setupFailure_1, + 1, /* Elements count */ + &asn_SPC_E2setupFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2setupFailure.h b/e2sim/asn1c/E2setupFailure.h new file mode 100644 index 0000000..a5cb8e9 --- /dev/null +++ b/e2sim/asn1c/E2setupFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2setupFailure_H_ +#define _E2setupFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2setupFailure */ +typedef struct E2setupFailure { + ProtocolIE_Container_85P23_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2setupFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_E2setupFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2setupFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2setupRequest.c b/e2sim/asn1c/E2setupRequest.c new file mode 100644 index 0000000..ce2c1fc --- /dev/null +++ b/e2sim/asn1c/E2setupRequest.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2setupRequest.h" + +asn_TYPE_member_t asn_MBR_E2setupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P21, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1 = { + sizeof(struct E2setupRequest), + offsetof(struct E2setupRequest, _asn_ctx), + asn_MAP_E2setupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupRequest = { + "E2setupRequest", + "E2setupRequest", + &asn_OP_SEQUENCE, + asn_DEF_E2setupRequest_tags_1, + sizeof(asn_DEF_E2setupRequest_tags_1) + /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ + asn_DEF_E2setupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_E2setupRequest_tags_1) + /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2setupRequest_1, + 1, /* Elements count */ + &asn_SPC_E2setupRequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2setupRequest.h b/e2sim/asn1c/E2setupRequest.h new file mode 100644 index 0000000..6e4ff38 --- /dev/null +++ b/e2sim/asn1c/E2setupRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2setupRequest_H_ +#define _E2setupRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2setupRequest */ +typedef struct E2setupRequest { + ProtocolIE_Container_85P21_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2setupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_E2setupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2setupRequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/E2setupResponse.c b/e2sim/asn1c/E2setupResponse.c new file mode 100644 index 0000000..4e8b1e0 --- /dev/null +++ b/e2sim/asn1c/E2setupResponse.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "E2setupResponse.h" + +asn_TYPE_member_t asn_MBR_E2setupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P22, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1 = { + sizeof(struct E2setupResponse), + offsetof(struct E2setupResponse, _asn_ctx), + asn_MAP_E2setupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupResponse = { + "E2setupResponse", + "E2setupResponse", + &asn_OP_SEQUENCE, + asn_DEF_E2setupResponse_tags_1, + sizeof(asn_DEF_E2setupResponse_tags_1) + /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ + asn_DEF_E2setupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_E2setupResponse_tags_1) + /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2setupResponse_1, + 1, /* Elements count */ + &asn_SPC_E2setupResponse_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/E2setupResponse.h b/e2sim/asn1c/E2setupResponse.h new file mode 100644 index 0000000..f09b2f7 --- /dev/null +++ b/e2sim/asn1c/E2setupResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _E2setupResponse_H_ +#define _E2setupResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2setupResponse */ +typedef struct E2setupResponse { + ProtocolIE_Container_85P22_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2setupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_E2setupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2setupResponse_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/EN-GNB-ID.c b/e2sim/asn1c/EN-GNB-ID.c new file mode 100644 index 0000000..7e5b32f --- /dev/null +++ b/e2sim/asn1c/EN-GNB-ID.c @@ -0,0 +1,108 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "EN-GNB-ID.h" + +static int +memb_en_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22UL && size <= 32UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_en_gNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EN_GNB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_EN_GNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EN_GNB_ID, choice.en_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_en_gNB_ID_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_en_gNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "en-gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_EN_GNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* en-gNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_EN_GNB_ID_specs_1 = { + sizeof(struct EN_GNB_ID), + offsetof(struct EN_GNB_ID, _asn_ctx), + offsetof(struct EN_GNB_ID, present), + sizeof(((struct EN_GNB_ID *)0)->present), + asn_MAP_EN_GNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_EN_GNB_ID = { + "EN-GNB-ID", + "EN-GNB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EN_GNB_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_EN_GNB_ID_1, + 1, /* Elements count */ + &asn_SPC_EN_GNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/EN-GNB-ID.h b/e2sim/asn1c/EN-GNB-ID.h new file mode 100644 index 0000000..203f870 --- /dev/null +++ b/e2sim/asn1c/EN-GNB-ID.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _EN_GNB_ID_H_ +#define _EN_GNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EN_GNB_ID_PR { + EN_GNB_ID_PR_NOTHING, /* No components present */ + EN_GNB_ID_PR_en_gNB_ID + /* Extensions may appear below */ + +} EN_GNB_ID_PR; + +/* EN-GNB-ID */ +typedef struct EN_GNB_ID { + EN_GNB_ID_PR present; + union EN_GNB_ID_u { + BIT_STRING_t en_gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EN_GNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EN_GNB_ID; +extern asn_CHOICE_specifics_t asn_SPC_EN_GNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_EN_GNB_ID_1[1]; +extern asn_per_constraints_t asn_PER_type_EN_GNB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _EN_GNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ENB-ID-Choice.c b/e2sim/asn1c/ENB-ID-Choice.c new file mode 100644 index 0000000..cf65801 --- /dev/null +++ b/e2sim/asn1c/ENB-ID-Choice.c @@ -0,0 +1,220 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ENB-ID-Choice.h" + +static int +memb_enb_ID_macro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_enb_ID_shortmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_enb_ID_longmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_enb_ID_macro_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_macro), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_enb_ID_macro_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_enb_ID_macro_constraint_1 + }, + 0, 0, /* No default value */ + "enb-ID-macro" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_shortmacro), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_enb_ID_shortmacro_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_enb_ID_shortmacro_constraint_1 + }, + 0, 0, /* No default value */ + "enb-ID-shortmacro" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_longmacro), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_enb_ID_longmacro_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_enb_ID_longmacro_constraint_1 + }, + 0, 0, /* No default value */ + "enb-ID-longmacro" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_Choice_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enb-ID-macro */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* enb-ID-shortmacro */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* enb-ID-longmacro */ +}; +asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1 = { + sizeof(struct ENB_ID_Choice), + offsetof(struct ENB_ID_Choice, _asn_ctx), + offsetof(struct ENB_ID_Choice, present), + sizeof(((struct ENB_ID_Choice *)0)->present), + asn_MAP_ENB_ID_Choice_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice = { + "ENB-ID-Choice", + "ENB-ID-Choice", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ENB_ID_Choice_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_ENB_ID_Choice_1, + 3, /* Elements count */ + &asn_SPC_ENB_ID_Choice_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ENB-ID-Choice.h b/e2sim/asn1c/ENB-ID-Choice.h new file mode 100644 index 0000000..b2a06d0 --- /dev/null +++ b/e2sim/asn1c/ENB-ID-Choice.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ENB_ID_Choice_H_ +#define _ENB_ID_Choice_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENB_ID_Choice_PR { + ENB_ID_Choice_PR_NOTHING, /* No components present */ + ENB_ID_Choice_PR_enb_ID_macro, + ENB_ID_Choice_PR_enb_ID_shortmacro, + ENB_ID_Choice_PR_enb_ID_longmacro + /* Extensions may appear below */ + +} ENB_ID_Choice_PR; + +/* ENB-ID-Choice */ +typedef struct ENB_ID_Choice { + ENB_ID_Choice_PR present; + union ENB_ID_Choice_u { + BIT_STRING_t enb_ID_macro; + BIT_STRING_t enb_ID_shortmacro; + BIT_STRING_t enb_ID_longmacro; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ID_Choice_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice; +extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1; +extern asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[3]; +extern asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENB_ID_Choice_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ENB-UE-X2AP-ID-Extension.c b/e2sim/asn1c/ENB-UE-X2AP-ID-Extension.c new file mode 100644 index 0000000..690f9f0 --- /dev/null +++ b/e2sim/asn1c/ENB-UE-X2AP-ID-Extension.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ENB-UE-X2AP-ID-Extension.h" + +int +ENB_UE_X2AP_ID_Extension_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 4095L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 12, 12, 0, 4095 } /* (0..4095,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID_Extension = { + "ENB-UE-X2AP-ID-Extension", + "ENB-UE-X2AP-ID-Extension", + &asn_OP_NativeInteger, + asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1, + sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1) + /sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */ + asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1, /* Same as above */ + sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1) + /sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ENB_UE_X2AP_ID_Extension_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/ENB-UE-X2AP-ID-Extension.h b/e2sim/asn1c/ENB-UE-X2AP-ID-Extension.h new file mode 100644 index 0000000..7d700d3 --- /dev/null +++ b/e2sim/asn1c/ENB-UE-X2AP-ID-Extension.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ENB_UE_X2AP_ID_Extension_H_ +#define _ENB_UE_X2AP_ID_Extension_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENB-UE-X2AP-ID-Extension */ +typedef long ENB_UE_X2AP_ID_Extension_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID_Extension; +asn_struct_free_f ENB_UE_X2AP_ID_Extension_free; +asn_struct_print_f ENB_UE_X2AP_ID_Extension_print; +asn_constr_check_f ENB_UE_X2AP_ID_Extension_constraint; +ber_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_ber; +der_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_der; +xer_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_xer; +xer_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_xer; +jer_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_jer; +per_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_uper; +per_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_uper; +per_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_aper; +per_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENB_UE_X2AP_ID_Extension_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ENB-UE-X2AP-ID.c b/e2sim/asn1c/ENB-UE-X2AP-ID.c new file mode 100644 index 0000000..fd73cbe --- /dev/null +++ b/e2sim/asn1c/ENB-UE-X2AP-ID.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ENB-UE-X2AP-ID.h" + +int +ENB_UE_X2AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 4095L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ENB_UE_X2AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID = { + "ENB-UE-X2AP-ID", + "ENB-UE-X2AP-ID", + &asn_OP_NativeInteger, + asn_DEF_ENB_UE_X2AP_ID_tags_1, + sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1[0]), /* 1 */ + asn_DEF_ENB_UE_X2AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ENB_UE_X2AP_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ENB_UE_X2AP_ID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/ENB-UE-X2AP-ID.h b/e2sim/asn1c/ENB-UE-X2AP-ID.h new file mode 100644 index 0000000..61a4c0a --- /dev/null +++ b/e2sim/asn1c/ENB-UE-X2AP-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ENB_UE_X2AP_ID_H_ +#define _ENB_UE_X2AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENB-UE-X2AP-ID */ +typedef long ENB_UE_X2AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID; +asn_struct_free_f ENB_UE_X2AP_ID_free; +asn_struct_print_f ENB_UE_X2AP_ID_print; +asn_constr_check_f ENB_UE_X2AP_ID_constraint; +ber_type_decoder_f ENB_UE_X2AP_ID_decode_ber; +der_type_encoder_f ENB_UE_X2AP_ID_encode_der; +xer_type_decoder_f ENB_UE_X2AP_ID_decode_xer; +xer_type_encoder_f ENB_UE_X2AP_ID_encode_xer; +jer_type_encoder_f ENB_UE_X2AP_ID_encode_jer; +per_type_decoder_f ENB_UE_X2AP_ID_decode_uper; +per_type_encoder_f ENB_UE_X2AP_ID_encode_uper; +per_type_decoder_f ENB_UE_X2AP_ID_decode_aper; +per_type_encoder_f ENB_UE_X2AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENB_UE_X2AP_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ENGNB-ID.c b/e2sim/asn1c/ENGNB-ID.c new file mode 100644 index 0000000..68b94e4 --- /dev/null +++ b/e2sim/asn1c/ENGNB-ID.c @@ -0,0 +1,108 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ENGNB-ID.h" + +static int +memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22UL && size <= 32UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_ENGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENGNB_ID, choice.gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_gNB_ID_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_gNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1 = { + sizeof(struct ENGNB_ID), + offsetof(struct ENGNB_ID, _asn_ctx), + offsetof(struct ENGNB_ID, present), + sizeof(((struct ENGNB_ID *)0)->present), + asn_MAP_ENGNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENGNB_ID = { + "ENGNB-ID", + "ENGNB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ENGNB_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_ENGNB_ID_1, + 1, /* Elements count */ + &asn_SPC_ENGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ENGNB-ID.h b/e2sim/asn1c/ENGNB-ID.h new file mode 100644 index 0000000..a004464 --- /dev/null +++ b/e2sim/asn1c/ENGNB-ID.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ENGNB_ID_H_ +#define _ENGNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENGNB_ID_PR { + ENGNB_ID_PR_NOTHING, /* No components present */ + ENGNB_ID_PR_gNB_ID + /* Extensions may appear below */ + +} ENGNB_ID_PR; + +/* ENGNB-ID */ +typedef struct ENGNB_ID { + ENGNB_ID_PR present; + union ENGNB_ID_u { + BIT_STRING_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENGNB_ID; +extern asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_ENGNB_ID_1[1]; +extern asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENGNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/EUTRA-CGI.c b/e2sim/asn1c/EUTRA-CGI.c new file mode 100644 index 0000000..c4e7812 --- /dev/null +++ b/e2sim/asn1c/EUTRA-CGI.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "EUTRA-CGI.h" + +asn_TYPE_member_t asn_MBR_EUTRA_CGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRA_CGI, pLMNIdentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMNIdentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct EUTRA_CGI, eUTRACellIdentity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EUTRACellIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eUTRACellIdentity" + }, +}; +static const ber_tlv_tag_t asn_DEF_EUTRA_CGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRA_CGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRACellIdentity */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EUTRA_CGI_specs_1 = { + sizeof(struct EUTRA_CGI), + offsetof(struct EUTRA_CGI, _asn_ctx), + asn_MAP_EUTRA_CGI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRA_CGI = { + "EUTRA-CGI", + "EUTRA-CGI", + &asn_OP_SEQUENCE, + asn_DEF_EUTRA_CGI_tags_1, + sizeof(asn_DEF_EUTRA_CGI_tags_1) + /sizeof(asn_DEF_EUTRA_CGI_tags_1[0]), /* 1 */ + asn_DEF_EUTRA_CGI_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRA_CGI_tags_1) + /sizeof(asn_DEF_EUTRA_CGI_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EUTRA_CGI_1, + 2, /* Elements count */ + &asn_SPC_EUTRA_CGI_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/EUTRA-CGI.h b/e2sim/asn1c/EUTRA-CGI.h new file mode 100644 index 0000000..f320224 --- /dev/null +++ b/e2sim/asn1c/EUTRA-CGI.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _EUTRA_CGI_H_ +#define _EUTRA_CGI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "EUTRACellIdentity.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRA-CGI */ +typedef struct EUTRA_CGI { + PLMNIdentity_t pLMNIdentity; + EUTRACellIdentity_t eUTRACellIdentity; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRA_CGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EUTRA_CGI; +extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_CGI_specs_1; +extern asn_TYPE_member_t asn_MBR_EUTRA_CGI_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRA_CGI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/EUTRACellIdentity.c b/e2sim/asn1c/EUTRACellIdentity.c new file mode 100644 index 0000000..b6af75d --- /dev/null +++ b/e2sim/asn1c/EUTRACellIdentity.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "EUTRACellIdentity.h" + +int +EUTRACellIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EUTRACellIdentity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_EUTRACellIdentity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EUTRACellIdentity = { + "EUTRACellIdentity", + "EUTRACellIdentity", + &asn_OP_BIT_STRING, + asn_DEF_EUTRACellIdentity_tags_1, + sizeof(asn_DEF_EUTRACellIdentity_tags_1) + /sizeof(asn_DEF_EUTRACellIdentity_tags_1[0]), /* 1 */ + asn_DEF_EUTRACellIdentity_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRACellIdentity_tags_1) + /sizeof(asn_DEF_EUTRACellIdentity_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EUTRACellIdentity_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + EUTRACellIdentity_constraint + }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/EUTRACellIdentity.h b/e2sim/asn1c/EUTRACellIdentity.h new file mode 100644 index 0000000..d23c4d0 --- /dev/null +++ b/e2sim/asn1c/EUTRACellIdentity.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _EUTRACellIdentity_H_ +#define _EUTRACellIdentity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRACellIdentity */ +typedef BIT_STRING_t EUTRACellIdentity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EUTRACellIdentity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EUTRACellIdentity; +asn_struct_free_f EUTRACellIdentity_free; +asn_struct_print_f EUTRACellIdentity_print; +asn_constr_check_f EUTRACellIdentity_constraint; +ber_type_decoder_f EUTRACellIdentity_decode_ber; +der_type_encoder_f EUTRACellIdentity_encode_der; +xer_type_decoder_f EUTRACellIdentity_decode_xer; +xer_type_encoder_f EUTRACellIdentity_encode_xer; +jer_type_encoder_f EUTRACellIdentity_encode_jer; +per_type_decoder_f EUTRACellIdentity_decode_uper; +per_type_encoder_f EUTRACellIdentity_encode_uper; +per_type_decoder_f EUTRACellIdentity_decode_aper; +per_type_encoder_f EUTRACellIdentity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRACellIdentity_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/EXTERNAL.c b/e2sim/asn1c/EXTERNAL.c new file mode 100644 index 0000000..028da3b --- /dev/null +++ b/e2sim/asn1c/EXTERNAL.c @@ -0,0 +1,223 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ASN1C-UsefulInformationObjectClasses" + * found in "/usr/local/share/asn1c/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "EXTERNAL.h" + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_encoding_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_encoding_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL__encoding, choice.single_ASN1_type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "single-ASN1-type" + }, + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL__encoding, choice.octet_aligned), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "octet-aligned" + }, + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL__encoding, choice.arbitrary), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "arbitrary" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_encoding_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* single-ASN1-type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* octet-aligned */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* arbitrary */ +}; +static asn_CHOICE_specifics_t asn_SPC_encoding_specs_5 = { + sizeof(struct EXTERNAL__encoding), + offsetof(struct EXTERNAL__encoding, _asn_ctx), + offsetof(struct EXTERNAL__encoding, present), + sizeof(((struct EXTERNAL__encoding *)0)->present), + asn_MAP_encoding_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_encoding_5 = { + "encoding", + "encoding", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_encoding_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_encoding_5, + 3, /* Elements count */ + &asn_SPC_encoding_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_EXTERNAL_1[] = { + { ATF_POINTER, 3, offsetof(struct EXTERNAL, direct_reference), + (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), + 0, + &asn_DEF_OBJECT_IDENTIFIER, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "direct-reference" + }, + { ATF_POINTER, 2, offsetof(struct EXTERNAL, indirect_reference), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "indirect-reference" + }, + { ATF_POINTER, 1, offsetof(struct EXTERNAL, data_value_descriptor), + (ASN_TAG_CLASS_UNIVERSAL | (7 << 2)), + 0, + &asn_DEF_ObjectDescriptor, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "data-value-descriptor" + }, + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL, encoding), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_encoding_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "encoding" + }, +}; +static const int asn_MAP_EXTERNAL_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_EXTERNAL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EXTERNAL_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* indirect-reference */ + { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 0, 0, 0 }, /* direct-reference */ + { (ASN_TAG_CLASS_UNIVERSAL | (7 << 2)), 2, 0, 0 }, /* data-value-descriptor */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* single-ASN1-type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* octet-aligned */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 } /* arbitrary */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_EXTERNAL_specs_1 = { + sizeof(struct EXTERNAL), + offsetof(struct EXTERNAL, _asn_ctx), + asn_MAP_EXTERNAL_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_EXTERNAL_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EXTERNAL = { + "EXTERNAL", + "EXTERNAL", + &asn_OP_SEQUENCE, + asn_DEF_EXTERNAL_tags_1, + sizeof(asn_DEF_EXTERNAL_tags_1) + /sizeof(asn_DEF_EXTERNAL_tags_1[0]) - 1, /* 1 */ + asn_DEF_EXTERNAL_tags_1, /* Same as above */ + sizeof(asn_DEF_EXTERNAL_tags_1) + /sizeof(asn_DEF_EXTERNAL_tags_1[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EXTERNAL_1, + 4, /* Elements count */ + &asn_SPC_EXTERNAL_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/EXTERNAL.h b/e2sim/asn1c/EXTERNAL.h new file mode 100644 index 0000000..bea9e44 --- /dev/null +++ b/e2sim/asn1c/EXTERNAL.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "ASN1C-UsefulInformationObjectClasses" + * found in "/usr/local/share/asn1c/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _EXTERNAL_H_ +#define _EXTERNAL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OBJECT_IDENTIFIER.h" +#include "NativeInteger.h" +#include "ObjectDescriptor.h" +#include "ANY.h" +#include "OCTET_STRING.h" +#include "BIT_STRING.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EXTERNAL__encoding_PR { + EXTERNAL__encoding_PR_NOTHING, /* No components present */ + EXTERNAL__encoding_PR_single_ASN1_type, + EXTERNAL__encoding_PR_octet_aligned, + EXTERNAL__encoding_PR_arbitrary +} EXTERNAL__encoding_PR; + +/* EXTERNAL */ +typedef struct EXTERNAL { + OBJECT_IDENTIFIER_t *direct_reference; /* OPTIONAL */ + long *indirect_reference; /* OPTIONAL */ + ObjectDescriptor_t *data_value_descriptor; /* OPTIONAL */ + struct EXTERNAL__encoding { + EXTERNAL__encoding_PR present; + union EXTERNAL__encoding_u { + ANY_t single_ASN1_type; + OCTET_STRING_t octet_aligned; + BIT_STRING_t arbitrary; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } encoding; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EXTERNAL_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EXTERNAL; + +#ifdef __cplusplus +} +#endif + +#endif /* _EXTERNAL_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ErrorIndication.c b/e2sim/asn1c/ErrorIndication.c new file mode 100644 index 0000000..1fd8e87 --- /dev/null +++ b/e2sim/asn1c/ErrorIndication.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ErrorIndication.h" + +asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P20, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = { + sizeof(struct ErrorIndication), + offsetof(struct ErrorIndication, _asn_ctx), + asn_MAP_ErrorIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication = { + "ErrorIndication", + "ErrorIndication", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_tags_1, + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + asn_DEF_ErrorIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ErrorIndication_1, + 1, /* Elements count */ + &asn_SPC_ErrorIndication_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ErrorIndication.h b/e2sim/asn1c/ErrorIndication.h new file mode 100644 index 0000000..4916380 --- /dev/null +++ b/e2sim/asn1c/ErrorIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ErrorIndication_H_ +#define _ErrorIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ErrorIndication */ +typedef struct ErrorIndication { + ProtocolIE_Container_85P20_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ErrorIndication_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/FiveGS-TAC.c b/e2sim/asn1c/FiveGS-TAC.c new file mode 100644 index 0000000..d01a26c --- /dev/null +++ b/e2sim/asn1c/FiveGS-TAC.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "FiveGS-TAC.h" + +int +FiveGS_TAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_FiveGS_TAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_FiveGS_TAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FiveGS_TAC = { + "FiveGS-TAC", + "FiveGS-TAC", + &asn_OP_OCTET_STRING, + asn_DEF_FiveGS_TAC_tags_1, + sizeof(asn_DEF_FiveGS_TAC_tags_1) + /sizeof(asn_DEF_FiveGS_TAC_tags_1[0]), /* 1 */ + asn_DEF_FiveGS_TAC_tags_1, /* Same as above */ + sizeof(asn_DEF_FiveGS_TAC_tags_1) + /sizeof(asn_DEF_FiveGS_TAC_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_FiveGS_TAC_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + FiveGS_TAC_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/FiveGS-TAC.h b/e2sim/asn1c/FiveGS-TAC.h new file mode 100644 index 0000000..acdf35f --- /dev/null +++ b/e2sim/asn1c/FiveGS-TAC.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _FiveGS_TAC_H_ +#define _FiveGS_TAC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* FiveGS-TAC */ +typedef OCTET_STRING_t FiveGS_TAC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FiveGS_TAC; +asn_struct_free_f FiveGS_TAC_free; +asn_struct_print_f FiveGS_TAC_print; +asn_constr_check_f FiveGS_TAC_constraint; +ber_type_decoder_f FiveGS_TAC_decode_ber; +der_type_encoder_f FiveGS_TAC_encode_der; +xer_type_decoder_f FiveGS_TAC_decode_xer; +xer_type_encoder_f FiveGS_TAC_encode_xer; +jer_type_encoder_f FiveGS_TAC_encode_jer; +per_type_decoder_f FiveGS_TAC_decode_uper; +per_type_encoder_f FiveGS_TAC_encode_uper; +per_type_decoder_f FiveGS_TAC_decode_aper; +per_type_encoder_f FiveGS_TAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _FiveGS_TAC_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/FiveQI.c b/e2sim/asn1c/FiveQI.c new file mode 100644 index 0000000..dbdf727 --- /dev/null +++ b/e2sim/asn1c/FiveQI.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "FiveQI.h" + +int +FiveQI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_FiveQI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 0, 255 } /* (0..255,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_FiveQI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FiveQI = { + "FiveQI", + "FiveQI", + &asn_OP_NativeInteger, + asn_DEF_FiveQI_tags_1, + sizeof(asn_DEF_FiveQI_tags_1) + /sizeof(asn_DEF_FiveQI_tags_1[0]), /* 1 */ + asn_DEF_FiveQI_tags_1, /* Same as above */ + sizeof(asn_DEF_FiveQI_tags_1) + /sizeof(asn_DEF_FiveQI_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_FiveQI_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + FiveQI_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/FiveQI.h b/e2sim/asn1c/FiveQI.h new file mode 100644 index 0000000..02c32f5 --- /dev/null +++ b/e2sim/asn1c/FiveQI.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _FiveQI_H_ +#define _FiveQI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* FiveQI */ +typedef long FiveQI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_FiveQI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_FiveQI; +asn_struct_free_f FiveQI_free; +asn_struct_print_f FiveQI_print; +asn_constr_check_f FiveQI_constraint; +ber_type_decoder_f FiveQI_decode_ber; +der_type_encoder_f FiveQI_encode_der; +xer_type_decoder_f FiveQI_decode_xer; +xer_type_encoder_f FiveQI_encode_xer; +jer_type_encoder_f FiveQI_encode_jer; +per_type_decoder_f FiveQI_decode_uper; +per_type_encoder_f FiveQI_encode_uper; +per_type_decoder_f FiveQI_decode_aper; +per_type_encoder_f FiveQI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _FiveQI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/FreqBandNrItem.c b/e2sim/asn1c/FreqBandNrItem.c new file mode 100644 index 0000000..df0977e --- /dev/null +++ b/e2sim/asn1c/FreqBandNrItem.c @@ -0,0 +1,98 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "FreqBandNrItem.h" + +static int +memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 1024L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1024 } /* (1..1024,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_FreqBandNrItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem, freqBandIndicatorNr), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_freqBandIndicatorNr_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_freqBandIndicatorNr_constraint_1 + }, + 0, 0, /* No default value */ + "freqBandIndicatorNr" + }, +}; +static const ber_tlv_tag_t asn_DEF_FreqBandNrItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FreqBandNrItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* freqBandIndicatorNr */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_specs_1 = { + sizeof(struct FreqBandNrItem), + offsetof(struct FreqBandNrItem, _asn_ctx), + asn_MAP_FreqBandNrItem_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem = { + "FreqBandNrItem", + "FreqBandNrItem", + &asn_OP_SEQUENCE, + asn_DEF_FreqBandNrItem_tags_1, + sizeof(asn_DEF_FreqBandNrItem_tags_1) + /sizeof(asn_DEF_FreqBandNrItem_tags_1[0]), /* 1 */ + asn_DEF_FreqBandNrItem_tags_1, /* Same as above */ + sizeof(asn_DEF_FreqBandNrItem_tags_1) + /sizeof(asn_DEF_FreqBandNrItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_FreqBandNrItem_1, + 1, /* Elements count */ + &asn_SPC_FreqBandNrItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/FreqBandNrItem.h b/e2sim/asn1c/FreqBandNrItem.h new file mode 100644 index 0000000..00d81bf --- /dev/null +++ b/e2sim/asn1c/FreqBandNrItem.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _FreqBandNrItem_H_ +#define _FreqBandNrItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* FreqBandNrItem */ +typedef struct FreqBandNrItem { + long freqBandIndicatorNr; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FreqBandNrItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _FreqBandNrItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.c b/e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.c new file mode 100644 index 0000000..51be69c --- /dev/null +++ b/e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GNB-CU-CP-UE-E1AP-ID.h" + +int +GNB_CU_CP_UE_E1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +const asn_INTEGER_specifics_t asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_UE_E1AP_ID = { + "GNB-CU-CP-UE-E1AP-ID", + "GNB-CU-CP-UE-E1AP-ID", + &asn_OP_NativeInteger, + asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1, + sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1) + /sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[0]), /* 1 */ + asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1) + /sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + GNB_CU_CP_UE_E1AP_ID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.h b/e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.h new file mode 100644 index 0000000..f4ddebc --- /dev/null +++ b/e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GNB_CU_CP_UE_E1AP_ID_H_ +#define _GNB_CU_CP_UE_E1AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GNB-CU-CP-UE-E1AP-ID */ +typedef unsigned long GNB_CU_CP_UE_E1AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_UE_E1AP_ID; +extern const asn_INTEGER_specifics_t asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1; +asn_struct_free_f GNB_CU_CP_UE_E1AP_ID_free; +asn_struct_print_f GNB_CU_CP_UE_E1AP_ID_print; +asn_constr_check_f GNB_CU_CP_UE_E1AP_ID_constraint; +ber_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_ber; +der_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_der; +xer_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_xer; +xer_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_xer; +jer_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_jer; +per_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_uper; +per_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_uper; +per_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_aper; +per_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_CU_CP_UE_E1AP_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GNB-CU-UE-F1AP-ID.c b/e2sim/asn1c/GNB-CU-UE-F1AP-ID.c new file mode 100644 index 0000000..736da04 --- /dev/null +++ b/e2sim/asn1c/GNB-CU-UE-F1AP-ID.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GNB-CU-UE-F1AP-ID.h" + +int +GNB_CU_UE_F1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +const asn_INTEGER_specifics_t asn_SPC_GNB_CU_UE_F1AP_ID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GNB_CU_UE_F1AP_ID = { + "GNB-CU-UE-F1AP-ID", + "GNB-CU-UE-F1AP-ID", + &asn_OP_NativeInteger, + asn_DEF_GNB_CU_UE_F1AP_ID_tags_1, + sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1) + /sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[0]), /* 1 */ + asn_DEF_GNB_CU_UE_F1AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1) + /sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + GNB_CU_UE_F1AP_ID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_GNB_CU_UE_F1AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GNB-CU-UE-F1AP-ID.h b/e2sim/asn1c/GNB-CU-UE-F1AP-ID.h new file mode 100644 index 0000000..e48e17f --- /dev/null +++ b/e2sim/asn1c/GNB-CU-UE-F1AP-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GNB_CU_UE_F1AP_ID_H_ +#define _GNB_CU_UE_F1AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GNB-CU-UE-F1AP-ID */ +typedef unsigned long GNB_CU_UE_F1AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UE_F1AP_ID; +extern const asn_INTEGER_specifics_t asn_SPC_GNB_CU_UE_F1AP_ID_specs_1; +asn_struct_free_f GNB_CU_UE_F1AP_ID_free; +asn_struct_print_f GNB_CU_UE_F1AP_ID_print; +asn_constr_check_f GNB_CU_UE_F1AP_ID_constraint; +ber_type_decoder_f GNB_CU_UE_F1AP_ID_decode_ber; +der_type_encoder_f GNB_CU_UE_F1AP_ID_encode_der; +xer_type_decoder_f GNB_CU_UE_F1AP_ID_decode_xer; +xer_type_encoder_f GNB_CU_UE_F1AP_ID_encode_xer; +jer_type_encoder_f GNB_CU_UE_F1AP_ID_encode_jer; +per_type_decoder_f GNB_CU_UE_F1AP_ID_decode_uper; +per_type_encoder_f GNB_CU_UE_F1AP_ID_encode_uper; +per_type_decoder_f GNB_CU_UE_F1AP_ID_decode_aper; +per_type_encoder_f GNB_CU_UE_F1AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_CU_UE_F1AP_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GNB-ID-Choice.c b/e2sim/asn1c/GNB-ID-Choice.c new file mode 100644 index 0000000..e29878d --- /dev/null +++ b/e2sim/asn1c/GNB-ID-Choice.c @@ -0,0 +1,108 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GNB-ID-Choice.h" + +static int +memb_gnb_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22UL && size <= 32UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_gnb_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNB_ID_Choice, choice.gnb_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_gnb_ID_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_gnb_ID_constraint_1 + }, + 0, 0, /* No default value */ + "gnb-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_Choice_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gnb-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1 = { + sizeof(struct GNB_ID_Choice), + offsetof(struct GNB_ID_Choice, _asn_ctx), + offsetof(struct GNB_ID_Choice, present), + sizeof(((struct GNB_ID_Choice *)0)->present), + asn_MAP_GNB_ID_Choice_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice = { + "GNB-ID-Choice", + "GNB-ID-Choice", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GNB_ID_Choice_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_GNB_ID_Choice_1, + 1, /* Elements count */ + &asn_SPC_GNB_ID_Choice_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GNB-ID-Choice.h b/e2sim/asn1c/GNB-ID-Choice.h new file mode 100644 index 0000000..55617eb --- /dev/null +++ b/e2sim/asn1c/GNB-ID-Choice.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GNB_ID_Choice_H_ +#define _GNB_ID_Choice_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GNB_ID_Choice_PR { + GNB_ID_Choice_PR_NOTHING, /* No components present */ + GNB_ID_Choice_PR_gnb_ID + /* Extensions may appear below */ + +} GNB_ID_Choice_PR; + +/* GNB-ID-Choice */ +typedef struct GNB_ID_Choice { + GNB_ID_Choice_PR present; + union GNB_ID_Choice_u { + BIT_STRING_t gnb_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNB_ID_Choice_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice; +extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1; +extern asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[1]; +extern asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_ID_Choice_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GNB-ID.c b/e2sim/asn1c/GNB-ID.c new file mode 100644 index 0000000..0f798be --- /dev/null +++ b/e2sim/asn1c/GNB-ID.c @@ -0,0 +1,108 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GNB-ID.h" + +static int +memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22UL && size <= 32UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GNB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_GNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNB_ID, choice.gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_gNB_ID_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_gNB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1 = { + sizeof(struct GNB_ID), + offsetof(struct GNB_ID, _asn_ctx), + offsetof(struct GNB_ID, present), + sizeof(((struct GNB_ID *)0)->present), + asn_MAP_GNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GNB_ID = { + "GNB-ID", + "GNB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GNB_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_GNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GNB-ID.h b/e2sim/asn1c/GNB-ID.h new file mode 100644 index 0000000..7403024 --- /dev/null +++ b/e2sim/asn1c/GNB-ID.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GNB_ID_H_ +#define _GNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GNB_ID_PR { + GNB_ID_PR_NOTHING, /* No components present */ + GNB_ID_PR_gNB_ID + /* Extensions may appear below */ + +} GNB_ID_PR; + +/* GNB-ID */ +typedef struct GNB_ID { + GNB_ID_PR present; + union GNB_ID_u { + BIT_STRING_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GNB_ID; +extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GNB_ID_1[1]; +extern asn_per_constraints_t asn_PER_type_GNB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GUAMI.c b/e2sim/asn1c/GUAMI.c new file mode 100644 index 0000000..7ab6758 --- /dev/null +++ b/e2sim/asn1c/GUAMI.c @@ -0,0 +1,120 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GUAMI.h" + +asn_TYPE_member_t asn_MBR_GUAMI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GUAMI, pLMNIdentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMNIdentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFRegionID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AMFRegionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "aMFRegionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFSetID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AMFSetID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "aMFSetID" + }, + { ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFPointer), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AMFPointer, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "aMFPointer" + }, +}; +static const ber_tlv_tag_t asn_DEF_GUAMI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GUAMI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aMFRegionID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aMFSetID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* aMFPointer */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GUAMI_specs_1 = { + sizeof(struct GUAMI), + offsetof(struct GUAMI, _asn_ctx), + asn_MAP_GUAMI_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GUAMI = { + "GUAMI", + "GUAMI", + &asn_OP_SEQUENCE, + asn_DEF_GUAMI_tags_1, + sizeof(asn_DEF_GUAMI_tags_1) + /sizeof(asn_DEF_GUAMI_tags_1[0]), /* 1 */ + asn_DEF_GUAMI_tags_1, /* Same as above */ + sizeof(asn_DEF_GUAMI_tags_1) + /sizeof(asn_DEF_GUAMI_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GUAMI_1, + 4, /* Elements count */ + &asn_SPC_GUAMI_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GUAMI.h b/e2sim/asn1c/GUAMI.h new file mode 100644 index 0000000..867d63c --- /dev/null +++ b/e2sim/asn1c/GUAMI.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GUAMI_H_ +#define _GUAMI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "AMFRegionID.h" +#include "AMFSetID.h" +#include "AMFPointer.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GUAMI */ +typedef struct GUAMI { + PLMNIdentity_t pLMNIdentity; + AMFRegionID_t aMFRegionID; + AMFSetID_t aMFSetID; + AMFPointer_t aMFPointer; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GUAMI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GUAMI; +extern asn_SEQUENCE_specifics_t asn_SPC_GUAMI_specs_1; +extern asn_TYPE_member_t asn_MBR_GUAMI_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GUAMI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GUMMEI.c b/e2sim/asn1c/GUMMEI.c new file mode 100644 index 0000000..07c0fa4 --- /dev/null +++ b/e2sim/asn1c/GUMMEI.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GUMMEI.h" + +asn_TYPE_member_t asn_MBR_GUMMEI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Group_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MME_Group_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mME-Group-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Code), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MME_Code, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mME-Code" + }, +}; +static const ber_tlv_tag_t asn_DEF_GUMMEI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GUMMEI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mME-Group-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* mME-Code */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1 = { + sizeof(struct GUMMEI), + offsetof(struct GUMMEI, _asn_ctx), + asn_MAP_GUMMEI_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GUMMEI = { + "GUMMEI", + "GUMMEI", + &asn_OP_SEQUENCE, + asn_DEF_GUMMEI_tags_1, + sizeof(asn_DEF_GUMMEI_tags_1) + /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */ + asn_DEF_GUMMEI_tags_1, /* Same as above */ + sizeof(asn_DEF_GUMMEI_tags_1) + /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GUMMEI_1, + 3, /* Elements count */ + &asn_SPC_GUMMEI_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GUMMEI.h b/e2sim/asn1c/GUMMEI.h new file mode 100644 index 0000000..c4c3528 --- /dev/null +++ b/e2sim/asn1c/GUMMEI.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GUMMEI_H_ +#define _GUMMEI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "MME-Group-ID.h" +#include "MME-Code.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GUMMEI */ +typedef struct GUMMEI { + PLMNIdentity_t pLMN_Identity; + MME_Group_ID_t mME_Group_ID; + MME_Code_t mME_Code; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GUMMEI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GUMMEI; +extern asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1; +extern asn_TYPE_member_t asn_MBR_GUMMEI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GUMMEI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalE2node-ID.c b/e2sim/asn1c/GlobalE2node-ID.c new file mode 100644 index 0000000..b050e6a --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-ID.c @@ -0,0 +1,128 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalE2node-ID.h" + +#include "GlobalE2node-gNB-ID.h" +#include "GlobalE2node-en-gNB-ID.h" +#include "GlobalE2node-ng-eNB-ID.h" +#include "GlobalE2node-eNB-ID.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GlobalE2node_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_GlobalE2node_ID_1[] = { + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.gNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_gNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_en_gNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "en-gNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.ng_eNB), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_ng_eNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ng-eNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.eNB), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_eNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */ +}; +asn_CHOICE_specifics_t asn_SPC_GlobalE2node_ID_specs_1 = { + sizeof(struct GlobalE2node_ID), + offsetof(struct GlobalE2node_ID, _asn_ctx), + offsetof(struct GlobalE2node_ID, present), + sizeof(((struct GlobalE2node_ID *)0)->present), + asn_MAP_GlobalE2node_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID = { + "GlobalE2node-ID", + "GlobalE2node-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GlobalE2node_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_GlobalE2node_ID_1, + 4, /* Elements count */ + &asn_SPC_GlobalE2node_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalE2node-ID.h b/e2sim/asn1c/GlobalE2node-ID.h new file mode 100644 index 0000000..21315b6 --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-ID.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalE2node_ID_H_ +#define _GlobalE2node_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GlobalE2node_ID_PR { + GlobalE2node_ID_PR_NOTHING, /* No components present */ + GlobalE2node_ID_PR_gNB, + GlobalE2node_ID_PR_en_gNB, + GlobalE2node_ID_PR_ng_eNB, + GlobalE2node_ID_PR_eNB + /* Extensions may appear below */ + +} GlobalE2node_ID_PR; + +/* Forward declarations */ +struct GlobalE2node_gNB_ID; +struct GlobalE2node_en_gNB_ID; +struct GlobalE2node_ng_eNB_ID; +struct GlobalE2node_eNB_ID; + +/* GlobalE2node-ID */ +typedef struct GlobalE2node_ID { + GlobalE2node_ID_PR present; + union GlobalE2node_ID_u { + struct GlobalE2node_gNB_ID *gNB; + struct GlobalE2node_en_gNB_ID *en_gNB; + struct GlobalE2node_ng_eNB_ID *ng_eNB; + struct GlobalE2node_eNB_ID *eNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID; +extern asn_CHOICE_specifics_t asn_SPC_GlobalE2node_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_ID_1[4]; +extern asn_per_constraints_t asn_PER_type_GlobalE2node_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalE2node-eNB-ID.c b/e2sim/asn1c/GlobalE2node-eNB-ID.c new file mode 100644 index 0000000..b4a8dcd --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-eNB-ID.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalE2node-eNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_eNB_ID, global_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GlobalENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-eNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_eNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_eNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1 = { + sizeof(struct GlobalE2node_eNB_ID), + offsetof(struct GlobalE2node_eNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_eNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID = { + "GlobalE2node-eNB-ID", + "GlobalE2node-eNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_eNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_eNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GlobalE2node_eNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GlobalE2node_eNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalE2node-eNB-ID.h b/e2sim/asn1c/GlobalE2node-eNB-ID.h new file mode 100644 index 0000000..96aa892 --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-eNB-ID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalE2node_eNB_ID_H_ +#define _GlobalE2node_eNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2AP-IEs_GlobalENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-eNB-ID */ +typedef struct GlobalE2node_eNB_ID { + E2AP_IEs_GlobalENB_ID_t global_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_eNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_eNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalE2node-en-gNB-ID.c b/e2sim/asn1c/GlobalE2node-en-gNB-ID.c new file mode 100644 index 0000000..6e6a834 --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-en-gNB-ID.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalE2node-en-gNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_en_gNB_ID, global_en_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GlobalenGNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-en-gNB-ID" + }, + { ATF_POINTER, 2, offsetof(struct GlobalE2node_en_gNB_ID, en_gNB_CU_UP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GNB_CU_UP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "en-gNB-CU-UP-ID" + }, + { ATF_POINTER, 1, offsetof(struct GlobalE2node_en_gNB_ID, en_gNB_DU_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GNB_DU_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "en-gNB-DU-ID" + }, +}; +static const int asn_MAP_GlobalE2node_en_gNB_ID_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_en_gNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-en-gNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB-CU-UP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* en-gNB-DU-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1 = { + sizeof(struct GlobalE2node_en_gNB_ID), + offsetof(struct GlobalE2node_en_gNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GlobalE2node_en_gNB_ID_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID = { + "GlobalE2node-en-gNB-ID", + "GlobalE2node-en-gNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_en_gNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_en_gNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GlobalE2node_en_gNB_ID_1, + 3, /* Elements count */ + &asn_SPC_GlobalE2node_en_gNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalE2node-en-gNB-ID.h b/e2sim/asn1c/GlobalE2node-en-gNB-ID.h new file mode 100644 index 0000000..ba9b7fd --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-en-gNB-ID.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalE2node_en_gNB_ID_H_ +#define _GlobalE2node_en_gNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E2AP-IEs_GlobalenGNB-ID.h" +#include "E2AP-IEs_GNB-CU-UP-ID.h" +#include "E2AP-IEs_GNB-DU-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-en-gNB-ID */ +typedef struct GlobalE2node_en_gNB_ID { + E2AP_IEs_GlobalenGNB_ID_t global_en_gNB_ID; + E2AP_IEs_GNB_CU_UP_ID_t *en_gNB_CU_UP_ID; /* OPTIONAL */ + E2AP_IEs_GNB_DU_ID_t *en_gNB_DU_ID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_en_gNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_en_gNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalE2node-gNB-ID.c b/e2sim/asn1c/GlobalE2node-gNB-ID.c new file mode 100644 index 0000000..b4c7bb5 --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-gNB-ID.c @@ -0,0 +1,123 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalE2node-gNB-ID.h" + +#include "E2AP-IEs_GlobalenGNB-ID.h" +asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_gNB_ID, global_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalgNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-gNB-ID" + }, + { ATF_POINTER, 3, offsetof(struct GlobalE2node_gNB_ID, global_en_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GlobalenGNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-en-gNB-ID" + }, + { ATF_POINTER, 2, offsetof(struct GlobalE2node_gNB_ID, gNB_CU_UP_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GNB_CU_UP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-UP-ID" + }, + { ATF_POINTER, 1, offsetof(struct GlobalE2node_gNB_ID, gNB_DU_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GNB_DU_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-DU-ID" + }, +}; +static const int asn_MAP_GlobalE2node_gNB_ID_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_gNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_gNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* global-en-gNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* gNB-DU-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1 = { + sizeof(struct GlobalE2node_gNB_ID), + offsetof(struct GlobalE2node_gNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_gNB_ID_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_GlobalE2node_gNB_ID_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID = { + "GlobalE2node-gNB-ID", + "GlobalE2node-gNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_gNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_gNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GlobalE2node_gNB_ID_1, + 4, /* Elements count */ + &asn_SPC_GlobalE2node_gNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalE2node-gNB-ID.h b/e2sim/asn1c/GlobalE2node-gNB-ID.h new file mode 100644 index 0000000..a7162da --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-gNB-ID.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalE2node_gNB_ID_H_ +#define _GlobalE2node_gNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalgNB-ID.h" +#include "E2AP-IEs_GNB-CU-UP-ID.h" +#include "E2AP-IEs_GNB-DU-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GlobalenGNB_ID; + +/* GlobalE2node-gNB-ID */ +typedef struct GlobalE2node_gNB_ID { + GlobalgNB_ID_t global_gNB_ID; + struct GlobalenGNB_ID *global_en_gNB_ID; /* OPTIONAL */ + E2AP_IEs_GNB_CU_UP_ID_t *gNB_CU_UP_ID; /* OPTIONAL */ + E2AP_IEs_GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_gNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_gNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalE2node-ng-eNB-ID.c b/e2sim/asn1c/GlobalE2node-ng-eNB-ID.c new file mode 100644 index 0000000..751d46d --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-ng-eNB-ID.c @@ -0,0 +1,105 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalE2node-ng-eNB-ID.h" + +#include "E2AP-IEs_GlobalENB-ID.h" +asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_ng_eNB_ID, global_ng_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalngeNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-ng-eNB-ID" + }, + { ATF_POINTER, 2, offsetof(struct GlobalE2node_ng_eNB_ID, global_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_GlobalENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-eNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct GlobalE2node_ng_eNB_ID, ngENB_DU_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2AP_IEs_NGENB_DU_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ngENB-DU-ID" + }, +}; +static const int asn_MAP_GlobalE2node_ng_eNB_ID_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-ng-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* global-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ngENB-DU-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 = { + sizeof(struct GlobalE2node_ng_eNB_ID), + offsetof(struct GlobalE2node_ng_eNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GlobalE2node_ng_eNB_ID_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID = { + "GlobalE2node-ng-eNB-ID", + "GlobalE2node-ng-eNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GlobalE2node_ng_eNB_ID_1, + 3, /* Elements count */ + &asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalE2node-ng-eNB-ID.h b/e2sim/asn1c/GlobalE2node-ng-eNB-ID.h new file mode 100644 index 0000000..57e2b13 --- /dev/null +++ b/e2sim/asn1c/GlobalE2node-ng-eNB-ID.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalE2node_ng_eNB_ID_H_ +#define _GlobalE2node_ng_eNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalngeNB-ID.h" +#include "E2AP-IEs_NGENB-DU-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GlobalENB_ID; + +/* GlobalE2node-ng-eNB-ID */ +typedef struct GlobalE2node_ng_eNB_ID { + GlobalngeNB_ID_t global_ng_eNB_ID; + struct GlobalENB_ID *global_eNB_ID; /* OPTIONAL */ + E2AP_IEs_NGENB_DU_ID_t *ngENB_DU_ID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_ng_eNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_ng_eNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalGNB-ID.c b/e2sim/asn1c/GlobalGNB-ID.c new file mode 100644 index 0000000..e028b5b --- /dev/null +++ b/e2sim/asn1c/GlobalGNB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalGNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, pLMNIdentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMNIdentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalGNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1 = { + sizeof(struct GlobalGNB_ID), + offsetof(struct GlobalGNB_ID, _asn_ctx), + asn_MAP_GlobalGNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID = { + "GlobalGNB-ID", + "GlobalGNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalGNB_ID_tags_1, + sizeof(asn_DEF_GlobalGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalGNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GlobalGNB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalGNB-ID.h b/e2sim/asn1c/GlobalGNB-ID.h new file mode 100644 index 0000000..78d0eb1 --- /dev/null +++ b/e2sim/asn1c/GlobalGNB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalGNB_ID_H_ +#define _GlobalGNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "GNB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalGNB-ID */ +typedef struct GlobalGNB_ID { + PLMNIdentity_t pLMNIdentity; + GNB_ID_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalGNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalNG-RANNode-ID.c b/e2sim/asn1c/GlobalNG-RANNode-ID.c new file mode 100644 index 0000000..3a0da74 --- /dev/null +++ b/e2sim/asn1c/GlobalNG-RANNode-ID.c @@ -0,0 +1,90 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalNG-RANNode-ID.h" + +#include "GlobalgNB-ID.h" +#include "GlobalngeNB-ID.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GlobalNG_RANNode_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_GlobalNG_RANNode_ID_1[] = { + { ATF_POINTER, 0, offsetof(struct GlobalNG_RANNode_ID, choice.gNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalgNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalNG_RANNode_ID, choice.ng_eNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalngeNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ng-eNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalNG_RANNode_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-eNB */ +}; +asn_CHOICE_specifics_t asn_SPC_GlobalNG_RANNode_ID_specs_1 = { + sizeof(struct GlobalNG_RANNode_ID), + offsetof(struct GlobalNG_RANNode_ID, _asn_ctx), + offsetof(struct GlobalNG_RANNode_ID, present), + sizeof(((struct GlobalNG_RANNode_ID *)0)->present), + asn_MAP_GlobalNG_RANNode_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalNG_RANNode_ID = { + "GlobalNG-RANNode-ID", + "GlobalNG-RANNode-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GlobalNG_RANNode_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_GlobalNG_RANNode_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalNG_RANNode_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalNG-RANNode-ID.h b/e2sim/asn1c/GlobalNG-RANNode-ID.h new file mode 100644 index 0000000..e53ce70 --- /dev/null +++ b/e2sim/asn1c/GlobalNG-RANNode-ID.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalNG_RANNode_ID_H_ +#define _GlobalNG_RANNode_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GlobalNG_RANNode_ID_PR { + GlobalNG_RANNode_ID_PR_NOTHING, /* No components present */ + GlobalNG_RANNode_ID_PR_gNB, + GlobalNG_RANNode_ID_PR_ng_eNB + /* Extensions may appear below */ + +} GlobalNG_RANNode_ID_PR; + +/* Forward declarations */ +struct GlobalgNB_ID; +struct GlobalngeNB_ID; + +/* GlobalNG-RANNode-ID */ +typedef struct GlobalNG_RANNode_ID { + GlobalNG_RANNode_ID_PR present; + union GlobalNG_RANNode_ID_u { + struct GlobalgNB_ID *gNB; + struct GlobalngeNB_ID *ng_eNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalNG_RANNode_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalNG_RANNode_ID; +extern asn_CHOICE_specifics_t asn_SPC_GlobalNG_RANNode_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalNG_RANNode_ID_1[2]; +extern asn_per_constraints_t asn_PER_type_GlobalNG_RANNode_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalNG_RANNode_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalNGRANNodeID.c b/e2sim/asn1c/GlobalNGRANNodeID.c new file mode 100644 index 0000000..4e6645a --- /dev/null +++ b/e2sim/asn1c/GlobalNGRANNodeID.c @@ -0,0 +1,90 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalNGRANNodeID.h" + +#include "GlobalGNB-ID.h" +#include "GlobalNgENB-ID.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GlobalNGRANNodeID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_GlobalNGRANNodeID_1[] = { + { ATF_POINTER, 0, offsetof(struct GlobalNGRANNodeID, choice.gNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalGNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalNGRANNodeID, choice.ng_eNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalNgENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ng-eNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalNGRANNodeID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-eNB */ +}; +asn_CHOICE_specifics_t asn_SPC_GlobalNGRANNodeID_specs_1 = { + sizeof(struct GlobalNGRANNodeID), + offsetof(struct GlobalNGRANNodeID, _asn_ctx), + offsetof(struct GlobalNGRANNodeID, present), + sizeof(((struct GlobalNGRANNodeID *)0)->present), + asn_MAP_GlobalNGRANNodeID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalNGRANNodeID = { + "GlobalNGRANNodeID", + "GlobalNGRANNodeID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GlobalNGRANNodeID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_GlobalNGRANNodeID_1, + 2, /* Elements count */ + &asn_SPC_GlobalNGRANNodeID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalNGRANNodeID.h b/e2sim/asn1c/GlobalNGRANNodeID.h new file mode 100644 index 0000000..a48d0f4 --- /dev/null +++ b/e2sim/asn1c/GlobalNGRANNodeID.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalNGRANNodeID_H_ +#define _GlobalNGRANNodeID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GlobalNGRANNodeID_PR { + GlobalNGRANNodeID_PR_NOTHING, /* No components present */ + GlobalNGRANNodeID_PR_gNB, + GlobalNGRANNodeID_PR_ng_eNB + /* Extensions may appear below */ + +} GlobalNGRANNodeID_PR; + +/* Forward declarations */ +struct GlobalGNB_ID; +struct GlobalNgENB_ID; + +/* GlobalNGRANNodeID */ +typedef struct GlobalNGRANNodeID { + GlobalNGRANNodeID_PR present; + union GlobalNGRANNodeID_u { + struct GlobalGNB_ID *gNB; + struct GlobalNgENB_ID *ng_eNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalNGRANNodeID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalNGRANNodeID; +extern asn_CHOICE_specifics_t asn_SPC_GlobalNGRANNodeID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalNGRANNodeID_1[2]; +extern asn_per_constraints_t asn_PER_type_GlobalNGRANNodeID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalNGRANNodeID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalNgENB-ID.c b/e2sim/asn1c/GlobalNgENB-ID.c new file mode 100644 index 0000000..5b10b0a --- /dev/null +++ b/e2sim/asn1c/GlobalNgENB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalNgENB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalNgENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalNgENB_ID, pLMNIdentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMNIdentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalNgENB_ID, ngENB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NgENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ngENB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalNgENB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalNgENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ngENB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalNgENB_ID_specs_1 = { + sizeof(struct GlobalNgENB_ID), + offsetof(struct GlobalNgENB_ID, _asn_ctx), + asn_MAP_GlobalNgENB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalNgENB_ID = { + "GlobalNgENB-ID", + "GlobalNgENB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalNgENB_ID_tags_1, + sizeof(asn_DEF_GlobalNgENB_ID_tags_1) + /sizeof(asn_DEF_GlobalNgENB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalNgENB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalNgENB_ID_tags_1) + /sizeof(asn_DEF_GlobalNgENB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GlobalNgENB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalNgENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalNgENB-ID.h b/e2sim/asn1c/GlobalNgENB-ID.h new file mode 100644 index 0000000..7ad0c5f --- /dev/null +++ b/e2sim/asn1c/GlobalNgENB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalNgENB_ID_H_ +#define _GlobalNgENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "NgENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalNgENB-ID */ +typedef struct GlobalNgENB_ID { + PLMNIdentity_t pLMNIdentity; + NgENB_ID_t ngENB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalNgENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalNgENB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalNgENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalNgENB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalNgENB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalRIC-ID.c b/e2sim/asn1c/GlobalRIC-ID.c new file mode 100644 index 0000000..95a33fa --- /dev/null +++ b/e2sim/asn1c/GlobalRIC-ID.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalRIC-ID.h" + +static int +memb_ric_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ric_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_GlobalRIC_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, ric_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ric_ID_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ric_ID_constraint_1 + }, + 0, 0, /* No default value */ + "ric-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalRIC_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalRIC_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalRIC_ID_specs_1 = { + sizeof(struct GlobalRIC_ID), + offsetof(struct GlobalRIC_ID, _asn_ctx), + asn_MAP_GlobalRIC_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID = { + "GlobalRIC-ID", + "GlobalRIC-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalRIC_ID_tags_1, + sizeof(asn_DEF_GlobalRIC_ID_tags_1) + /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalRIC_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalRIC_ID_tags_1) + /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GlobalRIC_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalRIC_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalRIC-ID.h b/e2sim/asn1c/GlobalRIC-ID.h new file mode 100644 index 0000000..89ad5d4 --- /dev/null +++ b/e2sim/asn1c/GlobalRIC-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalRIC_ID_H_ +#define _GlobalRIC_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalRIC-ID */ +typedef struct GlobalRIC_ID { + PLMN_Identity_t pLMN_Identity; + BIT_STRING_t ric_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalRIC_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalRIC_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalRIC_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalRIC_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalgNB-ID.c b/e2sim/asn1c/GlobalgNB-ID.c new file mode 100644 index 0000000..e1c5373 --- /dev/null +++ b/e2sim/asn1c/GlobalgNB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalgNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, plmn_id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "plmn-id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, gnb_id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GNB_ID_Choice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gnb-id" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalgNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalgNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gnb-id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1 = { + sizeof(struct GlobalgNB_ID), + offsetof(struct GlobalgNB_ID, _asn_ctx), + asn_MAP_GlobalgNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID = { + "GlobalgNB-ID", + "GlobalgNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalgNB_ID_tags_1, + sizeof(asn_DEF_GlobalgNB_ID_tags_1) + /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalgNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalgNB_ID_tags_1) + /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GlobalgNB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalgNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalgNB-ID.h b/e2sim/asn1c/GlobalgNB-ID.h new file mode 100644 index 0000000..05dad63 --- /dev/null +++ b/e2sim/asn1c/GlobalgNB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalgNB_ID_H_ +#define _GlobalgNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "GNB-ID-Choice.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalgNB-ID */ +typedef struct GlobalgNB_ID { + PLMN_Identity_t plmn_id; + GNB_ID_Choice_t gnb_id; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalgNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalgNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GlobalngeNB-ID.c b/e2sim/asn1c/GlobalngeNB-ID.c new file mode 100644 index 0000000..171bd44 --- /dev/null +++ b/e2sim/asn1c/GlobalngeNB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GlobalngeNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, plmn_id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "plmn-id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, enb_id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENB_ID_Choice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "enb-id" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalngeNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalngeNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* enb-id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1 = { + sizeof(struct GlobalngeNB_ID), + offsetof(struct GlobalngeNB_ID, _asn_ctx), + asn_MAP_GlobalngeNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID = { + "GlobalngeNB-ID", + "GlobalngeNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalngeNB_ID_tags_1, + sizeof(asn_DEF_GlobalngeNB_ID_tags_1) + /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalngeNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalngeNB_ID_tags_1) + /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_GlobalngeNB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalngeNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GlobalngeNB-ID.h b/e2sim/asn1c/GlobalngeNB-ID.h new file mode 100644 index 0000000..00e0a23 --- /dev/null +++ b/e2sim/asn1c/GlobalngeNB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GlobalngeNB_ID_H_ +#define _GlobalngeNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENB-ID-Choice.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalngeNB-ID */ +typedef struct GlobalngeNB_ID { + PLMN_Identity_t plmn_id; + ENB_ID_Choice_t enb_id; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalngeNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalngeNB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GranularityPeriod.c b/e2sim/asn1c/GranularityPeriod.c new file mode 100644 index 0000000..568669f --- /dev/null +++ b/e2sim/asn1c/GranularityPeriod.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GranularityPeriod.h" + +int +GranularityPeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + unsigned long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const unsigned long *)sptr; + + if((value >= 1UL && value <= 4294967295UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_GranularityPeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 1, 4294967295 } /* (1..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +const asn_INTEGER_specifics_t asn_SPC_GranularityPeriod_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_GranularityPeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GranularityPeriod = { + "GranularityPeriod", + "GranularityPeriod", + &asn_OP_NativeInteger, + asn_DEF_GranularityPeriod_tags_1, + sizeof(asn_DEF_GranularityPeriod_tags_1) + /sizeof(asn_DEF_GranularityPeriod_tags_1[0]), /* 1 */ + asn_DEF_GranularityPeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_GranularityPeriod_tags_1) + /sizeof(asn_DEF_GranularityPeriod_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GranularityPeriod_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + GranularityPeriod_constraint + }, + 0, 0, /* No members */ + &asn_SPC_GranularityPeriod_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GranularityPeriod.h b/e2sim/asn1c/GranularityPeriod.h new file mode 100644 index 0000000..e8e1a9f --- /dev/null +++ b/e2sim/asn1c/GranularityPeriod.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GranularityPeriod_H_ +#define _GranularityPeriod_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GranularityPeriod */ +typedef unsigned long GranularityPeriod_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GranularityPeriod_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GranularityPeriod; +extern const asn_INTEGER_specifics_t asn_SPC_GranularityPeriod_specs_1; +asn_struct_free_f GranularityPeriod_free; +asn_struct_print_f GranularityPeriod_print; +asn_constr_check_f GranularityPeriod_constraint; +ber_type_decoder_f GranularityPeriod_decode_ber; +der_type_encoder_f GranularityPeriod_encode_der; +xer_type_decoder_f GranularityPeriod_decode_xer; +xer_type_encoder_f GranularityPeriod_encode_xer; +jer_type_encoder_f GranularityPeriod_encode_jer; +per_type_decoder_f GranularityPeriod_decode_uper; +per_type_encoder_f GranularityPeriod_encode_uper; +per_type_decoder_f GranularityPeriod_decode_aper; +per_type_encoder_f GranularityPeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GranularityPeriod_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/GraphicString.c b/e2sim/asn1c/GraphicString.c new file mode 100644 index 0000000..b761187 --- /dev/null +++ b/e2sim/asn1c/GraphicString.c @@ -0,0 +1,91 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * GraphicString basic type description. + */ +static const ber_tlv_tag_t asn_DEF_GraphicString_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (25 << 2)), /* [UNIVERSAL 25] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +asn_TYPE_operation_t asn_OP_GraphicString = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print, /* non-ascii string */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, /* Can't expect it to be ASCII/UTF8 */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer, /* Can't expect it to be ASCII/UTF8 */ +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_GraphicString = { + "GraphicString", + "GraphicString", + &asn_OP_GraphicString, + asn_DEF_GraphicString_tags, + sizeof(asn_DEF_GraphicString_tags) + / sizeof(asn_DEF_GraphicString_tags[0]) - 1, + asn_DEF_GraphicString_tags, + sizeof(asn_DEF_GraphicString_tags) + / sizeof(asn_DEF_GraphicString_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_unknown_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; diff --git a/e2sim/asn1c/GraphicString.h b/e2sim/asn1c/GraphicString.h new file mode 100644 index 0000000..807e9d6 --- /dev/null +++ b/e2sim/asn1c/GraphicString.h @@ -0,0 +1,56 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _GraphicString_H_ +#define _GraphicString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t GraphicString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_GraphicString; +extern asn_TYPE_operation_t asn_OP_GraphicString; + +#define GraphicString_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define GraphicString_print OCTET_STRING_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define GraphicString_compare OCTET_STRING_compare + +#define GraphicString_constraint asn_generic_unknown_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define GraphicString_decode_ber OCTET_STRING_decode_ber +#define GraphicString_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define GraphicString_decode_xer OCTET_STRING_decode_xer_hex +#define GraphicString_encode_xer OCTET_STRING_encode_xer +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define GraphicString_encode_jer OCTET_STRING_encode_jer +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define GraphicString_decode_uper OCTET_STRING_decode_uper +#define GraphicString_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define GraphicString_decode_aper OCTET_STRING_decode_aper +#define GraphicString_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GraphicString_H_ */ diff --git a/e2sim/asn1c/GroupID.c b/e2sim/asn1c/GroupID.c new file mode 100644 index 0000000..57b62c7 --- /dev/null +++ b/e2sim/asn1c/GroupID.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "GroupID.h" + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_GroupID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_GroupID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GroupID, choice.fiveGC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FiveQI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "fiveGC" + }, + { ATF_NOFLAGS, 0, offsetof(struct GroupID, choice.ePC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_QCI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ePC" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GroupID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveGC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ePC */ +}; +static asn_CHOICE_specifics_t asn_SPC_GroupID_specs_1 = { + sizeof(struct GroupID), + offsetof(struct GroupID, _asn_ctx), + offsetof(struct GroupID, present), + sizeof(((struct GroupID *)0)->present), + asn_MAP_GroupID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GroupID = { + "GroupID", + "GroupID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GroupID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_GroupID_1, + 2, /* Elements count */ + &asn_SPC_GroupID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/GroupID.h b/e2sim/asn1c/GroupID.h new file mode 100644 index 0000000..7cc737e --- /dev/null +++ b/e2sim/asn1c/GroupID.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _GroupID_H_ +#define _GroupID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "FiveQI.h" +#include "QCI.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GroupID_PR { + GroupID_PR_NOTHING, /* No components present */ + GroupID_PR_fiveGC, + GroupID_PR_ePC + /* Extensions may appear below */ + +} GroupID_PR; + +/* GroupID */ +typedef struct GroupID { + GroupID_PR present; + union GroupID_u { + FiveQI_t fiveGC; + QCI_t ePC; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GroupID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GroupID; + +#ifdef __cplusplus +} +#endif + +#endif /* _GroupID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/INTEGER.c b/e2sim/asn1c/INTEGER.c new file mode 100644 index 0000000..095063f --- /dev/null +++ b/e2sim/asn1c/INTEGER.c @@ -0,0 +1,738 @@ +/* + * Copyright (c) 2003-2019 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#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, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + INTEGER_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + INTEGER_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + ber_decode_primitive, + INTEGER_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + INTEGER_decode_xer, + INTEGER_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + INTEGER_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + INTEGER_decode_oer, /* OER decoder */ + INTEGER_encode_oer, /* Canonical OER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + INTEGER_decode_uper, /* Unaligned PER decoder */ + INTEGER_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + INTEGER_decode_aper, /* Aligned PER decoder */ + INTEGER_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + INTEGER_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ +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]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * INTEGER specific human-readable output. + */ +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; +} + +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 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; + + const intmax_t 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; + + 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++) { + if(*str >= 0x30 && *str <= 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; + } + str += 1; + if(str < *end) { + // If digits continue, we're guaranteed out of range. + *end = str; + if(*str >= 0x30 && *str <= 0x39) { + return ASN_STRTOX_ERROR_RANGE; + } else { + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + break; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *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; + + const uintmax_t asn1_uintmax_max = ((~(uintmax_t)0)); + const uintmax_t upper_boundary = asn1_uintmax_max / 10; + uintmax_t last_digit_max = asn1_uintmax_max % 10; + + 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++) { + if(*str >= 0x30 && *str <= 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; + str += 1; + if(str < *end) { + // If digits continue, we're guaranteed out of range. + *end = str; + if(*str >= 0x30 && *str <= 0x39) { + return ASN_STRTOX_ERROR_RANGE; + } else { + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + break; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *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; + } + +} diff --git a/e2sim/asn1c/INTEGER.h b/e2sim/asn1c/INTEGER.h new file mode 100644 index 0000000..1666e0b --- /dev/null +++ b/e2sim/asn1c/INTEGER.h @@ -0,0 +1,139 @@ +/*- + * 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; + +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); + +#define INTEGER_free ASN__PRIMITIVE_TYPE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f INTEGER_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f INTEGER_compare; + +#define INTEGER_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define INTEGER_decode_ber ber_decode_primitive +der_type_encoder_f INTEGER_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f INTEGER_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f INTEGER_decode_oer; +oer_type_encoder_f INTEGER_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f INTEGER_decode_uper; +per_type_encoder_f INTEGER_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f INTEGER_decode_aper; +per_type_encoder_f INTEGER_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f INTEGER_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +/*********************************** + * 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 succeeded, number ends at (*end) */ + ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeeded, 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/e2sim/asn1c/INTEGER_aper.c b/e2sim/asn1c/INTEGER_aper.c new file mode 100644 index 0000000..fc88268 --- /dev/null +++ b/e2sim/asn1c/INTEGER_aper.c @@ -0,0 +1,308 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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 %lld", + value, (long long int)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 %lld", + value, (long long int)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, -1, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%zu) lb %lld ub %lld %s", + uval, st->buf[0], st->size, + (long long int)ct->lower_bound, + (long long int)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/%zu) lb %lld ub %lld %s", + value, st->buf[0], st->size, + (long long int)ct->lower_bound, + (long long int)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 (%lld) with range %d bits", + value, (long long int)(value - ct->lower_bound), + ct->range_bits); + + v = value - ct->lower_bound; + + /* #12 <= 8 -> alignment ? */ + int range = ct->upper_bound - ct->lower_bound + 1; + if (ct->range_bits < 8 || (ct->range_bits == 8 && range < 256)) { + 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 %lld", (long long int)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 = aper_put_length(po, -1, -1, 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 && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/INTEGER_ber.c b/e2sim/asn1c/INTEGER_ber.c new file mode 100644 index 0000000..57bfe1e --- /dev/null +++ b/e2sim/asn1c/INTEGER_ber.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * 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; +} diff --git a/e2sim/asn1c/INTEGER_jer.c b/e2sim/asn1c/INTEGER_jer.c new file mode 100644 index 0000000..23d7c12 --- /dev/null +++ b/e2sim/asn1c/INTEGER_jer.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +INTEGER_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/INTEGER_print.c b/e2sim/asn1c/INTEGER_print.c new file mode 100644 index 0000000..2d37dee --- /dev/null +++ b/e2sim/asn1c/INTEGER_print.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * 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; +} diff --git a/e2sim/asn1c/INTEGER_rfill.c b/e2sim/asn1c/INTEGER_rfill.c new file mode 100644 index 0000000..fab0023 --- /dev/null +++ b/e2sim/asn1c/INTEGER_rfill.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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 { + 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; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + const asn_per_constraints_t *ct; + + 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); + } + } +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + } + + 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/e2sim/asn1c/INTEGER_uper.c b/e2sim/asn1c/INTEGER_uper.c new file mode 100644 index 0000000..ed65385 --- /dev/null +++ b/e2sim/asn1c/INTEGER_uper.c @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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(uintmax_t)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + uintmax_t 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_umax2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + uintmax_t uvalue = 0; + intmax_t 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_imax_range_unrebase(uvalue, ct->lower_bound, + ct->upper_bound, &svalue) + || asn_imax2INTEGER(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 arithmetic. + */ + long value = 0; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_imax2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + union { + intmax_t s; + uintmax_t u; + } value; + + 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) { + if(asn_INTEGER2umax(st, &value.u)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value.u < (uintmax_t)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value.u < (uintmax_t)ct->lower_bound + || value.u > (uintmax_t)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", + value.u, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } else { + if(asn_INTEGER2imax(st, &value.s)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value.s < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value.s < ct->lower_bound + || value.s > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", + value.s, 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) { + uintmax_t v; + /* #11.5.6 -> #11.3 */ + if(specs && specs->field_unsigned) { + if(((uintmax_t)ct->lower_bound > (uintmax_t)(ct->upper_bound) + || (value.u < (uintmax_t)ct->lower_bound)) + || (value.u > (uintmax_t)ct->upper_bound)) { + ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", + value.u, ct->lower_bound, ct->upper_bound); + ASN__ENCODE_FAILED; + } + v = value.u - (uintmax_t)ct->lower_bound; + } else { + if(per_imax_range_rebase(value.s, ct->lower_bound, ct->upper_bound, &v)) { + ASN__ENCODE_FAILED; + } + } + ASN_DEBUG("Encoding integer %lu with range %d bits", + v, ct->range_bits); + 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); +} diff --git a/e2sim/asn1c/INTEGER_xer.c b/e2sim/asn1c/INTEGER_xer.c new file mode 100644 index 0000000..4f21c86 --- /dev/null +++ b/e2sim/asn1c/INTEGER_xer.c @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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_st_prealloc(INTEGER_t *st, int min_size) { + void *p = MALLOC(min_size + 1); + if(p) { + void *b = st->buf; + st->size = 0; + st->buf = p; + FREEMEM(b); + return 0; + } else { + return -1; + } +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t *st = (INTEGER_t *)sptr; + intmax_t dec_value; + intmax_t hex_value = 0; + const char *lp; + const char *lstart = (const char *)chunk_buf; + const char *lstop = lstart + chunk_size; + enum { + ST_LEADSPACE, + ST_SKIPSPHEX, + ST_WAITDIGITS, + ST_DIGITS, + ST_DIGITS_TRAILSPACE, + ST_HEXDIGIT1, + ST_HEXDIGIT2, + ST_HEXDIGITS_TRAILSPACE, + ST_HEXCOLON, + ST_END_ENUM, + ST_UNEXPECTED + } state = ST_LEADSPACE; + const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ + const char *dec_value_end = 0; + + if(chunk_size) + ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", + (long)chunk_size, *lstart, lstop[-1]); + + if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) + return XPBD_SYSTEM_FAILURE; + + /* + * We may have received a tag here. It will be processed inline. + * Use strtoul()-like code and serialize the result. + */ + for(lp = lstart; lp < lstop; lp++) { + int lv = *lp; + switch(lv) { + case 0x09: case 0x0a: case 0x0d: case 0x20: + switch(state) { + case ST_LEADSPACE: + case ST_DIGITS_TRAILSPACE: + case ST_HEXDIGITS_TRAILSPACE: + case ST_SKIPSPHEX: + continue; + case ST_DIGITS: + dec_value_end = lp; + state = ST_DIGITS_TRAILSPACE; + continue; + case ST_HEXCOLON: + state = ST_HEXDIGITS_TRAILSPACE; + continue; + default: + break; + } + break; + case 0x2d: /* '-' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x2b: /* '+' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + switch(state) { + case ST_DIGITS: continue; + case ST_SKIPSPHEX: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = (lv - 0x30) << 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += (lv - 0x30); + state = ST_HEXCOLON; + st->buf[st->size++] = (uint8_t)hex_value; + continue; + case ST_HEXCOLON: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + dec_value = 0; + dec_value_start = lp; + /* FALL THROUGH */ + case ST_WAITDIGITS: + state = ST_DIGITS; + continue; + default: + break; + } + break; + case 0x3c: /* '<', start of XML encoded enumeration */ + if(state == ST_LEADSPACE) { + const asn_INTEGER_enum_map_t *el; + el = INTEGER_map_enum2value( + (const asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %ld", + el->enum_name, el->nat_value); + dec_value = el->nat_value; + state = ST_END_ENUM; + lp = lstop - 1; + continue; + } + ASN_DEBUG("Unknown identifier for INTEGER"); + } + return XPBD_BROKEN_ENCODING; + case 0x3a: /* ':' */ + if(state == ST_HEXCOLON) { + /* This colon is expected */ + state = ST_HEXDIGIT1; + continue; + } else if(state == ST_DIGITS) { + /* The colon here means that we have + * decoded the first two hexadecimal + * places as a decimal value. + * Switch decoding mode. */ + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + } else { + ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); + break; + } + /* [A-Fa-f] */ + case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: + case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: + switch(state) { + case ST_SKIPSPHEX: + case ST_LEADSPACE: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + hex_value <<= 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + st->buf[st->size++] = (uint8_t)hex_value; + state = ST_HEXCOLON; + continue; + case ST_DIGITS: + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + default: + break; + } + break; + } + + /* Found extra non-numeric stuff */ + ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", + lv, (long)(lp - lstart)); + state = ST_UNEXPECTED; + break; + } + + switch(state) { + case ST_END_ENUM: + /* Got a complete and valid enumeration encoded as a tag. */ + break; + case ST_DIGITS: + dec_value_end = lstop; + /* FALL THROUGH */ + case ST_DIGITS_TRAILSPACE: + /* The last symbol encountered was a digit. */ + switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOX_OK: + if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { + break; + } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { + break; + } else { + /* + * We model INTEGER on long for XER, + * to avoid rewriting all the tests at once. + */ + ASN_DEBUG("INTEGER exceeds long range"); + } + /* Fall through */ + case ASN_STRTOX_ERROR_RANGE: + ASN_DEBUG("INTEGER decode %s hit range limit", td->name); + return XPBD_DECODER_LIMIT; + case ASN_STRTOX_ERROR_INVAL: + case ASN_STRTOX_EXPECT_MORE: + case ASN_STRTOX_EXTRA_DATA: + return XPBD_BROKEN_ENCODING; + } + break; + case ST_HEXCOLON: + case ST_HEXDIGITS_TRAILSPACE: + st->buf[st->size] = 0; /* Just in case termination */ + return XPBD_BODY_CONSUMED; + case ST_HEXDIGIT1: + case ST_HEXDIGIT2: + case ST_SKIPSPHEX: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + /* Content not found */ + return XPBD_NOT_BODY_IGNORE; + case ST_WAITDIGITS: + case ST_UNEXPECTED: + ASN_DEBUG("INTEGER: No useful digits (state %d)", state); + return XPBD_BROKEN_ENCODING; /* No digits */ + } + + /* + * Convert the result of parsing of enumeration or a straight + * decimal value into a BER representation. + */ + if(asn_imax2INTEGER(st, dec_value)) { + ASN_DEBUG("INTEGER decode %s conversion failed", td->name); + return XPBD_SYSTEM_FAILURE; + } + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(INTEGER_t), opt_mname, + buf_ptr, size, INTEGER__xer_body_decode); +} + +asn_enc_rval_t +INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/IndexToRFSP.c b/e2sim/asn1c/IndexToRFSP.c new file mode 100644 index 0000000..a199c50 --- /dev/null +++ b/e2sim/asn1c/IndexToRFSP.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "IndexToRFSP.h" + +int +IndexToRFSP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 256L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_IndexToRFSP_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 256 } /* (1..256,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_IndexToRFSP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IndexToRFSP = { + "IndexToRFSP", + "IndexToRFSP", + &asn_OP_NativeInteger, + asn_DEF_IndexToRFSP_tags_1, + sizeof(asn_DEF_IndexToRFSP_tags_1) + /sizeof(asn_DEF_IndexToRFSP_tags_1[0]), /* 1 */ + asn_DEF_IndexToRFSP_tags_1, /* Same as above */ + sizeof(asn_DEF_IndexToRFSP_tags_1) + /sizeof(asn_DEF_IndexToRFSP_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_IndexToRFSP_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + IndexToRFSP_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/IndexToRFSP.h b/e2sim/asn1c/IndexToRFSP.h new file mode 100644 index 0000000..dadc6ae --- /dev/null +++ b/e2sim/asn1c/IndexToRFSP.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _IndexToRFSP_H_ +#define _IndexToRFSP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* IndexToRFSP */ +typedef long IndexToRFSP_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IndexToRFSP; +asn_struct_free_f IndexToRFSP_free; +asn_struct_print_f IndexToRFSP_print; +asn_constr_check_f IndexToRFSP_constraint; +ber_type_decoder_f IndexToRFSP_decode_ber; +der_type_encoder_f IndexToRFSP_encode_der; +xer_type_decoder_f IndexToRFSP_decode_xer; +xer_type_encoder_f IndexToRFSP_encode_xer; +jer_type_encoder_f IndexToRFSP_encode_jer; +per_type_decoder_f IndexToRFSP_decode_uper; +per_type_encoder_f IndexToRFSP_encode_uper; +per_type_decoder_f IndexToRFSP_decode_aper; +per_type_encoder_f IndexToRFSP_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IndexToRFSP_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InitiatingMessage.c b/e2sim/asn1c/InitiatingMessage.c new file mode 100644 index 0000000..3130eac --- /dev/null +++ b/e2sim/asn1c/InitiatingMessage.c @@ -0,0 +1,682 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "e2ap-epd-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InitiatingMessage.h" + +static const long asn_VAL_1_id_RICsubscription = 8; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_RICsubscriptionDelete = 9; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_RICsubscriptionModification = 14; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_RICsubscriptionModificationRequired = 15; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_RICquery = 16; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_RICserviceUpdate = 7; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_RICcontrol = 4; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_8_id_E2setup = 1; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_9_id_E2nodeConfigurationUpdate = 10; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_10_id_E2connectionUpdate = 11; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_11_id_Reset = 3; +static const long asn_VAL_11_reject = 0; +static const long asn_VAL_12_id_E2removal = 13; +static const long asn_VAL_12_reject = 0; +static const long asn_VAL_13_id_RICindication = 5; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_14_id_RICserviceQuery = 6; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_15_id_ErrorIndication = 2; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_16_id_RICsubscriptionDeleteRequired = 12; +static const long asn_VAL_16_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionModificationRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICsubscriptionModification }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionModificationRequired }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationConfirm }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationRefuse }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICsubscriptionModificationRequired }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICQueryRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICQueryResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICQueryFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_RICquery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_RICserviceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICcontrol }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_E2setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2nodeConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_E2nodeConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2connectionUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_E2connectionUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2RemovalRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2RemovalResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2RemovalFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_E2removal }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_13_id_RICindication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_14_id_RICserviceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_15_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequired }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_16_id_RICsubscriptionDeleteRequired }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 16, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitiatingMessage_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitiatingMessage_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 0; /* &InitiatingMessage */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionModificationRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionModificationRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionModificationRequired), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationRequired, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionModificationRequired" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICQueryRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICQueryRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICQueryRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICserviceUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICcontrolRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcontrolRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2setupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2setupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2nodeConfigurationUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeConfigurationUpdate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeConfigurationUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2connectionUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResetRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ResetRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2RemovalRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2RemovalRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2RemovalRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICindication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICindication" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceQuery), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICserviceQuery" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ErrorIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ErrorIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequired), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequired, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteRequired" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 15 }, /* RICsubscriptionRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 14 }, /* RICsubscriptionDeleteRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 13 }, /* RICsubscriptionModificationRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 12 }, /* RICsubscriptionModificationRequired */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 11 }, /* RICQueryRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 10 }, /* RICserviceUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 9 }, /* RICcontrolRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 8 }, /* E2setupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 7 }, /* E2nodeConfigurationUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 6 }, /* E2connectionUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 5 }, /* ResetRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -11, 4 }, /* E2RemovalRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -12, 3 }, /* RICindication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -13, 2 }, /* RICserviceQuery */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -14, 1 }, /* ErrorIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 15, -15, 0 } /* RICsubscriptionDeleteRequired */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct InitiatingMessage__value), + offsetof(struct InitiatingMessage__value, _asn_ctx), + offsetof(struct InitiatingMessage__value, present), + sizeof(((struct InitiatingMessage__value *)0)->present), + asn_MAP_value_tag2el_4, + 16, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_4, + 16, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_procedureCode_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_procedureCode_constraint_1 + }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_InitiatingMessage_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_1 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_InitiatingMessage_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_1 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = { + sizeof(struct InitiatingMessage), + offsetof(struct InitiatingMessage, _asn_ctx), + asn_MAP_InitiatingMessage_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = { + "InitiatingMessage", + "InitiatingMessage", + &asn_OP_SEQUENCE, + asn_DEF_InitiatingMessage_tags_1, + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + asn_DEF_InitiatingMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InitiatingMessage_1, + 3, /* Elements count */ + &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InitiatingMessage.h b/e2sim/asn1c/InitiatingMessage.h new file mode 100644 index 0000000..8425105 --- /dev/null +++ b/e2sim/asn1c/InitiatingMessage.h @@ -0,0 +1,130 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "e2ap-epd-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InitiatingMessage_H_ +#define _InitiatingMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICsubscriptionModificationRequest.h" +#include "RICsubscriptionModificationResponse.h" +#include "RICsubscriptionModificationFailure.h" +#include "RICsubscriptionModificationRequired.h" +#include "RICsubscriptionModificationConfirm.h" +#include "RICsubscriptionModificationRefuse.h" +#include "RICQueryRequest.h" +#include "RICQueryResponse.h" +#include "RICQueryFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "E2setupRequest.h" +#include "E2setupResponse.h" +#include "E2setupFailure.h" +#include "E2nodeConfigurationUpdate.h" +#include "E2nodeConfigurationUpdateAcknowledge.h" +#include "E2nodeConfigurationUpdateFailure.h" +#include "E2connectionUpdate.h" +#include "E2connectionUpdateAcknowledge.h" +#include "E2connectionUpdateFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "E2RemovalRequest.h" +#include "E2RemovalResponse.h" +#include "E2RemovalFailure.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "ErrorIndication.h" +#include "RICsubscriptionDeleteRequired.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingMessage__value_PR { + InitiatingMessage__value_PR_NOTHING, /* No components present */ + InitiatingMessage__value_PR_RICsubscriptionRequest, + InitiatingMessage__value_PR_RICsubscriptionDeleteRequest, + InitiatingMessage__value_PR_RICsubscriptionModificationRequest, + InitiatingMessage__value_PR_RICsubscriptionModificationRequired, + InitiatingMessage__value_PR_RICQueryRequest, + InitiatingMessage__value_PR_RICserviceUpdate, + InitiatingMessage__value_PR_RICcontrolRequest, + InitiatingMessage__value_PR_E2setupRequest, + InitiatingMessage__value_PR_E2nodeConfigurationUpdate, + InitiatingMessage__value_PR_E2connectionUpdate, + InitiatingMessage__value_PR_ResetRequest, + InitiatingMessage__value_PR_E2RemovalRequest, + InitiatingMessage__value_PR_RICindication, + InitiatingMessage__value_PR_RICserviceQuery, + InitiatingMessage__value_PR_ErrorIndication, + InitiatingMessage__value_PR_RICsubscriptionDeleteRequired +} InitiatingMessage__value_PR; + +/* InitiatingMessage */ +typedef struct InitiatingMessage { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct InitiatingMessage__value { + InitiatingMessage__value_PR present; + union InitiatingMessage__value_u { + RICsubscriptionRequest_t RICsubscriptionRequest; + RICsubscriptionDeleteRequest_t RICsubscriptionDeleteRequest; + RICsubscriptionModificationRequest_t RICsubscriptionModificationRequest; + RICsubscriptionModificationRequired_t RICsubscriptionModificationRequired; + RICQueryRequest_t RICQueryRequest; + RICserviceUpdate_t RICserviceUpdate; + RICcontrolRequest_t RICcontrolRequest; + E2setupRequest_t E2setupRequest; + E2nodeConfigurationUpdate_t E2nodeConfigurationUpdate; + E2connectionUpdate_t E2connectionUpdate; + ResetRequest_t ResetRequest; + E2RemovalRequest_t E2RemovalRequest; + RICindication_t RICindication; + RICserviceQuery_t RICserviceQuery; + ErrorIndication_t ErrorIndication; + RICsubscriptionDeleteRequired_t RICsubscriptionDeleteRequired; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_InitiatingMessage_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingMessage_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/Interface-MessageID.c b/e2sim/asn1c/Interface-MessageID.c new file mode 100644 index 0000000..2dd28b2 --- /dev/null +++ b/e2sim/asn1c/Interface-MessageID.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "Interface-MessageID.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_messageType_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_messageType_value2enum_3[] = { + { 0, 17, "initiatingMessage" }, + { 1, 17, "successfulOutcome" }, + { 2, 19, "unsuccessfulOutcome" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_messageType_enum2value_3[] = { + 0, /* initiatingMessage(0) */ + 1, /* successfulOutcome(1) */ + 2 /* unsuccessfulOutcome(2) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_messageType_specs_3 = { + asn_MAP_messageType_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_messageType_enum2value_3, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_messageType_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_messageType_3 = { + "messageType", + "messageType", + &asn_OP_NativeEnumerated, + asn_DEF_messageType_tags_3, + sizeof(asn_DEF_messageType_tags_3) + /sizeof(asn_DEF_messageType_tags_3[0]) - 1, /* 1 */ + asn_DEF_messageType_tags_3, /* Same as above */ + sizeof(asn_DEF_messageType_tags_3) + /sizeof(asn_DEF_messageType_tags_3[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_messageType_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_messageType_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Interface_MessageID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Interface_MessageID, interfaceProcedureID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "interfaceProcedureID" + }, + { ATF_NOFLAGS, 0, offsetof(struct Interface_MessageID, messageType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_messageType_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "messageType" + }, +}; +static const ber_tlv_tag_t asn_DEF_Interface_MessageID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Interface_MessageID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interfaceProcedureID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageType */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Interface_MessageID_specs_1 = { + sizeof(struct Interface_MessageID), + offsetof(struct Interface_MessageID, _asn_ctx), + asn_MAP_Interface_MessageID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Interface_MessageID = { + "Interface-MessageID", + "Interface-MessageID", + &asn_OP_SEQUENCE, + asn_DEF_Interface_MessageID_tags_1, + sizeof(asn_DEF_Interface_MessageID_tags_1) + /sizeof(asn_DEF_Interface_MessageID_tags_1[0]), /* 1 */ + asn_DEF_Interface_MessageID_tags_1, /* Same as above */ + sizeof(asn_DEF_Interface_MessageID_tags_1) + /sizeof(asn_DEF_Interface_MessageID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Interface_MessageID_1, + 2, /* Elements count */ + &asn_SPC_Interface_MessageID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/Interface-MessageID.h b/e2sim/asn1c/Interface-MessageID.h new file mode 100644 index 0000000..ad78811 --- /dev/null +++ b/e2sim/asn1c/Interface-MessageID.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _Interface_MessageID_H_ +#define _Interface_MessageID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Interface_MessageID__messageType { + Interface_MessageID__messageType_initiatingMessage = 0, + Interface_MessageID__messageType_successfulOutcome = 1, + Interface_MessageID__messageType_unsuccessfulOutcome = 2 + /* + * Enumeration is extensible + */ +} e_Interface_MessageID__messageType; + +/* Interface-MessageID */ +typedef struct Interface_MessageID { + long interfaceProcedureID; + long messageType; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Interface_MessageID_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_messageType_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_Interface_MessageID; + +#ifdef __cplusplus +} +#endif + +#endif /* _Interface_MessageID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InterfaceID-E1.c b/e2sim/asn1c/InterfaceID-E1.c new file mode 100644 index 0000000..52f537c --- /dev/null +++ b/e2sim/asn1c/InterfaceID-E1.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InterfaceID-E1.h" + +asn_TYPE_member_t asn_MBR_InterfaceID_E1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_E1, globalGNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalGNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "globalGNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_E1, gNB_CU_UP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_COMMON_IEs_GNB_CU_UP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-UP-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceID_E1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_E1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* globalGNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-CU-UP-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_E1_specs_1 = { + sizeof(struct InterfaceID_E1), + offsetof(struct InterfaceID_E1, _asn_ctx), + asn_MAP_InterfaceID_E1_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceID_E1 = { + "InterfaceID-E1", + "InterfaceID-E1", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceID_E1_tags_1, + sizeof(asn_DEF_InterfaceID_E1_tags_1) + /sizeof(asn_DEF_InterfaceID_E1_tags_1[0]), /* 1 */ + asn_DEF_InterfaceID_E1_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceID_E1_tags_1) + /sizeof(asn_DEF_InterfaceID_E1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterfaceID_E1_1, + 2, /* Elements count */ + &asn_SPC_InterfaceID_E1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InterfaceID-E1.h b/e2sim/asn1c/InterfaceID-E1.h new file mode 100644 index 0000000..7d653a8 --- /dev/null +++ b/e2sim/asn1c/InterfaceID-E1.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InterfaceID_E1_H_ +#define _InterfaceID_E1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalGNB-ID.h" +#include "E2SM-COMMON-IEs_GNB-CU-UP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceID-E1 */ +typedef struct InterfaceID_E1 { + GlobalGNB_ID_t globalGNB_ID; + E2SM_COMMON_IEs_GNB_CU_UP_ID_t gNB_CU_UP_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceID_E1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceID_E1; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_E1_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceID_E1_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceID_E1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InterfaceID-F1.c b/e2sim/asn1c/InterfaceID-F1.c new file mode 100644 index 0000000..826e7ec --- /dev/null +++ b/e2sim/asn1c/InterfaceID-F1.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InterfaceID-F1.h" + +asn_TYPE_member_t asn_MBR_InterfaceID_F1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_F1, globalGNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalGNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "globalGNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_F1, gNB_DU_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_COMMON_IEs_GNB_DU_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-DU-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceID_F1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_F1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* globalGNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-DU-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_F1_specs_1 = { + sizeof(struct InterfaceID_F1), + offsetof(struct InterfaceID_F1, _asn_ctx), + asn_MAP_InterfaceID_F1_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceID_F1 = { + "InterfaceID-F1", + "InterfaceID-F1", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceID_F1_tags_1, + sizeof(asn_DEF_InterfaceID_F1_tags_1) + /sizeof(asn_DEF_InterfaceID_F1_tags_1[0]), /* 1 */ + asn_DEF_InterfaceID_F1_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceID_F1_tags_1) + /sizeof(asn_DEF_InterfaceID_F1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterfaceID_F1_1, + 2, /* Elements count */ + &asn_SPC_InterfaceID_F1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InterfaceID-F1.h b/e2sim/asn1c/InterfaceID-F1.h new file mode 100644 index 0000000..0877eda --- /dev/null +++ b/e2sim/asn1c/InterfaceID-F1.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InterfaceID_F1_H_ +#define _InterfaceID_F1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalGNB-ID.h" +#include "E2SM-COMMON-IEs_GNB-DU-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceID-F1 */ +typedef struct InterfaceID_F1 { + GlobalGNB_ID_t globalGNB_ID; + E2SM_COMMON_IEs_GNB_DU_ID_t gNB_DU_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceID_F1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceID_F1; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_F1_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceID_F1_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceID_F1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InterfaceID-NG.c b/e2sim/asn1c/InterfaceID-NG.c new file mode 100644 index 0000000..163d673 --- /dev/null +++ b/e2sim/asn1c/InterfaceID-NG.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InterfaceID-NG.h" + +asn_TYPE_member_t asn_MBR_InterfaceID_NG_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_NG, guami), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GUAMI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "guami" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceID_NG_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_NG_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* guami */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_NG_specs_1 = { + sizeof(struct InterfaceID_NG), + offsetof(struct InterfaceID_NG, _asn_ctx), + asn_MAP_InterfaceID_NG_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceID_NG = { + "InterfaceID-NG", + "InterfaceID-NG", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceID_NG_tags_1, + sizeof(asn_DEF_InterfaceID_NG_tags_1) + /sizeof(asn_DEF_InterfaceID_NG_tags_1[0]), /* 1 */ + asn_DEF_InterfaceID_NG_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceID_NG_tags_1) + /sizeof(asn_DEF_InterfaceID_NG_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterfaceID_NG_1, + 1, /* Elements count */ + &asn_SPC_InterfaceID_NG_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InterfaceID-NG.h b/e2sim/asn1c/InterfaceID-NG.h new file mode 100644 index 0000000..51b464e --- /dev/null +++ b/e2sim/asn1c/InterfaceID-NG.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InterfaceID_NG_H_ +#define _InterfaceID_NG_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GUAMI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceID-NG */ +typedef struct InterfaceID_NG { + GUAMI_t guami; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceID_NG_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceID_NG; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_NG_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceID_NG_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceID_NG_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InterfaceID-S1.c b/e2sim/asn1c/InterfaceID-S1.c new file mode 100644 index 0000000..b373ebb --- /dev/null +++ b/e2sim/asn1c/InterfaceID-S1.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InterfaceID-S1.h" + +asn_TYPE_member_t asn_MBR_InterfaceID_S1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_S1, gUMMEI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GUMMEI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gUMMEI" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceID_S1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_S1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gUMMEI */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_S1_specs_1 = { + sizeof(struct InterfaceID_S1), + offsetof(struct InterfaceID_S1, _asn_ctx), + asn_MAP_InterfaceID_S1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceID_S1 = { + "InterfaceID-S1", + "InterfaceID-S1", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceID_S1_tags_1, + sizeof(asn_DEF_InterfaceID_S1_tags_1) + /sizeof(asn_DEF_InterfaceID_S1_tags_1[0]), /* 1 */ + asn_DEF_InterfaceID_S1_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceID_S1_tags_1) + /sizeof(asn_DEF_InterfaceID_S1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterfaceID_S1_1, + 1, /* Elements count */ + &asn_SPC_InterfaceID_S1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InterfaceID-S1.h b/e2sim/asn1c/InterfaceID-S1.h new file mode 100644 index 0000000..36f3f93 --- /dev/null +++ b/e2sim/asn1c/InterfaceID-S1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InterfaceID_S1_H_ +#define _InterfaceID_S1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GUMMEI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceID-S1 */ +typedef struct InterfaceID_S1 { + GUMMEI_t gUMMEI; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceID_S1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceID_S1; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_S1_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceID_S1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceID_S1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InterfaceID-W1.c b/e2sim/asn1c/InterfaceID-W1.c new file mode 100644 index 0000000..47b89f0 --- /dev/null +++ b/e2sim/asn1c/InterfaceID-W1.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InterfaceID-W1.h" + +asn_TYPE_member_t asn_MBR_InterfaceID_W1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_W1, global_ng_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalNgENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-ng-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_W1, ng_eNB_DU_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_COMMON_IEs_NGENB_DU_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ng-eNB-DU-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceID_W1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_W1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-ng-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-eNB-DU-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_W1_specs_1 = { + sizeof(struct InterfaceID_W1), + offsetof(struct InterfaceID_W1, _asn_ctx), + asn_MAP_InterfaceID_W1_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceID_W1 = { + "InterfaceID-W1", + "InterfaceID-W1", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceID_W1_tags_1, + sizeof(asn_DEF_InterfaceID_W1_tags_1) + /sizeof(asn_DEF_InterfaceID_W1_tags_1[0]), /* 1 */ + asn_DEF_InterfaceID_W1_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceID_W1_tags_1) + /sizeof(asn_DEF_InterfaceID_W1_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterfaceID_W1_1, + 2, /* Elements count */ + &asn_SPC_InterfaceID_W1_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InterfaceID-W1.h b/e2sim/asn1c/InterfaceID-W1.h new file mode 100644 index 0000000..53d19e8 --- /dev/null +++ b/e2sim/asn1c/InterfaceID-W1.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InterfaceID_W1_H_ +#define _InterfaceID_W1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalNgENB-ID.h" +#include "E2SM-COMMON-IEs_NGENB-DU-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceID-W1 */ +typedef struct InterfaceID_W1 { + GlobalNgENB_ID_t global_ng_eNB_ID; + E2SM_COMMON_IEs_NGENB_DU_ID_t ng_eNB_DU_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceID_W1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceID_W1; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_W1_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceID_W1_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceID_W1_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InterfaceID-X2.c b/e2sim/asn1c/InterfaceID-X2.c new file mode 100644 index 0000000..f1b287a --- /dev/null +++ b/e2sim/asn1c/InterfaceID-X2.c @@ -0,0 +1,148 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InterfaceID-X2.h" + +#include "E2SM-COMMON-IEs_GlobalENB-ID.h" +#include "E2SM-COMMON-IEs_GlobalenGNB-ID.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_nodeType_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_nodeType_2[] = { + { ATF_POINTER, 0, offsetof(struct InterfaceID_X2__nodeType, choice.global_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-eNB-ID" + }, + { ATF_POINTER, 0, offsetof(struct InterfaceID_X2__nodeType, choice.global_en_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_COMMON_IEs_GlobalenGNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-en-gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_nodeType_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global-en-gNB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_nodeType_specs_2 = { + sizeof(struct InterfaceID_X2__nodeType), + offsetof(struct InterfaceID_X2__nodeType, _asn_ctx), + offsetof(struct InterfaceID_X2__nodeType, present), + sizeof(((struct InterfaceID_X2__nodeType *)0)->present), + asn_MAP_nodeType_tag2el_2, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_nodeType_2 = { + "nodeType", + "nodeType", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_nodeType_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_nodeType_2, + 2, /* Elements count */ + &asn_SPC_nodeType_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_InterfaceID_X2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_X2, nodeType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_nodeType_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nodeType" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceID_X2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_X2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nodeType */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_X2_specs_1 = { + sizeof(struct InterfaceID_X2), + offsetof(struct InterfaceID_X2, _asn_ctx), + asn_MAP_InterfaceID_X2_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceID_X2 = { + "InterfaceID-X2", + "InterfaceID-X2", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceID_X2_tags_1, + sizeof(asn_DEF_InterfaceID_X2_tags_1) + /sizeof(asn_DEF_InterfaceID_X2_tags_1[0]), /* 1 */ + asn_DEF_InterfaceID_X2_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceID_X2_tags_1) + /sizeof(asn_DEF_InterfaceID_X2_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterfaceID_X2_1, + 1, /* Elements count */ + &asn_SPC_InterfaceID_X2_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InterfaceID-X2.h b/e2sim/asn1c/InterfaceID-X2.h new file mode 100644 index 0000000..aff8283 --- /dev/null +++ b/e2sim/asn1c/InterfaceID-X2.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InterfaceID_X2_H_ +#define _InterfaceID_X2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterfaceID_X2__nodeType_PR { + InterfaceID_X2__nodeType_PR_NOTHING, /* No components present */ + InterfaceID_X2__nodeType_PR_global_eNB_ID, + InterfaceID_X2__nodeType_PR_global_en_gNB_ID + /* Extensions may appear below */ + +} InterfaceID_X2__nodeType_PR; + +/* Forward declarations */ +struct GlobalENB_ID; +struct GlobalenGNB_ID; + +/* InterfaceID-X2 */ +typedef struct InterfaceID_X2 { + struct InterfaceID_X2__nodeType { + InterfaceID_X2__nodeType_PR present; + union InterfaceID_X2__nodeType_u { + struct GlobalENB_ID *global_eNB_ID; + struct GlobalenGNB_ID *global_en_gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } nodeType; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceID_X2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceID_X2; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_X2_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceID_X2_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceID_X2_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InterfaceID-Xn.c b/e2sim/asn1c/InterfaceID-Xn.c new file mode 100644 index 0000000..f47a346 --- /dev/null +++ b/e2sim/asn1c/InterfaceID-Xn.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InterfaceID-Xn.h" + +asn_TYPE_member_t asn_MBR_InterfaceID_Xn_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceID_Xn, global_NG_RAN_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GlobalNGRANNodeID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "global-NG-RAN-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceID_Xn_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_Xn_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-NG-RAN-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_Xn_specs_1 = { + sizeof(struct InterfaceID_Xn), + offsetof(struct InterfaceID_Xn, _asn_ctx), + asn_MAP_InterfaceID_Xn_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceID_Xn = { + "InterfaceID-Xn", + "InterfaceID-Xn", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceID_Xn_tags_1, + sizeof(asn_DEF_InterfaceID_Xn_tags_1) + /sizeof(asn_DEF_InterfaceID_Xn_tags_1[0]), /* 1 */ + asn_DEF_InterfaceID_Xn_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceID_Xn_tags_1) + /sizeof(asn_DEF_InterfaceID_Xn_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterfaceID_Xn_1, + 1, /* Elements count */ + &asn_SPC_InterfaceID_Xn_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InterfaceID-Xn.h b/e2sim/asn1c/InterfaceID-Xn.h new file mode 100644 index 0000000..664e734 --- /dev/null +++ b/e2sim/asn1c/InterfaceID-Xn.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InterfaceID_Xn_H_ +#define _InterfaceID_Xn_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalNGRANNodeID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceID-Xn */ +typedef struct InterfaceID_Xn { + GlobalNGRANNodeID_t global_NG_RAN_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceID_Xn_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceID_Xn; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_Xn_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceID_Xn_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceID_Xn_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InterfaceIdentifier.c b/e2sim/asn1c/InterfaceIdentifier.c new file mode 100644 index 0000000..fd288cc --- /dev/null +++ b/e2sim/asn1c/InterfaceIdentifier.c @@ -0,0 +1,185 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InterfaceIdentifier.h" + +#include "InterfaceID-NG.h" +#include "InterfaceID-Xn.h" +#include "InterfaceID-F1.h" +#include "InterfaceID-E1.h" +#include "InterfaceID-S1.h" +#include "InterfaceID-X2.h" +#include "InterfaceID-W1.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_InterfaceIdentifier_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_InterfaceIdentifier_1[] = { + { ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.nG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceID_NG, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nG" + }, + { ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.xN), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceID_Xn, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "xN" + }, + { ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.f1), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceID_F1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "f1" + }, + { ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.e1), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceID_E1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "e1" + }, + { ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.s1), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceID_S1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "s1" + }, + { ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.x2), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceID_X2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "x2" + }, + { ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.w1), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceID_W1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "w1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceIdentifier_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* xN */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* f1 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e1 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* s1 */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* x2 */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* w1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_InterfaceIdentifier_specs_1 = { + sizeof(struct InterfaceIdentifier), + offsetof(struct InterfaceIdentifier, _asn_ctx), + offsetof(struct InterfaceIdentifier, present), + sizeof(((struct InterfaceIdentifier *)0)->present), + asn_MAP_InterfaceIdentifier_tag2el_1, + 7, /* Count of tags in the map */ + 0, 0, + 7 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceIdentifier = { + "InterfaceIdentifier", + "InterfaceIdentifier", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_InterfaceIdentifier_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_InterfaceIdentifier_1, + 7, /* Elements count */ + &asn_SPC_InterfaceIdentifier_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InterfaceIdentifier.h b/e2sim/asn1c/InterfaceIdentifier.h new file mode 100644 index 0000000..8a2ca37 --- /dev/null +++ b/e2sim/asn1c/InterfaceIdentifier.h @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InterfaceIdentifier_H_ +#define _InterfaceIdentifier_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterfaceIdentifier_PR { + InterfaceIdentifier_PR_NOTHING, /* No components present */ + InterfaceIdentifier_PR_nG, + InterfaceIdentifier_PR_xN, + InterfaceIdentifier_PR_f1, + InterfaceIdentifier_PR_e1, + InterfaceIdentifier_PR_s1, + InterfaceIdentifier_PR_x2, + InterfaceIdentifier_PR_w1 + /* Extensions may appear below */ + +} InterfaceIdentifier_PR; + +/* Forward declarations */ +struct InterfaceID_NG; +struct InterfaceID_Xn; +struct InterfaceID_F1; +struct InterfaceID_E1; +struct InterfaceID_S1; +struct InterfaceID_X2; +struct InterfaceID_W1; + +/* InterfaceIdentifier */ +typedef struct InterfaceIdentifier { + InterfaceIdentifier_PR present; + union InterfaceIdentifier_u { + struct InterfaceID_NG *nG; + struct InterfaceID_Xn *xN; + struct InterfaceID_F1 *f1; + struct InterfaceID_E1 *e1; + struct InterfaceID_S1 *s1; + struct InterfaceID_X2 *x2; + struct InterfaceID_W1 *w1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceIdentifier_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceIdentifier; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceIdentifier_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/InterfaceType.c b/e2sim/asn1c/InterfaceType.c new file mode 100644 index 0000000..88a9e75 --- /dev/null +++ b/e2sim/asn1c/InterfaceType.c @@ -0,0 +1,75 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "InterfaceType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_InterfaceType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_InterfaceType_value2enum_1[] = { + { 0, 2, "nG" }, + { 1, 2, "xn" }, + { 2, 2, "f1" }, + { 3, 2, "e1" }, + { 4, 2, "s1" }, + { 5, 2, "x2" }, + { 6, 2, "w1" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_InterfaceType_enum2value_1[] = { + 3, /* e1(3) */ + 2, /* f1(2) */ + 0, /* nG(0) */ + 4, /* s1(4) */ + 6, /* w1(6) */ + 5, /* x2(5) */ + 1 /* xn(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_InterfaceType_specs_1 = { + asn_MAP_InterfaceType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_InterfaceType_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_InterfaceType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceType = { + "InterfaceType", + "InterfaceType", + &asn_OP_NativeEnumerated, + asn_DEF_InterfaceType_tags_1, + sizeof(asn_DEF_InterfaceType_tags_1) + /sizeof(asn_DEF_InterfaceType_tags_1[0]), /* 1 */ + asn_DEF_InterfaceType_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceType_tags_1) + /sizeof(asn_DEF_InterfaceType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_InterfaceType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_InterfaceType_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/InterfaceType.h b/e2sim/asn1c/InterfaceType.h new file mode 100644 index 0000000..3deda70 --- /dev/null +++ b/e2sim/asn1c/InterfaceType.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _InterfaceType_H_ +#define _InterfaceType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterfaceType { + InterfaceType_nG = 0, + InterfaceType_xn = 1, + InterfaceType_f1 = 2, + InterfaceType_e1 = 3, + InterfaceType_s1 = 4, + InterfaceType_x2 = 5, + InterfaceType_w1 = 6 + /* + * Enumeration is extensible + */ +} e_InterfaceType; + +/* InterfaceType */ +typedef long InterfaceType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceType; +asn_struct_free_f InterfaceType_free; +asn_struct_print_f InterfaceType_print; +asn_constr_check_f InterfaceType_constraint; +ber_type_decoder_f InterfaceType_decode_ber; +der_type_encoder_f InterfaceType_encode_der; +xer_type_decoder_f InterfaceType_decode_xer; +xer_type_encoder_f InterfaceType_encode_xer; +jer_type_encoder_f InterfaceType_encode_jer; +per_type_decoder_f InterfaceType_decode_uper; +per_type_encoder_f InterfaceType_encode_uper; +per_type_decoder_f InterfaceType_decode_aper; +per_type_encoder_f InterfaceType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceType_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/LabelInfoItem.c b/e2sim/asn1c/LabelInfoItem.c new file mode 100644 index 0000000..b917146 --- /dev/null +++ b/e2sim/asn1c/LabelInfoItem.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "LabelInfoItem.h" + +asn_TYPE_member_t asn_MBR_LabelInfoItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LabelInfoItem, measLabel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementLabel, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measLabel" + }, +}; +static const ber_tlv_tag_t asn_DEF_LabelInfoItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LabelInfoItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* measLabel */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LabelInfoItem_specs_1 = { + sizeof(struct LabelInfoItem), + offsetof(struct LabelInfoItem, _asn_ctx), + asn_MAP_LabelInfoItem_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LabelInfoItem = { + "LabelInfoItem", + "LabelInfoItem", + &asn_OP_SEQUENCE, + asn_DEF_LabelInfoItem_tags_1, + sizeof(asn_DEF_LabelInfoItem_tags_1) + /sizeof(asn_DEF_LabelInfoItem_tags_1[0]), /* 1 */ + asn_DEF_LabelInfoItem_tags_1, /* Same as above */ + sizeof(asn_DEF_LabelInfoItem_tags_1) + /sizeof(asn_DEF_LabelInfoItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_LabelInfoItem_1, + 1, /* Elements count */ + &asn_SPC_LabelInfoItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/LabelInfoItem.h b/e2sim/asn1c/LabelInfoItem.h new file mode 100644 index 0000000..04aae8a --- /dev/null +++ b/e2sim/asn1c/LabelInfoItem.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _LabelInfoItem_H_ +#define _LabelInfoItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementLabel.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LabelInfoItem */ +typedef struct LabelInfoItem { + MeasurementLabel_t measLabel; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LabelInfoItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LabelInfoItem; +extern asn_SEQUENCE_specifics_t asn_SPC_LabelInfoItem_specs_1; +extern asn_TYPE_member_t asn_MBR_LabelInfoItem_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LabelInfoItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/LabelInfoList.c b/e2sim/asn1c/LabelInfoList.c new file mode 100644 index 0000000..e41f726 --- /dev/null +++ b/e2sim/asn1c/LabelInfoList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "LabelInfoList.h" + +#include "LabelInfoItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LabelInfoList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 31, -1, 1, 2147483647 } /* (SIZE(1..2147483647)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_LabelInfoList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LabelInfoItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_LabelInfoList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_LabelInfoList_specs_1 = { + sizeof(struct LabelInfoList), + offsetof(struct LabelInfoList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_LabelInfoList = { + "LabelInfoList", + "LabelInfoList", + &asn_OP_SEQUENCE_OF, + asn_DEF_LabelInfoList_tags_1, + sizeof(asn_DEF_LabelInfoList_tags_1) + /sizeof(asn_DEF_LabelInfoList_tags_1[0]), /* 1 */ + asn_DEF_LabelInfoList_tags_1, /* Same as above */ + sizeof(asn_DEF_LabelInfoList_tags_1) + /sizeof(asn_DEF_LabelInfoList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LabelInfoList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_LabelInfoList_1, + 1, /* Single element */ + &asn_SPC_LabelInfoList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/LabelInfoList.h b/e2sim/asn1c/LabelInfoList.h new file mode 100644 index 0000000..89774f6 --- /dev/null +++ b/e2sim/asn1c/LabelInfoList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _LabelInfoList_H_ +#define _LabelInfoList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct LabelInfoItem; + +/* LabelInfoList */ +typedef struct LabelInfoList { + A_SEQUENCE_OF(struct LabelInfoItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LabelInfoList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LabelInfoList; +extern asn_SET_OF_specifics_t asn_SPC_LabelInfoList_specs_1; +extern asn_TYPE_member_t asn_MBR_LabelInfoList_1[1]; +extern asn_per_constraints_t asn_PER_type_LabelInfoList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _LabelInfoList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/LogicalOR.c b/e2sim/asn1c/LogicalOR.c new file mode 100644 index 0000000..1fd300c --- /dev/null +++ b/e2sim/asn1c/LogicalOR.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "LogicalOR.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LogicalOR_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_LogicalOR_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_LogicalOR_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_LogicalOR_specs_1 = { + asn_MAP_LogicalOR_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_LogicalOR_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_LogicalOR_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LogicalOR = { + "LogicalOR", + "LogicalOR", + &asn_OP_NativeEnumerated, + asn_DEF_LogicalOR_tags_1, + sizeof(asn_DEF_LogicalOR_tags_1) + /sizeof(asn_DEF_LogicalOR_tags_1[0]), /* 1 */ + asn_DEF_LogicalOR_tags_1, /* Same as above */ + sizeof(asn_DEF_LogicalOR_tags_1) + /sizeof(asn_DEF_LogicalOR_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LogicalOR_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_LogicalOR_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/LogicalOR.h b/e2sim/asn1c/LogicalOR.h new file mode 100644 index 0000000..4be8a24 --- /dev/null +++ b/e2sim/asn1c/LogicalOR.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _LogicalOR_H_ +#define _LogicalOR_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LogicalOR { + LogicalOR_true = 0 + /* + * Enumeration is extensible + */ +} e_LogicalOR; + +/* LogicalOR */ +typedef long LogicalOR_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LogicalOR_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LogicalOR; +extern const asn_INTEGER_specifics_t asn_SPC_LogicalOR_specs_1; +asn_struct_free_f LogicalOR_free; +asn_struct_print_f LogicalOR_print; +asn_constr_check_f LogicalOR_constraint; +ber_type_decoder_f LogicalOR_decode_ber; +der_type_encoder_f LogicalOR_encode_der; +xer_type_decoder_f LogicalOR_decode_xer; +xer_type_encoder_f LogicalOR_encode_xer; +jer_type_encoder_f LogicalOR_encode_jer; +per_type_decoder_f LogicalOR_decode_uper; +per_type_encoder_f LogicalOR_encode_uper; +per_type_decoder_f LogicalOR_decode_aper; +per_type_encoder_f LogicalOR_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LogicalOR_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MME-Code.c b/e2sim/asn1c/MME-Code.c new file mode 100644 index 0000000..07c8879 --- /dev/null +++ b/e2sim/asn1c/MME-Code.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MME-Code.h" + +int +MME_Code_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 1UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MME_Code_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MME_Code_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MME_Code = { + "MME-Code", + "MME-Code", + &asn_OP_OCTET_STRING, + asn_DEF_MME_Code_tags_1, + sizeof(asn_DEF_MME_Code_tags_1) + /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */ + asn_DEF_MME_Code_tags_1, /* Same as above */ + sizeof(asn_DEF_MME_Code_tags_1) + /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MME_Code_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MME_Code_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MME-Code.h b/e2sim/asn1c/MME-Code.h new file mode 100644 index 0000000..a31f50b --- /dev/null +++ b/e2sim/asn1c/MME-Code.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MME_Code_H_ +#define _MME_Code_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MME-Code */ +typedef OCTET_STRING_t MME_Code_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MME_Code_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MME_Code; +asn_struct_free_f MME_Code_free; +asn_struct_print_f MME_Code_print; +asn_constr_check_f MME_Code_constraint; +ber_type_decoder_f MME_Code_decode_ber; +der_type_encoder_f MME_Code_encode_der; +xer_type_decoder_f MME_Code_decode_xer; +xer_type_encoder_f MME_Code_encode_xer; +jer_type_encoder_f MME_Code_encode_jer; +per_type_decoder_f MME_Code_decode_uper; +per_type_encoder_f MME_Code_encode_uper; +per_type_decoder_f MME_Code_decode_aper; +per_type_encoder_f MME_Code_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MME_Code_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MME-Group-ID.c b/e2sim/asn1c/MME-Group-ID.c new file mode 100644 index 0000000..11ccf78 --- /dev/null +++ b/e2sim/asn1c/MME-Group-ID.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MME-Group-ID.h" + +int +MME_Group_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MME_Group_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MME_Group_ID = { + "MME-Group-ID", + "MME-Group-ID", + &asn_OP_OCTET_STRING, + asn_DEF_MME_Group_ID_tags_1, + sizeof(asn_DEF_MME_Group_ID_tags_1) + /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */ + asn_DEF_MME_Group_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_MME_Group_ID_tags_1) + /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MME_Group_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MME_Group_ID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MME-Group-ID.h b/e2sim/asn1c/MME-Group-ID.h new file mode 100644 index 0000000..73b32b7 --- /dev/null +++ b/e2sim/asn1c/MME-Group-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MME_Group_ID_H_ +#define _MME_Group_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MME-Group-ID */ +typedef OCTET_STRING_t MME_Group_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MME_Group_ID; +asn_struct_free_f MME_Group_ID_free; +asn_struct_print_f MME_Group_ID_print; +asn_constr_check_f MME_Group_ID_constraint; +ber_type_decoder_f MME_Group_ID_decode_ber; +der_type_encoder_f MME_Group_ID_encode_der; +xer_type_decoder_f MME_Group_ID_decode_xer; +xer_type_encoder_f MME_Group_ID_encode_xer; +jer_type_encoder_f MME_Group_ID_encode_jer; +per_type_decoder_f MME_Group_ID_decode_uper; +per_type_encoder_f MME_Group_ID_encode_uper; +per_type_decoder_f MME_Group_ID_decode_aper; +per_type_encoder_f MME_Group_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MME_Group_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MME-UE-S1AP-ID.c b/e2sim/asn1c/MME-UE-S1AP-ID.c new file mode 100644 index 0000000..a1774f7 --- /dev/null +++ b/e2sim/asn1c/MME-UE-S1AP-ID.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MME-UE-S1AP-ID.h" + +int +MME_UE_S1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MME_UE_S1AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +const asn_INTEGER_specifics_t asn_SPC_MME_UE_S1AP_ID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_MME_UE_S1AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MME_UE_S1AP_ID = { + "MME-UE-S1AP-ID", + "MME-UE-S1AP-ID", + &asn_OP_NativeInteger, + asn_DEF_MME_UE_S1AP_ID_tags_1, + sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1[0]), /* 1 */ + asn_DEF_MME_UE_S1AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MME_UE_S1AP_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MME_UE_S1AP_ID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_MME_UE_S1AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MME-UE-S1AP-ID.h b/e2sim/asn1c/MME-UE-S1AP-ID.h new file mode 100644 index 0000000..79f3c29 --- /dev/null +++ b/e2sim/asn1c/MME-UE-S1AP-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MME_UE_S1AP_ID_H_ +#define _MME_UE_S1AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MME-UE-S1AP-ID */ +typedef unsigned long MME_UE_S1AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MME_UE_S1AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MME_UE_S1AP_ID; +extern const asn_INTEGER_specifics_t asn_SPC_MME_UE_S1AP_ID_specs_1; +asn_struct_free_f MME_UE_S1AP_ID_free; +asn_struct_print_f MME_UE_S1AP_ID_print; +asn_constr_check_f MME_UE_S1AP_ID_constraint; +ber_type_decoder_f MME_UE_S1AP_ID_decode_ber; +der_type_encoder_f MME_UE_S1AP_ID_encode_der; +xer_type_decoder_f MME_UE_S1AP_ID_decode_xer; +xer_type_encoder_f MME_UE_S1AP_ID_encode_xer; +jer_type_encoder_f MME_UE_S1AP_ID_encode_jer; +per_type_decoder_f MME_UE_S1AP_ID_decode_uper; +per_type_encoder_f MME_UE_S1AP_ID_encode_uper; +per_type_decoder_f MME_UE_S1AP_ID_decode_aper; +per_type_encoder_f MME_UE_S1AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MME_UE_S1AP_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MMEname.c b/e2sim/asn1c/MMEname.c new file mode 100644 index 0000000..95be200 --- /dev/null +++ b/e2sim/asn1c/MMEname.c @@ -0,0 +1,116 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MMEname.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_1[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +MMEname_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 150UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_MMEname_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_MMEname_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using PrintableString, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MMEname_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_MMEname_1_v2c, /* Value to PER code map */ + asn_PER_MAP_MMEname_1_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MMEname_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MMEname = { + "MMEname", + "MMEname", + &asn_OP_PrintableString, + asn_DEF_MMEname_tags_1, + sizeof(asn_DEF_MMEname_tags_1) + /sizeof(asn_DEF_MMEname_tags_1[0]), /* 1 */ + asn_DEF_MMEname_tags_1, /* Same as above */ + sizeof(asn_DEF_MMEname_tags_1) + /sizeof(asn_DEF_MMEname_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MMEname_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MMEname_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/MMEname.h b/e2sim/asn1c/MMEname.h new file mode 100644 index 0000000..5cb0975 --- /dev/null +++ b/e2sim/asn1c/MMEname.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MMEname_H_ +#define _MMEname_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrintableString.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MMEname */ +typedef PrintableString_t MMEname_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MMEname_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MMEname; +asn_struct_free_f MMEname_free; +asn_struct_print_f MMEname_print; +asn_constr_check_f MMEname_constraint; +ber_type_decoder_f MMEname_decode_ber; +der_type_encoder_f MMEname_encode_der; +xer_type_decoder_f MMEname_decode_xer; +xer_type_encoder_f MMEname_encode_xer; +jer_type_encoder_f MMEname_encode_jer; +per_type_decoder_f MMEname_decode_uper; +per_type_encoder_f MMEname_encode_uper; +per_type_decoder_f MMEname_decode_aper; +per_type_encoder_f MMEname_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MMEname_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/Makefile.am.libasncodec b/e2sim/asn1c/Makefile.am.libasncodec new file mode 100644 index 0000000..ab80c16 --- /dev/null +++ b/e2sim/asn1c/Makefile.am.libasncodec @@ -0,0 +1,903 @@ +ASN_MODULE_SRCS= \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/Criticality.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/Presence.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProcedureCode.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TriggeringMessage.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-Container.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-SingleContainer.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-Field.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-ContainerPair.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-FieldPair.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-ContainerList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-ContainerPairList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-PDU.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InitiatingMessage.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SuccessfulOutcome.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UnsuccessfulOutcome.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMFName.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/Cause.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseE2node.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseMisc.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseProtocol.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseRICrequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseRICservice.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseTransport.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CriticalityDiagnostics.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CriticalityDiagnostics-IE-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CriticalityDiagnostics-IE-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfiguration.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigurationAck.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceType.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceE1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceF1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceNG.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceS1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceX2.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceXn.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceW1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_ENB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ENB-ID-Choice.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ENGNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-en-gNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-eNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-gNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-ng-eNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_GlobalENB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalgNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalngeNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalNG-RANNode-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalRIC-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_GNB-DU-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GNB-ID-Choice.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MMEname.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/PLMN-Identity.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionDefinition.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionOID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionRevision.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactionDefinition.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactionExecutionOrder.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactionID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactionType.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcallProcessID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolAckRequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolHeader.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolMessage.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolOutcome.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICeventTriggerDefinition.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindicationHeader.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindicationMessage.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindicationSN.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindicationType.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICrequestID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionTime.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubsequentAction.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubsequentActionType.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICqueryHeader.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICqueryDefinition.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICqueryOutcome.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICtimeToWait.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TimeToWait.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TNLinformation.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TNLusage.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TransactionID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TypeOfError.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionRequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDetails.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ToBeSetup-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ToBeSetup-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionResponse.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-Admitted-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-Admitted-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-NotAdmitted-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-NotAdmitted-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDeleteRequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDeleteResponse.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDeleteFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDeleteRequired.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscription-List-withCause.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscription-withCause-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationRequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ToBeRemovedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ToBeModifiedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ToBeAddedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ToBeAddedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationResponse.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RemovedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RemovedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ModifiedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ModifiedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-AddedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-AddedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationRequired.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RequiredToBeModified-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RequiredToBeModified-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RequiredToBeRemoved-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationConfirm.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ConfirmedForModification-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ConfirmedForModification-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RefusedToBeModified-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RefusedToBeModified-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ConfirmedForRemoval-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RefusedToBeRemoved-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationRefuse.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindication.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolRequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolAcknowledge.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICQueryRequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICQueryResponse.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICQueryFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ErrorIndication.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2setupRequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2setupResponse.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2setupFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdate.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdate-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdate-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdateRemove-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdateRemove-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdateAcknowledge.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionSetupFailed-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionSetupFailed-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdateFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeConfigurationUpdate.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigAddition-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigAddition-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigUpdate-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigUpdate-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigRemoval-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigRemoval-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeTNLassociationRemoval-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeTNLassociationRemoval-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeConfigurationUpdateFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ResetRequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ResetResponse.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICserviceUpdate.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctions-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunction-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionsID-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionID-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICserviceUpdateAcknowledge.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionsIDcause-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionIDcause-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICserviceUpdateFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICserviceQuery.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2RemovalRequest.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2RemovalResponse.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2RemovalFailure.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TimeStamp.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinIndex.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinRangeValue.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GranularityPeriod.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/LogicalOR.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementType.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementTypeName.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementTypeID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementLabel.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TestCondInfo.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TestCond-Type.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TestCond-Expression.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TestCond-Value.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinRangeDefinition.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinRangeList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinRangeItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/DistMeasurementBinRangeList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/DistMeasurementBinRangeItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementInfoList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementInfoItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/LabelInfoList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/LabelInfoItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementData.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementDataItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementRecord.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementRecordItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementInfo-Action-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementInfo-Action-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementCondList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementCondItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementCondUEidList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementCondUEidItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingCondList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingCondItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingCondItem-Choice.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidPerGP.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidPerGP-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidList-PerGP.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidItem-PerGP.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUeCondPerSubList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUeCondPerSubItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidPerSubList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidPerSubItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEMeasurementReportList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEMeasurementReportItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationHeader.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationMessage.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-RANfunction-Description.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-EventTriggerStyle-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-ReportStyle-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CGI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CoreCPID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceIdentifier.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-NG.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-Xn.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-F1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-E1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-S1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-X2.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-W1.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/Interface-MessageID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceType.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GroupID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/QoSID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunction-Name.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-Format-Type.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-Style-Type.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-Style-Name.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RRC-MessageID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RRCclass-LTE.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RRCclass-NR.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ServingCell-ARFCN.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ServingCell-PCI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-DU.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-UP.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-NG-ENB.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-NG-ENB-DU.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-EN-GNB.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-ENB.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GUMMEI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MME-Group-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MME-Code.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MME-UE-S1AP-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/QCI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SubscriberProfileIDforRFP.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/EN-GNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ENB-UE-X2AP-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ENB-UE-X2AP-ID-Extension.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E-UTRA-ARFCN.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E-UTRA-PCI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E-UTRA-TAC.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NGENB-CU-UE-W1AP-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMFPointer.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMFRegionID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMFSetID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMF-UE-NGAP-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/EUTRACellIdentity.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/EUTRA-CGI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/FiveQI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalGNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalNgENB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GNB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GUAMI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/IndexToRFSP.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NgENB-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRCellIdentity.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NR-CGI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/PLMNIdentity.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/QosFlowIdentifier.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SD.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/S-NSSAI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SST.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NG-RANnodeUEXnAPID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalNGRANNodeID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/FiveGS-TAC.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/FreqBandNrItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GNB-CU-UE-F1AP-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NR-PCI.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NR-ARFCN.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRFrequencyBand-List.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRFrequencyBandItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRFrequencyInfo.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRFrequencyShift7p5khz.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANUEID.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SupportedSULBandList.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SupportedSULFreqBandItem.c \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/EXTERNAL.c + +ASN_MODULE_HDRS= \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/Criticality.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/Presence.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProcedureCode.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TriggeringMessage.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-Container.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-SingleContainer.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-Field.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-ContainerPair.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-FieldPair.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-ContainerList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ProtocolIE-ContainerPairList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-PDU.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InitiatingMessage.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SuccessfulOutcome.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UnsuccessfulOutcome.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMFName.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/Cause.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseE2node.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseMisc.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseProtocol.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseRICrequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseRICservice.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CauseTransport.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CriticalityDiagnostics.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CriticalityDiagnostics-IE-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CriticalityDiagnostics-IE-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfiguration.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigurationAck.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceType.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceE1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceF1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceNG.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceS1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceX2.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceXn.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentInterfaceW1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_ENB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ENB-ID-Choice.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ENGNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-en-gNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-eNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-gNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalE2node-ng-eNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_GlobalENB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_GlobalenGNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalgNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalngeNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalNG-RANNode-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalRIC-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_GNB-CU-UP-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_GNB-DU-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GNB-ID-Choice.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MMEname.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2AP-IEs_NGENB-DU-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/PLMN-Identity.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionDefinition.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionOID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionRevision.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactionDefinition.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactionExecutionOrder.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactionID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactionType.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcallProcessID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolAckRequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolHeader.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolMessage.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolOutcome.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICeventTriggerDefinition.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindicationHeader.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindicationMessage.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindicationSN.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindicationType.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICrequestID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionTime.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubsequentAction.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubsequentActionType.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICqueryHeader.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICqueryDefinition.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICqueryOutcome.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICtimeToWait.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TimeToWait.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TNLinformation.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TNLusage.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TransactionID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TypeOfError.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionRequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDetails.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ToBeSetup-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ToBeSetup-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionResponse.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-Admitted-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-Admitted-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-NotAdmitted-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-NotAdmitted-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDeleteRequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDeleteResponse.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDeleteFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionDeleteRequired.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscription-List-withCause.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscription-withCause-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationRequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ToBeRemovedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ToBeModifiedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ToBeAddedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ToBeAddedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationResponse.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RemovedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RemovedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ModifiedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ModifiedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-AddedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-AddedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationRequired.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RequiredToBeModified-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RequiredToBeModified-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RequiredToBeRemoved-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationConfirm.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ConfirmedForModification-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ConfirmedForModification-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RefusedToBeModified-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RefusedToBeModified-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-ConfirmedForRemoval-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICactions-RefusedToBeRemoved-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICsubscriptionModificationRefuse.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICindication.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolRequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolAcknowledge.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICcontrolFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICQueryRequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICQueryResponse.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICQueryFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ErrorIndication.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2setupRequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2setupResponse.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2setupFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdate.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdate-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdate-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdateRemove-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdateRemove-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdateAcknowledge.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionSetupFailed-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionSetupFailed-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2connectionUpdateFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeConfigurationUpdate.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigAddition-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigAddition-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigUpdate-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigUpdate-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigRemoval-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigRemoval-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeTNLassociationRemoval-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeTNLassociationRemoval-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeConfigurationUpdateAcknowledge.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigAdditionAck-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigAdditionAck-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigUpdateAck-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigUpdateAck-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigRemovalAck-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeComponentConfigRemovalAck-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2nodeConfigurationUpdateFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ResetRequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ResetResponse.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICserviceUpdate.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctions-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunction-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionsID-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionID-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICserviceUpdateAcknowledge.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionsIDcause-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunctionIDcause-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICserviceUpdateFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RICserviceQuery.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2RemovalRequest.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2RemovalResponse.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2RemovalFailure.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TimeStamp.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinIndex.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinRangeValue.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GranularityPeriod.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/LogicalOR.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementType.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementTypeName.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementTypeID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementLabel.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TestCondInfo.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TestCond-Type.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TestCond-Expression.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/TestCond-Value.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinRangeDefinition.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinRangeList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/BinRangeItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/DistMeasurementBinRangeList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/DistMeasurementBinRangeItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementInfoList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementInfoItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/LabelInfoList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/LabelInfoItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementData.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementDataItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementRecord.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementRecordItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementInfo-Action-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementInfo-Action-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementCondList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementCondItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementCondUEidList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MeasurementCondUEidItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingCondList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingCondItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingCondItem-Choice.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidPerGP.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidPerGP-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidList-PerGP.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidItem-PerGP.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUeCondPerSubList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUeCondPerSubItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidPerSubList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MatchingUEidPerSubItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEMeasurementReportList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEMeasurementReportItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-EventTriggerDefinition-Format1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format2.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format3.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format4.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-ActionDefinition-Format5.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationHeader.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationHeader-Format1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationMessage.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format2.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-IndicationMessage-Format3.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-KPM-RANfunction-Description.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-EventTriggerStyle-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-ReportStyle-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CGI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/CoreCPID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceIdentifier.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-NG.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-Xn.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-F1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-E1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-S1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-X2.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceID-W1.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/Interface-MessageID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/InterfaceType.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GroupID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/QoSID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANfunction-Name.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-Format-Type.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-Style-Type.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RIC-Style-Name.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RRC-MessageID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RRCclass-LTE.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RRCclass-NR.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ServingCell-ARFCN.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ServingCell-PCI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-DU.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-GNB-CU-UP.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-NG-ENB.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-NG-ENB-DU.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-EN-GNB.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/UEID-ENB.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_ENB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_GlobalENB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GUMMEI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MME-Group-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MME-Code.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/MME-UE-S1AP-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/QCI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SubscriberProfileIDforRFP.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/EN-GNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ENB-UE-X2AP-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/ENB-UE-X2AP-ID-Extension.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E-UTRA-ARFCN.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E-UTRA-PCI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E-UTRA-TAC.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_GlobalenGNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NGENB-CU-UE-W1AP-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_NGENB-DU-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMFPointer.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMFRegionID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMFSetID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/AMF-UE-NGAP-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/EUTRACellIdentity.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/EUTRA-CGI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/FiveQI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalGNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalNgENB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GNB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GUAMI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/IndexToRFSP.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NgENB-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRCellIdentity.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NR-CGI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/PLMNIdentity.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/QosFlowIdentifier.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SD.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/S-NSSAI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SST.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NG-RANnodeUEXnAPID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GlobalNGRANNodeID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GNB-CU-CP-UE-E1AP-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_GNB-CU-UP-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/FiveGS-TAC.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/FreqBandNrItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/GNB-CU-UE-F1AP-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/E2SM-COMMON-IEs_GNB-DU-ID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NR-PCI.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NR-ARFCN.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRFrequencyBand-List.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRFrequencyBandItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRFrequencyInfo.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/NRFrequencyShift7p5khz.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/RANUEID.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SupportedSULBandList.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/SupportedSULFreqBandItem.h \ + /tmp/workspace/oransim-gerrit/e2sim/asn1c/EXTERNAL.h + +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ANY.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ANY.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OCTET_STRING.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OPEN_TYPE.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OPEN_TYPE.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_CHOICE.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BOOLEAN.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BOOLEAN.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/GraphicString.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/GraphicString.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/INTEGER.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/INTEGER.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NULL.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NULL.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeEnumerated.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeEnumerated.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeInteger.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeInteger.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeReal.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeReal.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/REAL.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OBJECT_IDENTIFIER.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OBJECT_IDENTIFIER.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_codecs_prim.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ObjectDescriptor.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ObjectDescriptor.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/PrintableString.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/PrintableString.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/REAL.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_SEQUENCE_OF.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_SEQUENCE_OF.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_SET_OF.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_SET_OF.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_CHOICE.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_OF.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_OF.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SET_OF.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SET_OF.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_application.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_application.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_ioc.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_system.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_codecs.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_internal.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_internal.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_bit_data.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_bit_data.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OCTET_STRING.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BIT_STRING.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BIT_STRING.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_codecs_prim.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ber_tlv_length.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ber_tlv_length.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ber_tlv_tag.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ber_tlv_tag.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_TYPE.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_TYPE.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constraints.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constraints.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ber_decoder.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/der_encoder.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ber_decoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/der_encoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ANY_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BOOLEAN_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/INTEGER_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NULL_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeInteger_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeReal_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OCTET_STRING_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OPEN_TYPE_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_codecs_prim_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_CHOICE_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_OF_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_ber.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SET_OF_ber.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/xer_support.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/xer_decoder.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/xer_encoder.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/xer_support.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/xer_decoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/xer_encoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ANY_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BIT_STRING_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BOOLEAN_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/INTEGER_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NULL_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeEnumerated_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeInteger_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeReal_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OBJECT_IDENTIFIER_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OCTET_STRING_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OPEN_TYPE_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/REAL_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_codecs_prim_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_CHOICE_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_OF_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_xer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SET_OF_xer.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/per_decoder.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/per_encoder.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/per_support.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/per_opentype.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/per_decoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/per_encoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/per_support.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/per_opentype.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/uper_decoder.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/uper_encoder.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/uper_support.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/uper_opentype.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/uper_decoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/uper_encoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/uper_support.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/uper_opentype.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ANY_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BIT_STRING_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BOOLEAN_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/INTEGER_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NULL_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeEnumerated_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeInteger_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeReal_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OCTET_STRING_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OPEN_TYPE_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/REAL_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_CHOICE_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_OF_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_uper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SET_OF_uper.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/aper_decoder.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/aper_encoder.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/aper_support.h +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/aper_opentype.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/aper_decoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/aper_encoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/aper_support.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/aper_opentype.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ANY_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BOOLEAN_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/INTEGER_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NULL_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeEnumerated_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeInteger_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeReal_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OCTET_STRING_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OPEN_TYPE_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/REAL_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_CHOICE_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_OF_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SET_OF_aper.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BIT_STRING_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BOOLEAN_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/INTEGER_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NULL_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeInteger_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeReal_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OBJECT_IDENTIFIER_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OCTET_STRING_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/REAL_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_CHOICE_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_print.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SET_OF_print.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_random_fill.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/asn_random_fill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BIT_STRING_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BOOLEAN_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/INTEGER_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NULL_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeInteger_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeReal_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OBJECT_IDENTIFIER_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OCTET_STRING_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/REAL_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_CHOICE_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_rfill.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SET_OF_rfill.c +ASN_MODULE_HDRS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/jer_encoder.h +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/jer_encoder.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/ANY_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BIT_STRING_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/BOOLEAN_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/INTEGER_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NULL_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeEnumerated_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeInteger_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/NativeReal_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OBJECT_IDENTIFIER_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/OCTET_STRING_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/REAL_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_CHOICE_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_OF_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SEQUENCE_jer.c +ASN_MODULE_SRCS+=/tmp/workspace/oransim-gerrit/e2sim/asn1c/constr_SET_OF_jer.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)//tmp/workspace/oransim-gerrit/e2sim/asn1c/ +libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) +libasncodec_la_LDFLAGS=-lm diff --git a/e2sim/asn1c/MatchingCondItem-Choice.c b/e2sim/asn1c/MatchingCondItem-Choice.c new file mode 100644 index 0000000..ce5bdd8 --- /dev/null +++ b/e2sim/asn1c/MatchingCondItem-Choice.c @@ -0,0 +1,90 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingCondItem-Choice.h" + +#include "MeasurementLabel.h" +#include "TestCondInfo.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MatchingCondItem_Choice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MatchingCondItem_Choice_1[] = { + { ATF_POINTER, 0, offsetof(struct MatchingCondItem_Choice, choice.measLabel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementLabel, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measLabel" + }, + { ATF_POINTER, 0, offsetof(struct MatchingCondItem_Choice, choice.testCondInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TestCondInfo, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "testCondInfo" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_MatchingCondItem_Choice_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measLabel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* testCondInfo */ +}; +asn_CHOICE_specifics_t asn_SPC_MatchingCondItem_Choice_specs_1 = { + sizeof(struct MatchingCondItem_Choice), + offsetof(struct MatchingCondItem_Choice, _asn_ctx), + offsetof(struct MatchingCondItem_Choice, present), + sizeof(((struct MatchingCondItem_Choice *)0)->present), + asn_MAP_MatchingCondItem_Choice_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingCondItem_Choice = { + "MatchingCondItem-Choice", + "MatchingCondItem-Choice", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MatchingCondItem_Choice_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_MatchingCondItem_Choice_1, + 2, /* Elements count */ + &asn_SPC_MatchingCondItem_Choice_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingCondItem-Choice.h b/e2sim/asn1c/MatchingCondItem-Choice.h new file mode 100644 index 0000000..40a498a --- /dev/null +++ b/e2sim/asn1c/MatchingCondItem-Choice.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingCondItem_Choice_H_ +#define _MatchingCondItem_Choice_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MatchingCondItem_Choice_PR { + MatchingCondItem_Choice_PR_NOTHING, /* No components present */ + MatchingCondItem_Choice_PR_measLabel, + MatchingCondItem_Choice_PR_testCondInfo + /* Extensions may appear below */ + +} MatchingCondItem_Choice_PR; + +/* Forward declarations */ +struct MeasurementLabel; +struct TestCondInfo; + +/* MatchingCondItem-Choice */ +typedef struct MatchingCondItem_Choice { + MatchingCondItem_Choice_PR present; + union MatchingCondItem_Choice_u { + struct MeasurementLabel *measLabel; + struct TestCondInfo *testCondInfo; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingCondItem_Choice_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingCondItem_Choice; +extern asn_CHOICE_specifics_t asn_SPC_MatchingCondItem_Choice_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingCondItem_Choice_1[2]; +extern asn_per_constraints_t asn_PER_type_MatchingCondItem_Choice_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingCondItem_Choice_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingCondItem.c b/e2sim/asn1c/MatchingCondItem.c new file mode 100644 index 0000000..a001c0a --- /dev/null +++ b/e2sim/asn1c/MatchingCondItem.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingCondItem.h" + +asn_TYPE_member_t asn_MBR_MatchingCondItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MatchingCondItem, matchingCondChoice), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MatchingCondItem_Choice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "matchingCondChoice" + }, + { ATF_POINTER, 1, offsetof(struct MatchingCondItem, logicalOR), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LogicalOR, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "logicalOR" + }, +}; +static const int asn_MAP_MatchingCondItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_MatchingCondItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MatchingCondItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* matchingCondChoice */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* logicalOR */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MatchingCondItem_specs_1 = { + sizeof(struct MatchingCondItem), + offsetof(struct MatchingCondItem, _asn_ctx), + asn_MAP_MatchingCondItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_MatchingCondItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingCondItem = { + "MatchingCondItem", + "MatchingCondItem", + &asn_OP_SEQUENCE, + asn_DEF_MatchingCondItem_tags_1, + sizeof(asn_DEF_MatchingCondItem_tags_1) + /sizeof(asn_DEF_MatchingCondItem_tags_1[0]), /* 1 */ + asn_DEF_MatchingCondItem_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingCondItem_tags_1) + /sizeof(asn_DEF_MatchingCondItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MatchingCondItem_1, + 2, /* Elements count */ + &asn_SPC_MatchingCondItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingCondItem.h b/e2sim/asn1c/MatchingCondItem.h new file mode 100644 index 0000000..8d91a01 --- /dev/null +++ b/e2sim/asn1c/MatchingCondItem.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingCondItem_H_ +#define _MatchingCondItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MatchingCondItem-Choice.h" +#include "LogicalOR.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MatchingCondItem */ +typedef struct MatchingCondItem { + MatchingCondItem_Choice_t matchingCondChoice; + LogicalOR_t *logicalOR; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingCondItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingCondItem; +extern asn_SEQUENCE_specifics_t asn_SPC_MatchingCondItem_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingCondItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingCondItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingCondList.c b/e2sim/asn1c/MatchingCondList.c new file mode 100644 index 0000000..3563b8b --- /dev/null +++ b/e2sim/asn1c/MatchingCondList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingCondList.h" + +#include "MatchingCondItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MatchingCondList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 15, 15, 1, 32768 } /* (SIZE(1..32768)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MatchingCondList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MatchingCondItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingCondList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MatchingCondList_specs_1 = { + sizeof(struct MatchingCondList), + offsetof(struct MatchingCondList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingCondList = { + "MatchingCondList", + "MatchingCondList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MatchingCondList_tags_1, + sizeof(asn_DEF_MatchingCondList_tags_1) + /sizeof(asn_DEF_MatchingCondList_tags_1[0]), /* 1 */ + asn_DEF_MatchingCondList_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingCondList_tags_1) + /sizeof(asn_DEF_MatchingCondList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MatchingCondList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MatchingCondList_1, + 1, /* Single element */ + &asn_SPC_MatchingCondList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingCondList.h b/e2sim/asn1c/MatchingCondList.h new file mode 100644 index 0000000..03185b9 --- /dev/null +++ b/e2sim/asn1c/MatchingCondList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingCondList_H_ +#define _MatchingCondList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MatchingCondItem; + +/* MatchingCondList */ +typedef struct MatchingCondList { + A_SEQUENCE_OF(struct MatchingCondItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingCondList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingCondList; +extern asn_SET_OF_specifics_t asn_SPC_MatchingCondList_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingCondList_1[1]; +extern asn_per_constraints_t asn_PER_type_MatchingCondList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingCondList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUEidItem-PerGP.c b/e2sim/asn1c/MatchingUEidItem-PerGP.c new file mode 100644 index 0000000..3006141 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidItem-PerGP.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUEidItem-PerGP.h" + +asn_TYPE_member_t asn_MBR_MatchingUEidItem_PerGP_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidItem_PerGP, ueID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_UEID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ueID" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingUEidItem_PerGP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidItem_PerGP_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_PerGP_specs_1 = { + sizeof(struct MatchingUEidItem_PerGP), + offsetof(struct MatchingUEidItem_PerGP, _asn_ctx), + asn_MAP_MatchingUEidItem_PerGP_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem_PerGP = { + "MatchingUEidItem-PerGP", + "MatchingUEidItem-PerGP", + &asn_OP_SEQUENCE, + asn_DEF_MatchingUEidItem_PerGP_tags_1, + sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1) + /sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1[0]), /* 1 */ + asn_DEF_MatchingUEidItem_PerGP_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1) + /sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MatchingUEidItem_PerGP_1, + 1, /* Elements count */ + &asn_SPC_MatchingUEidItem_PerGP_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUEidItem-PerGP.h b/e2sim/asn1c/MatchingUEidItem-PerGP.h new file mode 100644 index 0000000..461bfd6 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidItem-PerGP.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUEidItem_PerGP_H_ +#define _MatchingUEidItem_PerGP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UEID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MatchingUEidItem-PerGP */ +typedef struct MatchingUEidItem_PerGP { + UEID_t ueID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUEidItem_PerGP_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem_PerGP; +extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_PerGP_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUEidItem_PerGP_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUEidItem_PerGP_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUEidItem.c b/e2sim/asn1c/MatchingUEidItem.c new file mode 100644 index 0000000..ef25469 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidItem.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUEidItem.h" + +asn_TYPE_member_t asn_MBR_MatchingUEidItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidItem, ueID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_UEID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ueID" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingUEidItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_specs_1 = { + sizeof(struct MatchingUEidItem), + offsetof(struct MatchingUEidItem, _asn_ctx), + asn_MAP_MatchingUEidItem_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem = { + "MatchingUEidItem", + "MatchingUEidItem", + &asn_OP_SEQUENCE, + asn_DEF_MatchingUEidItem_tags_1, + sizeof(asn_DEF_MatchingUEidItem_tags_1) + /sizeof(asn_DEF_MatchingUEidItem_tags_1[0]), /* 1 */ + asn_DEF_MatchingUEidItem_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUEidItem_tags_1) + /sizeof(asn_DEF_MatchingUEidItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MatchingUEidItem_1, + 1, /* Elements count */ + &asn_SPC_MatchingUEidItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUEidItem.h b/e2sim/asn1c/MatchingUEidItem.h new file mode 100644 index 0000000..1fe17d8 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidItem.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUEidItem_H_ +#define _MatchingUEidItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UEID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MatchingUEidItem */ +typedef struct MatchingUEidItem { + UEID_t ueID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUEidItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem; +extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUEidItem_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUEidItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUEidList-PerGP.c b/e2sim/asn1c/MatchingUEidList-PerGP.c new file mode 100644 index 0000000..b94c2a4 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidList-PerGP.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUEidList-PerGP.h" + +#include "MatchingUEidItem-PerGP.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MatchingUEidList_PerGP_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MatchingUEidList_PerGP_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MatchingUEidItem_PerGP, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingUEidList_PerGP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_PerGP_specs_1 = { + sizeof(struct MatchingUEidList_PerGP), + offsetof(struct MatchingUEidList_PerGP, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUEidList_PerGP = { + "MatchingUEidList-PerGP", + "MatchingUEidList-PerGP", + &asn_OP_SEQUENCE_OF, + asn_DEF_MatchingUEidList_PerGP_tags_1, + sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1) + /sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1[0]), /* 1 */ + asn_DEF_MatchingUEidList_PerGP_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1) + /sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MatchingUEidList_PerGP_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MatchingUEidList_PerGP_1, + 1, /* Single element */ + &asn_SPC_MatchingUEidList_PerGP_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUEidList-PerGP.h b/e2sim/asn1c/MatchingUEidList-PerGP.h new file mode 100644 index 0000000..c2d6fca --- /dev/null +++ b/e2sim/asn1c/MatchingUEidList-PerGP.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUEidList_PerGP_H_ +#define _MatchingUEidList_PerGP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MatchingUEidItem_PerGP; + +/* MatchingUEidList-PerGP */ +typedef struct MatchingUEidList_PerGP { + A_SEQUENCE_OF(struct MatchingUEidItem_PerGP) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUEidList_PerGP_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidList_PerGP; +extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_PerGP_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUEidList_PerGP_1[1]; +extern asn_per_constraints_t asn_PER_type_MatchingUEidList_PerGP_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUEidList_PerGP_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUEidList.c b/e2sim/asn1c/MatchingUEidList.c new file mode 100644 index 0000000..48582ce --- /dev/null +++ b/e2sim/asn1c/MatchingUEidList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUEidList.h" + +#include "MatchingUEidItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MatchingUEidList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MatchingUEidList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MatchingUEidItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingUEidList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_specs_1 = { + sizeof(struct MatchingUEidList), + offsetof(struct MatchingUEidList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUEidList = { + "MatchingUEidList", + "MatchingUEidList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MatchingUEidList_tags_1, + sizeof(asn_DEF_MatchingUEidList_tags_1) + /sizeof(asn_DEF_MatchingUEidList_tags_1[0]), /* 1 */ + asn_DEF_MatchingUEidList_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUEidList_tags_1) + /sizeof(asn_DEF_MatchingUEidList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MatchingUEidList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MatchingUEidList_1, + 1, /* Single element */ + &asn_SPC_MatchingUEidList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUEidList.h b/e2sim/asn1c/MatchingUEidList.h new file mode 100644 index 0000000..b221a8e --- /dev/null +++ b/e2sim/asn1c/MatchingUEidList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUEidList_H_ +#define _MatchingUEidList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MatchingUEidItem; + +/* MatchingUEidList */ +typedef struct MatchingUEidList { + A_SEQUENCE_OF(struct MatchingUEidItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUEidList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidList; +extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUEidList_1[1]; +extern asn_per_constraints_t asn_PER_type_MatchingUEidList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUEidList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUEidPerGP-Item.c b/e2sim/asn1c/MatchingUEidPerGP-Item.c new file mode 100644 index 0000000..6042b7e --- /dev/null +++ b/e2sim/asn1c/MatchingUEidPerGP-Item.c @@ -0,0 +1,203 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUEidPerGP-Item.h" + +#include "MatchingUEidList-PerGP.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_noUEmatched_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_matchedPerGP_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_noUEmatched_value2enum_3[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_noUEmatched_enum2value_3[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_noUEmatched_specs_3 = { + asn_MAP_noUEmatched_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_noUEmatched_enum2value_3, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_noUEmatched_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_noUEmatched_3 = { + "noUEmatched", + "noUEmatched", + &asn_OP_NativeEnumerated, + asn_DEF_noUEmatched_tags_3, + sizeof(asn_DEF_noUEmatched_tags_3) + /sizeof(asn_DEF_noUEmatched_tags_3[0]) - 1, /* 1 */ + asn_DEF_noUEmatched_tags_3, /* Same as above */ + sizeof(asn_DEF_noUEmatched_tags_3) + /sizeof(asn_DEF_noUEmatched_tags_3[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_noUEmatched_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_noUEmatched_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_matchedPerGP_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, choice.noUEmatched), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_noUEmatched_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "noUEmatched" + }, + { ATF_POINTER, 0, offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, choice.oneOrMoreUEmatched), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MatchingUEidList_PerGP, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "oneOrMoreUEmatched" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_matchedPerGP_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* noUEmatched */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* oneOrMoreUEmatched */ +}; +static asn_CHOICE_specifics_t asn_SPC_matchedPerGP_specs_2 = { + sizeof(struct MatchingUEidPerGP_Item__matchedPerGP), + offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, _asn_ctx), + offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, present), + sizeof(((struct MatchingUEidPerGP_Item__matchedPerGP *)0)->present), + asn_MAP_matchedPerGP_tag2el_2, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_matchedPerGP_2 = { + "matchedPerGP", + "matchedPerGP", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_matchedPerGP_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_matchedPerGP_2, + 2, /* Elements count */ + &asn_SPC_matchedPerGP_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidPerGP_Item, matchedPerGP), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_matchedPerGP_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "matchedPerGP" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingUEidPerGP_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidPerGP_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* matchedPerGP */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerGP_Item_specs_1 = { + sizeof(struct MatchingUEidPerGP_Item), + offsetof(struct MatchingUEidPerGP_Item, _asn_ctx), + asn_MAP_MatchingUEidPerGP_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP_Item = { + "MatchingUEidPerGP-Item", + "MatchingUEidPerGP-Item", + &asn_OP_SEQUENCE, + asn_DEF_MatchingUEidPerGP_Item_tags_1, + sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1) + /sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1[0]), /* 1 */ + asn_DEF_MatchingUEidPerGP_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1) + /sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MatchingUEidPerGP_Item_1, + 1, /* Elements count */ + &asn_SPC_MatchingUEidPerGP_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUEidPerGP-Item.h b/e2sim/asn1c/MatchingUEidPerGP-Item.h new file mode 100644 index 0000000..62943ca --- /dev/null +++ b/e2sim/asn1c/MatchingUEidPerGP-Item.h @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUEidPerGP_Item_H_ +#define _MatchingUEidPerGP_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MatchingUEidPerGP_Item__matchedPerGP_PR { + MatchingUEidPerGP_Item__matchedPerGP_PR_NOTHING, /* No components present */ + MatchingUEidPerGP_Item__matchedPerGP_PR_noUEmatched, + MatchingUEidPerGP_Item__matchedPerGP_PR_oneOrMoreUEmatched + /* Extensions may appear below */ + +} MatchingUEidPerGP_Item__matchedPerGP_PR; +typedef enum MatchingUEidPerGP_Item__matchedPerGP__noUEmatched { + MatchingUEidPerGP_Item__matchedPerGP__noUEmatched_true = 0 + /* + * Enumeration is extensible + */ +} e_MatchingUEidPerGP_Item__matchedPerGP__noUEmatched; + +/* Forward declarations */ +struct MatchingUEidList_PerGP; + +/* MatchingUEidPerGP-Item */ +typedef struct MatchingUEidPerGP_Item { + struct MatchingUEidPerGP_Item__matchedPerGP { + MatchingUEidPerGP_Item__matchedPerGP_PR present; + union MatchingUEidPerGP_Item__matchedPerGP_u { + long noUEmatched; + struct MatchingUEidList_PerGP *oneOrMoreUEmatched; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } matchedPerGP; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUEidPerGP_Item_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_noUEmatched_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerGP_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUEidPerGP_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUEidPerGP.c b/e2sim/asn1c/MatchingUEidPerGP.c new file mode 100644 index 0000000..3a8d2d1 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidPerGP.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUEidPerGP.h" + +#include "MatchingUEidPerGP-Item.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MatchingUEidPerGP_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MatchingUEidPerGP_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingUEidPerGP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerGP_specs_1 = { + sizeof(struct MatchingUEidPerGP), + offsetof(struct MatchingUEidPerGP, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP = { + "MatchingUEidPerGP", + "MatchingUEidPerGP", + &asn_OP_SEQUENCE_OF, + asn_DEF_MatchingUEidPerGP_tags_1, + sizeof(asn_DEF_MatchingUEidPerGP_tags_1) + /sizeof(asn_DEF_MatchingUEidPerGP_tags_1[0]), /* 1 */ + asn_DEF_MatchingUEidPerGP_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUEidPerGP_tags_1) + /sizeof(asn_DEF_MatchingUEidPerGP_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MatchingUEidPerGP_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MatchingUEidPerGP_1, + 1, /* Single element */ + &asn_SPC_MatchingUEidPerGP_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUEidPerGP.h b/e2sim/asn1c/MatchingUEidPerGP.h new file mode 100644 index 0000000..3a1659e --- /dev/null +++ b/e2sim/asn1c/MatchingUEidPerGP.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUEidPerGP_H_ +#define _MatchingUEidPerGP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MatchingUEidPerGP_Item; + +/* MatchingUEidPerGP */ +typedef struct MatchingUEidPerGP { + A_SEQUENCE_OF(struct MatchingUEidPerGP_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUEidPerGP_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP; +extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerGP_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_1[1]; +extern asn_per_constraints_t asn_PER_type_MatchingUEidPerGP_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUEidPerGP_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUEidPerSubItem.c b/e2sim/asn1c/MatchingUEidPerSubItem.c new file mode 100644 index 0000000..33c31b5 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidPerSubItem.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUEidPerSubItem.h" + +asn_TYPE_member_t asn_MBR_MatchingUEidPerSubItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidPerSubItem, ueID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_UEID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ueID" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingUEidPerSubItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidPerSubItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerSubItem_specs_1 = { + sizeof(struct MatchingUEidPerSubItem), + offsetof(struct MatchingUEidPerSubItem, _asn_ctx), + asn_MAP_MatchingUEidPerSubItem_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubItem = { + "MatchingUEidPerSubItem", + "MatchingUEidPerSubItem", + &asn_OP_SEQUENCE, + asn_DEF_MatchingUEidPerSubItem_tags_1, + sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1) + /sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1[0]), /* 1 */ + asn_DEF_MatchingUEidPerSubItem_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1) + /sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MatchingUEidPerSubItem_1, + 1, /* Elements count */ + &asn_SPC_MatchingUEidPerSubItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUEidPerSubItem.h b/e2sim/asn1c/MatchingUEidPerSubItem.h new file mode 100644 index 0000000..0cc23f8 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidPerSubItem.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUEidPerSubItem_H_ +#define _MatchingUEidPerSubItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UEID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MatchingUEidPerSubItem */ +typedef struct MatchingUEidPerSubItem { + UEID_t ueID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUEidPerSubItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubItem; +extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerSubItem_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUEidPerSubItem_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUEidPerSubItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUEidPerSubList.c b/e2sim/asn1c/MatchingUEidPerSubList.c new file mode 100644 index 0000000..fb5d010 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidPerSubList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUEidPerSubList.h" + +#include "MatchingUEidPerSubItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MatchingUEidPerSubList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 2, 65535 } /* (SIZE(2..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MatchingUEidPerSubList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MatchingUEidPerSubItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingUEidPerSubList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerSubList_specs_1 = { + sizeof(struct MatchingUEidPerSubList), + offsetof(struct MatchingUEidPerSubList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubList = { + "MatchingUEidPerSubList", + "MatchingUEidPerSubList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MatchingUEidPerSubList_tags_1, + sizeof(asn_DEF_MatchingUEidPerSubList_tags_1) + /sizeof(asn_DEF_MatchingUEidPerSubList_tags_1[0]), /* 1 */ + asn_DEF_MatchingUEidPerSubList_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUEidPerSubList_tags_1) + /sizeof(asn_DEF_MatchingUEidPerSubList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MatchingUEidPerSubList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MatchingUEidPerSubList_1, + 1, /* Single element */ + &asn_SPC_MatchingUEidPerSubList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUEidPerSubList.h b/e2sim/asn1c/MatchingUEidPerSubList.h new file mode 100644 index 0000000..e2b27a0 --- /dev/null +++ b/e2sim/asn1c/MatchingUEidPerSubList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUEidPerSubList_H_ +#define _MatchingUEidPerSubList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MatchingUEidPerSubItem; + +/* MatchingUEidPerSubList */ +typedef struct MatchingUEidPerSubList { + A_SEQUENCE_OF(struct MatchingUEidPerSubItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUEidPerSubList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubList; +extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerSubList_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUEidPerSubList_1[1]; +extern asn_per_constraints_t asn_PER_type_MatchingUEidPerSubList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUEidPerSubList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUeCondPerSubItem.c b/e2sim/asn1c/MatchingUeCondPerSubItem.c new file mode 100644 index 0000000..d14ab5d --- /dev/null +++ b/e2sim/asn1c/MatchingUeCondPerSubItem.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUeCondPerSubItem.h" + +asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MatchingUeCondPerSubItem, testCondInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TestCondInfo, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "testCondInfo" + }, + { ATF_POINTER, 1, offsetof(struct MatchingUeCondPerSubItem, logicalOR), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LogicalOR, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "logicalOR" + }, +}; +static const int asn_MAP_MatchingUeCondPerSubItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_MatchingUeCondPerSubItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MatchingUeCondPerSubItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* testCondInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* logicalOR */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MatchingUeCondPerSubItem_specs_1 = { + sizeof(struct MatchingUeCondPerSubItem), + offsetof(struct MatchingUeCondPerSubItem, _asn_ctx), + asn_MAP_MatchingUeCondPerSubItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_MatchingUeCondPerSubItem_oms_1, /* Optional members */ + 0, 1, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubItem = { + "MatchingUeCondPerSubItem", + "MatchingUeCondPerSubItem", + &asn_OP_SEQUENCE, + asn_DEF_MatchingUeCondPerSubItem_tags_1, + sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1) + /sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1[0]), /* 1 */ + asn_DEF_MatchingUeCondPerSubItem_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1) + /sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MatchingUeCondPerSubItem_1, + 2, /* Elements count */ + &asn_SPC_MatchingUeCondPerSubItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUeCondPerSubItem.h b/e2sim/asn1c/MatchingUeCondPerSubItem.h new file mode 100644 index 0000000..fed1469 --- /dev/null +++ b/e2sim/asn1c/MatchingUeCondPerSubItem.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUeCondPerSubItem_H_ +#define _MatchingUeCondPerSubItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TestCondInfo.h" +#include "LogicalOR.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MatchingUeCondPerSubItem */ +typedef struct MatchingUeCondPerSubItem { + TestCondInfo_t testCondInfo; + /* + * This type is extensible, + * possible extensions are below. + */ + LogicalOR_t *logicalOR; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUeCondPerSubItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubItem; +extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUeCondPerSubItem_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUeCondPerSubItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MatchingUeCondPerSubList.c b/e2sim/asn1c/MatchingUeCondPerSubList.c new file mode 100644 index 0000000..3986511 --- /dev/null +++ b/e2sim/asn1c/MatchingUeCondPerSubList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MatchingUeCondPerSubList.h" + +#include "MatchingUeCondPerSubItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MatchingUeCondPerSubList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 15, 15, 1, 32768 } /* (SIZE(1..32768)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MatchingUeCondPerSubItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MatchingUeCondPerSubList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MatchingUeCondPerSubList_specs_1 = { + sizeof(struct MatchingUeCondPerSubList), + offsetof(struct MatchingUeCondPerSubList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubList = { + "MatchingUeCondPerSubList", + "MatchingUeCondPerSubList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MatchingUeCondPerSubList_tags_1, + sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1) + /sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1[0]), /* 1 */ + asn_DEF_MatchingUeCondPerSubList_tags_1, /* Same as above */ + sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1) + /sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MatchingUeCondPerSubList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MatchingUeCondPerSubList_1, + 1, /* Single element */ + &asn_SPC_MatchingUeCondPerSubList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MatchingUeCondPerSubList.h b/e2sim/asn1c/MatchingUeCondPerSubList.h new file mode 100644 index 0000000..b3b7e81 --- /dev/null +++ b/e2sim/asn1c/MatchingUeCondPerSubList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MatchingUeCondPerSubList_H_ +#define _MatchingUeCondPerSubList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MatchingUeCondPerSubItem; + +/* MatchingUeCondPerSubList */ +typedef struct MatchingUeCondPerSubList { + A_SEQUENCE_OF(struct MatchingUeCondPerSubItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MatchingUeCondPerSubList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubList; +extern asn_SET_OF_specifics_t asn_SPC_MatchingUeCondPerSubList_specs_1; +extern asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubList_1[1]; +extern asn_per_constraints_t asn_PER_type_MatchingUeCondPerSubList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatchingUeCondPerSubList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementCondItem.c b/e2sim/asn1c/MeasurementCondItem.c new file mode 100644 index 0000000..b9c6ed3 --- /dev/null +++ b/e2sim/asn1c/MeasurementCondItem.c @@ -0,0 +1,105 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementCondItem.h" + +#include "BinRangeDefinition.h" +asn_TYPE_member_t asn_MBR_MeasurementCondItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondItem, measType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MeasurementType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measType" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondItem, matchingCond), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MatchingCondList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "matchingCond" + }, + { ATF_POINTER, 1, offsetof(struct MeasurementCondItem, binRangeDef), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BinRangeDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "binRangeDef" + }, +}; +static const int asn_MAP_MeasurementCondItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_MeasurementCondItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementCondItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* matchingCond */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* binRangeDef */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondItem_specs_1 = { + sizeof(struct MeasurementCondItem), + offsetof(struct MeasurementCondItem, _asn_ctx), + asn_MAP_MeasurementCondItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_MeasurementCondItem_oms_1, /* Optional members */ + 0, 1, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementCondItem = { + "MeasurementCondItem", + "MeasurementCondItem", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementCondItem_tags_1, + sizeof(asn_DEF_MeasurementCondItem_tags_1) + /sizeof(asn_DEF_MeasurementCondItem_tags_1[0]), /* 1 */ + asn_DEF_MeasurementCondItem_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementCondItem_tags_1) + /sizeof(asn_DEF_MeasurementCondItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MeasurementCondItem_1, + 3, /* Elements count */ + &asn_SPC_MeasurementCondItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementCondItem.h b/e2sim/asn1c/MeasurementCondItem.h new file mode 100644 index 0000000..23b7fde --- /dev/null +++ b/e2sim/asn1c/MeasurementCondItem.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementCondItem_H_ +#define _MeasurementCondItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementType.h" +#include "MatchingCondList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BinRangeDefinition; + +/* MeasurementCondItem */ +typedef struct MeasurementCondItem { + MeasurementType_t measType; + MatchingCondList_t matchingCond; + /* + * This type is extensible, + * possible extensions are below. + */ + struct BinRangeDefinition *binRangeDef; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementCondItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondItem; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondItem_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementCondItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementCondItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementCondList.c b/e2sim/asn1c/MeasurementCondList.c new file mode 100644 index 0000000..8429fb5 --- /dev/null +++ b/e2sim/asn1c/MeasurementCondList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementCondList.h" + +#include "MeasurementCondItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementCondList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MeasurementCondList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementCondItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementCondList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MeasurementCondList_specs_1 = { + sizeof(struct MeasurementCondList), + offsetof(struct MeasurementCondList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementCondList = { + "MeasurementCondList", + "MeasurementCondList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementCondList_tags_1, + sizeof(asn_DEF_MeasurementCondList_tags_1) + /sizeof(asn_DEF_MeasurementCondList_tags_1[0]), /* 1 */ + asn_DEF_MeasurementCondList_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementCondList_tags_1) + /sizeof(asn_DEF_MeasurementCondList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementCondList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MeasurementCondList_1, + 1, /* Single element */ + &asn_SPC_MeasurementCondList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementCondList.h b/e2sim/asn1c/MeasurementCondList.h new file mode 100644 index 0000000..9d0f331 --- /dev/null +++ b/e2sim/asn1c/MeasurementCondList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementCondList_H_ +#define _MeasurementCondList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MeasurementCondItem; + +/* MeasurementCondList */ +typedef struct MeasurementCondList { + A_SEQUENCE_OF(struct MeasurementCondItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementCondList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondList; +extern asn_SET_OF_specifics_t asn_SPC_MeasurementCondList_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementCondList_1[1]; +extern asn_per_constraints_t asn_PER_type_MeasurementCondList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementCondList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementCondUEidItem.c b/e2sim/asn1c/MeasurementCondUEidItem.c new file mode 100644 index 0000000..fd382dc --- /dev/null +++ b/e2sim/asn1c/MeasurementCondUEidItem.c @@ -0,0 +1,124 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementCondUEidItem.h" + +#include "MatchingUEidList.h" +#include "MatchingUEidPerGP.h" +asn_TYPE_member_t asn_MBR_MeasurementCondUEidItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondUEidItem, measType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MeasurementType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measType" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondUEidItem, matchingCond), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MatchingCondList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "matchingCond" + }, + { ATF_POINTER, 2, offsetof(struct MeasurementCondUEidItem, matchingUEidList), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MatchingUEidList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "matchingUEidList" + }, + { ATF_POINTER, 1, offsetof(struct MeasurementCondUEidItem, matchingUEidPerGP), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MatchingUEidPerGP, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "matchingUEidPerGP" + }, +}; +static const int asn_MAP_MeasurementCondUEidItem_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_MeasurementCondUEidItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementCondUEidItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* matchingCond */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* matchingUEidList */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* matchingUEidPerGP */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondUEidItem_specs_1 = { + sizeof(struct MeasurementCondUEidItem), + offsetof(struct MeasurementCondUEidItem, _asn_ctx), + asn_MAP_MeasurementCondUEidItem_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_MeasurementCondUEidItem_oms_1, /* Optional members */ + 1, 1, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidItem = { + "MeasurementCondUEidItem", + "MeasurementCondUEidItem", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementCondUEidItem_tags_1, + sizeof(asn_DEF_MeasurementCondUEidItem_tags_1) + /sizeof(asn_DEF_MeasurementCondUEidItem_tags_1[0]), /* 1 */ + asn_DEF_MeasurementCondUEidItem_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementCondUEidItem_tags_1) + /sizeof(asn_DEF_MeasurementCondUEidItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MeasurementCondUEidItem_1, + 4, /* Elements count */ + &asn_SPC_MeasurementCondUEidItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementCondUEidItem.h b/e2sim/asn1c/MeasurementCondUEidItem.h new file mode 100644 index 0000000..1bf7102 --- /dev/null +++ b/e2sim/asn1c/MeasurementCondUEidItem.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementCondUEidItem_H_ +#define _MeasurementCondUEidItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementType.h" +#include "MatchingCondList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MatchingUEidList; +struct MatchingUEidPerGP; + +/* MeasurementCondUEidItem */ +typedef struct MeasurementCondUEidItem { + MeasurementType_t measType; + MatchingCondList_t matchingCond; + struct MatchingUEidList *matchingUEidList; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + struct MatchingUEidPerGP *matchingUEidPerGP; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementCondUEidItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidItem; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondUEidItem_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementCondUEidItem_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementCondUEidItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementCondUEidList.c b/e2sim/asn1c/MeasurementCondUEidList.c new file mode 100644 index 0000000..ea10dc9 --- /dev/null +++ b/e2sim/asn1c/MeasurementCondUEidList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementCondUEidList.h" + +#include "MeasurementCondUEidItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementCondUEidList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MeasurementCondUEidList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementCondUEidItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementCondUEidList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MeasurementCondUEidList_specs_1 = { + sizeof(struct MeasurementCondUEidList), + offsetof(struct MeasurementCondUEidList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidList = { + "MeasurementCondUEidList", + "MeasurementCondUEidList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementCondUEidList_tags_1, + sizeof(asn_DEF_MeasurementCondUEidList_tags_1) + /sizeof(asn_DEF_MeasurementCondUEidList_tags_1[0]), /* 1 */ + asn_DEF_MeasurementCondUEidList_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementCondUEidList_tags_1) + /sizeof(asn_DEF_MeasurementCondUEidList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementCondUEidList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MeasurementCondUEidList_1, + 1, /* Single element */ + &asn_SPC_MeasurementCondUEidList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementCondUEidList.h b/e2sim/asn1c/MeasurementCondUEidList.h new file mode 100644 index 0000000..c83548e --- /dev/null +++ b/e2sim/asn1c/MeasurementCondUEidList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementCondUEidList_H_ +#define _MeasurementCondUEidList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MeasurementCondUEidItem; + +/* MeasurementCondUEidList */ +typedef struct MeasurementCondUEidList { + A_SEQUENCE_OF(struct MeasurementCondUEidItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementCondUEidList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidList; +extern asn_SET_OF_specifics_t asn_SPC_MeasurementCondUEidList_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementCondUEidList_1[1]; +extern asn_per_constraints_t asn_PER_type_MeasurementCondUEidList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementCondUEidList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementData.c b/e2sim/asn1c/MeasurementData.c new file mode 100644 index 0000000..6ec30c5 --- /dev/null +++ b/e2sim/asn1c/MeasurementData.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementData.h" + +#include "MeasurementDataItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementData_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MeasurementData_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementDataItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MeasurementData_specs_1 = { + sizeof(struct MeasurementData), + offsetof(struct MeasurementData, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementData = { + "MeasurementData", + "MeasurementData", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementData_tags_1, + sizeof(asn_DEF_MeasurementData_tags_1) + /sizeof(asn_DEF_MeasurementData_tags_1[0]), /* 1 */ + asn_DEF_MeasurementData_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementData_tags_1) + /sizeof(asn_DEF_MeasurementData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementData_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MeasurementData_1, + 1, /* Single element */ + &asn_SPC_MeasurementData_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementData.h b/e2sim/asn1c/MeasurementData.h new file mode 100644 index 0000000..fc0c1eb --- /dev/null +++ b/e2sim/asn1c/MeasurementData.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementData_H_ +#define _MeasurementData_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MeasurementDataItem; + +/* MeasurementData */ +typedef struct MeasurementData { + A_SEQUENCE_OF(struct MeasurementDataItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementData; +extern asn_SET_OF_specifics_t asn_SPC_MeasurementData_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementData_1[1]; +extern asn_per_constraints_t asn_PER_type_MeasurementData_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementData_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementDataItem.c b/e2sim/asn1c/MeasurementDataItem.c new file mode 100644 index 0000000..77af400 --- /dev/null +++ b/e2sim/asn1c/MeasurementDataItem.c @@ -0,0 +1,142 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementDataItem.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_incompleteFlag_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_incompleteFlag_value2enum_3[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_incompleteFlag_enum2value_3[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_incompleteFlag_specs_3 = { + asn_MAP_incompleteFlag_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_incompleteFlag_enum2value_3, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_incompleteFlag_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_incompleteFlag_3 = { + "incompleteFlag", + "incompleteFlag", + &asn_OP_NativeEnumerated, + asn_DEF_incompleteFlag_tags_3, + sizeof(asn_DEF_incompleteFlag_tags_3) + /sizeof(asn_DEF_incompleteFlag_tags_3[0]) - 1, /* 1 */ + asn_DEF_incompleteFlag_tags_3, /* Same as above */ + sizeof(asn_DEF_incompleteFlag_tags_3) + /sizeof(asn_DEF_incompleteFlag_tags_3[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_incompleteFlag_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_incompleteFlag_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementDataItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementDataItem, measRecord), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementRecord, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measRecord" + }, + { ATF_POINTER, 1, offsetof(struct MeasurementDataItem, incompleteFlag), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_incompleteFlag_3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "incompleteFlag" + }, +}; +static const int asn_MAP_MeasurementDataItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_MeasurementDataItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementDataItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measRecord */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* incompleteFlag */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementDataItem_specs_1 = { + sizeof(struct MeasurementDataItem), + offsetof(struct MeasurementDataItem, _asn_ctx), + asn_MAP_MeasurementDataItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_MeasurementDataItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementDataItem = { + "MeasurementDataItem", + "MeasurementDataItem", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementDataItem_tags_1, + sizeof(asn_DEF_MeasurementDataItem_tags_1) + /sizeof(asn_DEF_MeasurementDataItem_tags_1[0]), /* 1 */ + asn_DEF_MeasurementDataItem_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementDataItem_tags_1) + /sizeof(asn_DEF_MeasurementDataItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MeasurementDataItem_1, + 2, /* Elements count */ + &asn_SPC_MeasurementDataItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementDataItem.h b/e2sim/asn1c/MeasurementDataItem.h new file mode 100644 index 0000000..aa33dcb --- /dev/null +++ b/e2sim/asn1c/MeasurementDataItem.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementDataItem_H_ +#define _MeasurementDataItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementRecord.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MeasurementDataItem__incompleteFlag { + MeasurementDataItem__incompleteFlag_true = 0 + /* + * Enumeration is extensible + */ +} e_MeasurementDataItem__incompleteFlag; + +/* MeasurementDataItem */ +typedef struct MeasurementDataItem { + MeasurementRecord_t measRecord; + long *incompleteFlag; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementDataItem_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_incompleteFlag_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementDataItem; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementDataItem_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementDataItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementDataItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementInfo-Action-Item.c b/e2sim/asn1c/MeasurementInfo-Action-Item.c new file mode 100644 index 0000000..9988e1c --- /dev/null +++ b/e2sim/asn1c/MeasurementInfo-Action-Item.c @@ -0,0 +1,105 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementInfo-Action-Item.h" + +#include "BinRangeDefinition.h" +asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInfo_Action_Item, measName), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementTypeName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measName" + }, + { ATF_POINTER, 2, offsetof(struct MeasurementInfo_Action_Item, measID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementTypeID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measID" + }, + { ATF_POINTER, 1, offsetof(struct MeasurementInfo_Action_Item, binRangeDef), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BinRangeDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "binRangeDef" + }, +}; +static const int asn_MAP_MeasurementInfo_Action_Item_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_MeasurementInfo_Action_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementInfo_Action_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measName */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* binRangeDef */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfo_Action_Item_specs_1 = { + sizeof(struct MeasurementInfo_Action_Item), + offsetof(struct MeasurementInfo_Action_Item, _asn_ctx), + asn_MAP_MeasurementInfo_Action_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_MeasurementInfo_Action_Item_oms_1, /* Optional members */ + 1, 1, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_Item = { + "MeasurementInfo-Action-Item", + "MeasurementInfo-Action-Item", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementInfo_Action_Item_tags_1, + sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1) + /sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1[0]), /* 1 */ + asn_DEF_MeasurementInfo_Action_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1) + /sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MeasurementInfo_Action_Item_1, + 3, /* Elements count */ + &asn_SPC_MeasurementInfo_Action_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementInfo-Action-Item.h b/e2sim/asn1c/MeasurementInfo-Action-Item.h new file mode 100644 index 0000000..ea844e8 --- /dev/null +++ b/e2sim/asn1c/MeasurementInfo-Action-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementInfo_Action_Item_H_ +#define _MeasurementInfo_Action_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementTypeName.h" +#include "MeasurementTypeID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BinRangeDefinition; + +/* MeasurementInfo-Action-Item */ +typedef struct MeasurementInfo_Action_Item { + MeasurementTypeName_t measName; + MeasurementTypeID_t *measID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + struct BinRangeDefinition *binRangeDef; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInfo_Action_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfo_Action_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementInfo_Action_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementInfo-Action-List.c b/e2sim/asn1c/MeasurementInfo-Action-List.c new file mode 100644 index 0000000..e0f26a4 --- /dev/null +++ b/e2sim/asn1c/MeasurementInfo-Action-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementInfo-Action-List.h" + +#include "MeasurementInfo-Action-Item.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementInfo_Action_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementInfo_Action_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementInfo_Action_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MeasurementInfo_Action_List_specs_1 = { + sizeof(struct MeasurementInfo_Action_List), + offsetof(struct MeasurementInfo_Action_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_List = { + "MeasurementInfo-Action-List", + "MeasurementInfo-Action-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementInfo_Action_List_tags_1, + sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1) + /sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1[0]), /* 1 */ + asn_DEF_MeasurementInfo_Action_List_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1) + /sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementInfo_Action_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MeasurementInfo_Action_List_1, + 1, /* Single element */ + &asn_SPC_MeasurementInfo_Action_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementInfo-Action-List.h b/e2sim/asn1c/MeasurementInfo-Action-List.h new file mode 100644 index 0000000..a0dda18 --- /dev/null +++ b/e2sim/asn1c/MeasurementInfo-Action-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementInfo_Action_List_H_ +#define _MeasurementInfo_Action_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MeasurementInfo_Action_Item; + +/* MeasurementInfo-Action-List */ +typedef struct MeasurementInfo_Action_List { + A_SEQUENCE_OF(struct MeasurementInfo_Action_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInfo_Action_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_List; +extern asn_SET_OF_specifics_t asn_SPC_MeasurementInfo_Action_List_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_List_1[1]; +extern asn_per_constraints_t asn_PER_type_MeasurementInfo_Action_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementInfo_Action_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementInfoItem.c b/e2sim/asn1c/MeasurementInfoItem.c new file mode 100644 index 0000000..85b73be --- /dev/null +++ b/e2sim/asn1c/MeasurementInfoItem.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementInfoItem.h" + +asn_TYPE_member_t asn_MBR_MeasurementInfoItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInfoItem, measType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MeasurementType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measType" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInfoItem, labelInfoList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LabelInfoList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "labelInfoList" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementInfoItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementInfoItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* labelInfoList */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfoItem_specs_1 = { + sizeof(struct MeasurementInfoItem), + offsetof(struct MeasurementInfoItem, _asn_ctx), + asn_MAP_MeasurementInfoItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInfoItem = { + "MeasurementInfoItem", + "MeasurementInfoItem", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementInfoItem_tags_1, + sizeof(asn_DEF_MeasurementInfoItem_tags_1) + /sizeof(asn_DEF_MeasurementInfoItem_tags_1[0]), /* 1 */ + asn_DEF_MeasurementInfoItem_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementInfoItem_tags_1) + /sizeof(asn_DEF_MeasurementInfoItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MeasurementInfoItem_1, + 2, /* Elements count */ + &asn_SPC_MeasurementInfoItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementInfoItem.h b/e2sim/asn1c/MeasurementInfoItem.h new file mode 100644 index 0000000..3d1c515 --- /dev/null +++ b/e2sim/asn1c/MeasurementInfoItem.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementInfoItem_H_ +#define _MeasurementInfoItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementType.h" +#include "LabelInfoList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeasurementInfoItem */ +typedef struct MeasurementInfoItem { + MeasurementType_t measType; + LabelInfoList_t labelInfoList; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInfoItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfoItem; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfoItem_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementInfoItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementInfoItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementInfoList.c b/e2sim/asn1c/MeasurementInfoList.c new file mode 100644 index 0000000..daa9119 --- /dev/null +++ b/e2sim/asn1c/MeasurementInfoList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementInfoList.h" + +#include "MeasurementInfoItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementInfoList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MeasurementInfoList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementInfoItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementInfoList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MeasurementInfoList_specs_1 = { + sizeof(struct MeasurementInfoList), + offsetof(struct MeasurementInfoList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInfoList = { + "MeasurementInfoList", + "MeasurementInfoList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementInfoList_tags_1, + sizeof(asn_DEF_MeasurementInfoList_tags_1) + /sizeof(asn_DEF_MeasurementInfoList_tags_1[0]), /* 1 */ + asn_DEF_MeasurementInfoList_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementInfoList_tags_1) + /sizeof(asn_DEF_MeasurementInfoList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementInfoList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MeasurementInfoList_1, + 1, /* Single element */ + &asn_SPC_MeasurementInfoList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementInfoList.h b/e2sim/asn1c/MeasurementInfoList.h new file mode 100644 index 0000000..c36a534 --- /dev/null +++ b/e2sim/asn1c/MeasurementInfoList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementInfoList_H_ +#define _MeasurementInfoList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MeasurementInfoItem; + +/* MeasurementInfoList */ +typedef struct MeasurementInfoList { + A_SEQUENCE_OF(struct MeasurementInfoItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInfoList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfoList; +extern asn_SET_OF_specifics_t asn_SPC_MeasurementInfoList_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementInfoList_1[1]; +extern asn_per_constraints_t asn_PER_type_MeasurementInfoList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementInfoList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementLabel.c b/e2sim/asn1c/MeasurementLabel.c new file mode 100644 index 0000000..dc47d80 --- /dev/null +++ b/e2sim/asn1c/MeasurementLabel.c @@ -0,0 +1,1197 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementLabel.h" + +#include "S-NSSAI.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_aRPmax_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 15L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_aRPmin_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 15L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_bitrateRange_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_layerMU_MIMO_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_distBinX_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_distBinY_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_distBinZ_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ssbIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_nonGoB_BFmode_Index_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_mIMO_mode_Index_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 2L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_noLabel_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_sUM_constr_16 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_preLabelOverride_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_startEndInd_constr_25 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_min_constr_29 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_max_constr_32 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_avg_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_aRPmax_constr_12 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 15 } /* (1..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_aRPmin_constr_13 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 15 } /* (1..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_bitrateRange_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_layerMU_MIMO_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_distBinX_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_distBinY_constr_20 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_distBinZ_constr_21 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ssbIndex_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_nonGoB_BFmode_Index_constr_40 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_mIMO_mode_Index_constr_41 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 1, 2 } /* (1..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_noLabel_value2enum_2[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_noLabel_enum2value_2[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_noLabel_specs_2 = { + asn_MAP_noLabel_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_noLabel_enum2value_2, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_noLabel_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_noLabel_2 = { + "noLabel", + "noLabel", + &asn_OP_NativeEnumerated, + asn_DEF_noLabel_tags_2, + sizeof(asn_DEF_noLabel_tags_2) + /sizeof(asn_DEF_noLabel_tags_2[0]) - 1, /* 1 */ + asn_DEF_noLabel_tags_2, /* Same as above */ + sizeof(asn_DEF_noLabel_tags_2) + /sizeof(asn_DEF_noLabel_tags_2[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_noLabel_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_noLabel_specs_2 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_sUM_value2enum_16[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_sUM_enum2value_16[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_sUM_specs_16 = { + asn_MAP_sUM_value2enum_16, /* "tag" => N; sorted by tag */ + asn_MAP_sUM_enum2value_16, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_sUM_tags_16[] = { + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_sUM_16 = { + "sUM", + "sUM", + &asn_OP_NativeEnumerated, + asn_DEF_sUM_tags_16, + sizeof(asn_DEF_sUM_tags_16) + /sizeof(asn_DEF_sUM_tags_16[0]) - 1, /* 1 */ + asn_DEF_sUM_tags_16, /* Same as above */ + sizeof(asn_DEF_sUM_tags_16) + /sizeof(asn_DEF_sUM_tags_16[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_sUM_constr_16, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_sUM_specs_16 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_preLabelOverride_value2enum_22[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_preLabelOverride_enum2value_22[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_preLabelOverride_specs_22 = { + asn_MAP_preLabelOverride_value2enum_22, /* "tag" => N; sorted by tag */ + asn_MAP_preLabelOverride_enum2value_22, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_preLabelOverride_tags_22[] = { + (ASN_TAG_CLASS_CONTEXT | (16 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_preLabelOverride_22 = { + "preLabelOverride", + "preLabelOverride", + &asn_OP_NativeEnumerated, + asn_DEF_preLabelOverride_tags_22, + sizeof(asn_DEF_preLabelOverride_tags_22) + /sizeof(asn_DEF_preLabelOverride_tags_22[0]) - 1, /* 1 */ + asn_DEF_preLabelOverride_tags_22, /* Same as above */ + sizeof(asn_DEF_preLabelOverride_tags_22) + /sizeof(asn_DEF_preLabelOverride_tags_22[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_preLabelOverride_constr_22, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_preLabelOverride_specs_22 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_startEndInd_value2enum_25[] = { + { 0, 5, "start" }, + { 1, 3, "end" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_startEndInd_enum2value_25[] = { + 1, /* end(1) */ + 0 /* start(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_startEndInd_specs_25 = { + asn_MAP_startEndInd_value2enum_25, /* "tag" => N; sorted by tag */ + asn_MAP_startEndInd_enum2value_25, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_startEndInd_tags_25[] = { + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_startEndInd_25 = { + "startEndInd", + "startEndInd", + &asn_OP_NativeEnumerated, + asn_DEF_startEndInd_tags_25, + sizeof(asn_DEF_startEndInd_tags_25) + /sizeof(asn_DEF_startEndInd_tags_25[0]) - 1, /* 1 */ + asn_DEF_startEndInd_tags_25, /* Same as above */ + sizeof(asn_DEF_startEndInd_tags_25) + /sizeof(asn_DEF_startEndInd_tags_25[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_startEndInd_constr_25, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_startEndInd_specs_25 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_min_value2enum_29[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_min_enum2value_29[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_min_specs_29 = { + asn_MAP_min_value2enum_29, /* "tag" => N; sorted by tag */ + asn_MAP_min_enum2value_29, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_min_tags_29[] = { + (ASN_TAG_CLASS_CONTEXT | (18 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_min_29 = { + "min", + "min", + &asn_OP_NativeEnumerated, + asn_DEF_min_tags_29, + sizeof(asn_DEF_min_tags_29) + /sizeof(asn_DEF_min_tags_29[0]) - 1, /* 1 */ + asn_DEF_min_tags_29, /* Same as above */ + sizeof(asn_DEF_min_tags_29) + /sizeof(asn_DEF_min_tags_29[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_min_constr_29, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_min_specs_29 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_max_value2enum_32[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_max_enum2value_32[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_max_specs_32 = { + asn_MAP_max_value2enum_32, /* "tag" => N; sorted by tag */ + asn_MAP_max_enum2value_32, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_max_tags_32[] = { + (ASN_TAG_CLASS_CONTEXT | (19 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_max_32 = { + "max", + "max", + &asn_OP_NativeEnumerated, + asn_DEF_max_tags_32, + sizeof(asn_DEF_max_tags_32) + /sizeof(asn_DEF_max_tags_32[0]) - 1, /* 1 */ + asn_DEF_max_tags_32, /* Same as above */ + sizeof(asn_DEF_max_tags_32) + /sizeof(asn_DEF_max_tags_32[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_max_constr_32, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_max_specs_32 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_avg_value2enum_35[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_avg_enum2value_35[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_avg_specs_35 = { + asn_MAP_avg_value2enum_35, /* "tag" => N; sorted by tag */ + asn_MAP_avg_enum2value_35, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_avg_tags_35[] = { + (ASN_TAG_CLASS_CONTEXT | (20 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_avg_35 = { + "avg", + "avg", + &asn_OP_NativeEnumerated, + asn_DEF_avg_tags_35, + sizeof(asn_DEF_avg_tags_35) + /sizeof(asn_DEF_avg_tags_35[0]) - 1, /* 1 */ + asn_DEF_avg_tags_35, /* Same as above */ + sizeof(asn_DEF_avg_tags_35) + /sizeof(asn_DEF_avg_tags_35[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_avg_constr_35, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_avg_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementLabel_1[] = { + { ATF_POINTER, 24, offsetof(struct MeasurementLabel, noLabel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_noLabel_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "noLabel" + }, + { ATF_POINTER, 23, offsetof(struct MeasurementLabel, plmnID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "plmnID" + }, + { ATF_POINTER, 22, offsetof(struct MeasurementLabel, sliceID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S_NSSAI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sliceID" + }, + { ATF_POINTER, 21, offsetof(struct MeasurementLabel, fiveQI), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FiveQI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "fiveQI" + }, + { ATF_POINTER, 20, offsetof(struct MeasurementLabel, qFI), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_QosFlowIdentifier, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "qFI" + }, + { ATF_POINTER, 19, offsetof(struct MeasurementLabel, qCI), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_QCI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "qCI" + }, + { ATF_POINTER, 18, offsetof(struct MeasurementLabel, qCImax), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_QCI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "qCImax" + }, + { ATF_POINTER, 17, offsetof(struct MeasurementLabel, qCImin), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_QCI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "qCImin" + }, + { ATF_POINTER, 16, offsetof(struct MeasurementLabel, aRPmax), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_aRPmax_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_aRPmax_constraint_1 + }, + 0, 0, /* No default value */ + "aRPmax" + }, + { ATF_POINTER, 15, offsetof(struct MeasurementLabel, aRPmin), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_aRPmin_constr_13, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_aRPmin_constraint_1 + }, + 0, 0, /* No default value */ + "aRPmin" + }, + { ATF_POINTER, 14, offsetof(struct MeasurementLabel, bitrateRange), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_bitrateRange_constr_14, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_bitrateRange_constraint_1 + }, + 0, 0, /* No default value */ + "bitrateRange" + }, + { ATF_POINTER, 13, offsetof(struct MeasurementLabel, layerMU_MIMO), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_layerMU_MIMO_constr_15, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_layerMU_MIMO_constraint_1 + }, + 0, 0, /* No default value */ + "layerMU-MIMO" + }, + { ATF_POINTER, 12, offsetof(struct MeasurementLabel, sUM), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_sUM_16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sUM" + }, + { ATF_POINTER, 11, offsetof(struct MeasurementLabel, distBinX), + (ASN_TAG_CLASS_CONTEXT | (13 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_distBinX_constr_19, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_distBinX_constraint_1 + }, + 0, 0, /* No default value */ + "distBinX" + }, + { ATF_POINTER, 10, offsetof(struct MeasurementLabel, distBinY), + (ASN_TAG_CLASS_CONTEXT | (14 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_distBinY_constr_20, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_distBinY_constraint_1 + }, + 0, 0, /* No default value */ + "distBinY" + }, + { ATF_POINTER, 9, offsetof(struct MeasurementLabel, distBinZ), + (ASN_TAG_CLASS_CONTEXT | (15 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_distBinZ_constr_21, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_distBinZ_constraint_1 + }, + 0, 0, /* No default value */ + "distBinZ" + }, + { ATF_POINTER, 8, offsetof(struct MeasurementLabel, preLabelOverride), + (ASN_TAG_CLASS_CONTEXT | (16 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_preLabelOverride_22, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "preLabelOverride" + }, + { ATF_POINTER, 7, offsetof(struct MeasurementLabel, startEndInd), + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_startEndInd_25, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "startEndInd" + }, + { ATF_POINTER, 6, offsetof(struct MeasurementLabel, min), + (ASN_TAG_CLASS_CONTEXT | (18 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_min_29, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "min" + }, + { ATF_POINTER, 5, offsetof(struct MeasurementLabel, max), + (ASN_TAG_CLASS_CONTEXT | (19 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_max_32, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "max" + }, + { ATF_POINTER, 4, offsetof(struct MeasurementLabel, avg), + (ASN_TAG_CLASS_CONTEXT | (20 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_avg_35, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "avg" + }, + { ATF_POINTER, 3, offsetof(struct MeasurementLabel, ssbIndex), + (ASN_TAG_CLASS_CONTEXT | (21 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ssbIndex_constr_39, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ssbIndex_constraint_1 + }, + 0, 0, /* No default value */ + "ssbIndex" + }, + { ATF_POINTER, 2, offsetof(struct MeasurementLabel, nonGoB_BFmode_Index), + (ASN_TAG_CLASS_CONTEXT | (22 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_nonGoB_BFmode_Index_constr_40, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_nonGoB_BFmode_Index_constraint_1 + }, + 0, 0, /* No default value */ + "nonGoB-BFmode-Index" + }, + { ATF_POINTER, 1, offsetof(struct MeasurementLabel, mIMO_mode_Index), + (ASN_TAG_CLASS_CONTEXT | (23 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_mIMO_mode_Index_constr_41, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_mIMO_mode_Index_constraint_1 + }, + 0, 0, /* No default value */ + "mIMO-mode-Index" + }, +}; +static const int asn_MAP_MeasurementLabel_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; +static const ber_tlv_tag_t asn_DEF_MeasurementLabel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementLabel_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* noLabel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* plmnID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sliceID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* fiveQI */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* qFI */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* qCI */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* qCImax */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* qCImin */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* aRPmax */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* aRPmin */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* bitrateRange */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* layerMU-MIMO */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* sUM */ + { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* distBinX */ + { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* distBinY */ + { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* distBinZ */ + { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* preLabelOverride */ + { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* startEndInd */ + { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* min */ + { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* max */ + { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* avg */ + { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* ssbIndex */ + { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* nonGoB-BFmode-Index */ + { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 } /* mIMO-mode-Index */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementLabel_specs_1 = { + sizeof(struct MeasurementLabel), + offsetof(struct MeasurementLabel, _asn_ctx), + asn_MAP_MeasurementLabel_tag2el_1, + 24, /* Count of tags in the map */ + asn_MAP_MeasurementLabel_oms_1, /* Optional members */ + 21, 3, /* Root/Additions */ + 21, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementLabel = { + "MeasurementLabel", + "MeasurementLabel", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementLabel_tags_1, + sizeof(asn_DEF_MeasurementLabel_tags_1) + /sizeof(asn_DEF_MeasurementLabel_tags_1[0]), /* 1 */ + asn_DEF_MeasurementLabel_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementLabel_tags_1) + /sizeof(asn_DEF_MeasurementLabel_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MeasurementLabel_1, + 24, /* Elements count */ + &asn_SPC_MeasurementLabel_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementLabel.h b/e2sim/asn1c/MeasurementLabel.h new file mode 100644 index 0000000..96507da --- /dev/null +++ b/e2sim/asn1c/MeasurementLabel.h @@ -0,0 +1,127 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementLabel_H_ +#define _MeasurementLabel_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "PLMNIdentity.h" +#include "FiveQI.h" +#include "QosFlowIdentifier.h" +#include "QCI.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MeasurementLabel__noLabel { + MeasurementLabel__noLabel_true = 0 + /* + * Enumeration is extensible + */ +} e_MeasurementLabel__noLabel; +typedef enum MeasurementLabel__sUM { + MeasurementLabel__sUM_true = 0 + /* + * Enumeration is extensible + */ +} e_MeasurementLabel__sUM; +typedef enum MeasurementLabel__preLabelOverride { + MeasurementLabel__preLabelOverride_true = 0 + /* + * Enumeration is extensible + */ +} e_MeasurementLabel__preLabelOverride; +typedef enum MeasurementLabel__startEndInd { + MeasurementLabel__startEndInd_start = 0, + MeasurementLabel__startEndInd_end = 1 + /* + * Enumeration is extensible + */ +} e_MeasurementLabel__startEndInd; +typedef enum MeasurementLabel__min { + MeasurementLabel__min_true = 0 + /* + * Enumeration is extensible + */ +} e_MeasurementLabel__min; +typedef enum MeasurementLabel__max { + MeasurementLabel__max_true = 0 + /* + * Enumeration is extensible + */ +} e_MeasurementLabel__max; +typedef enum MeasurementLabel__avg { + MeasurementLabel__avg_true = 0 + /* + * Enumeration is extensible + */ +} e_MeasurementLabel__avg; + +/* Forward declarations */ +struct S_NSSAI; + +/* MeasurementLabel */ +typedef struct MeasurementLabel { + long *noLabel; /* OPTIONAL */ + PLMNIdentity_t *plmnID; /* OPTIONAL */ + struct S_NSSAI *sliceID; /* OPTIONAL */ + FiveQI_t *fiveQI; /* OPTIONAL */ + QosFlowIdentifier_t *qFI; /* OPTIONAL */ + QCI_t *qCI; /* OPTIONAL */ + QCI_t *qCImax; /* OPTIONAL */ + QCI_t *qCImin; /* OPTIONAL */ + long *aRPmax; /* OPTIONAL */ + long *aRPmin; /* OPTIONAL */ + long *bitrateRange; /* OPTIONAL */ + long *layerMU_MIMO; /* OPTIONAL */ + long *sUM; /* OPTIONAL */ + long *distBinX; /* OPTIONAL */ + long *distBinY; /* OPTIONAL */ + long *distBinZ; /* OPTIONAL */ + long *preLabelOverride; /* OPTIONAL */ + long *startEndInd; /* OPTIONAL */ + long *min; /* OPTIONAL */ + long *max; /* OPTIONAL */ + long *avg; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + long *ssbIndex; /* OPTIONAL */ + long *nonGoB_BFmode_Index; /* OPTIONAL */ + long *mIMO_mode_Index; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementLabel_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_noLabel_2; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_sUM_16; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_preLabelOverride_22; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_startEndInd_25; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_min_29; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_max_32; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_avg_35; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementLabel; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementLabel_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementLabel_1[24]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementLabel_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementRecord.c b/e2sim/asn1c/MeasurementRecord.c new file mode 100644 index 0000000..70420a2 --- /dev/null +++ b/e2sim/asn1c/MeasurementRecord.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementRecord.h" + +#include "MeasurementRecordItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementRecord_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 31, -1, 1, 2147483647 } /* (SIZE(1..2147483647)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MeasurementRecord_1[] = { + { ATF_POINTER, 0, 0, + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_MeasurementRecordItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementRecord_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MeasurementRecord_specs_1 = { + sizeof(struct MeasurementRecord), + offsetof(struct MeasurementRecord, _asn_ctx), + 2, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementRecord = { + "MeasurementRecord", + "MeasurementRecord", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementRecord_tags_1, + sizeof(asn_DEF_MeasurementRecord_tags_1) + /sizeof(asn_DEF_MeasurementRecord_tags_1[0]), /* 1 */ + asn_DEF_MeasurementRecord_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementRecord_tags_1) + /sizeof(asn_DEF_MeasurementRecord_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementRecord_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MeasurementRecord_1, + 1, /* Single element */ + &asn_SPC_MeasurementRecord_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementRecord.h b/e2sim/asn1c/MeasurementRecord.h new file mode 100644 index 0000000..3bff2b9 --- /dev/null +++ b/e2sim/asn1c/MeasurementRecord.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementRecord_H_ +#define _MeasurementRecord_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MeasurementRecordItem; + +/* MeasurementRecord */ +typedef struct MeasurementRecord { + A_SEQUENCE_OF(struct MeasurementRecordItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementRecord_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementRecord; +extern asn_SET_OF_specifics_t asn_SPC_MeasurementRecord_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementRecord_1[1]; +extern asn_per_constraints_t asn_PER_type_MeasurementRecord_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementRecord_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementRecordItem.c b/e2sim/asn1c/MeasurementRecordItem.c new file mode 100644 index 0000000..515911f --- /dev/null +++ b/e2sim/asn1c/MeasurementRecordItem.c @@ -0,0 +1,189 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementRecordItem.h" + +static int +integer_2_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +memb_integer_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_integer_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_integer_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementRecordItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_specifics_t asn_SPC_integer_specs_2 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_integer_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_integer_2 = { + "integer", + "integer", + &asn_OP_NativeInteger, + asn_DEF_integer_tags_2, + sizeof(asn_DEF_integer_tags_2) + /sizeof(asn_DEF_integer_tags_2[0]) - 1, /* 1 */ + asn_DEF_integer_tags_2, /* Same as above */ + sizeof(asn_DEF_integer_tags_2) + /sizeof(asn_DEF_integer_tags_2[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_integer_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + integer_2_constraint + }, + 0, 0, /* No members */ + &asn_SPC_integer_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementRecordItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementRecordItem, choice.integer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_integer_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_integer_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_integer_constraint_1 + }, + 0, 0, /* No default value */ + "integer" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementRecordItem, choice.real), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeReal, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "real" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementRecordItem, choice.noValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "noValue" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementRecordItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* integer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* real */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* noValue */ +}; +asn_CHOICE_specifics_t asn_SPC_MeasurementRecordItem_specs_1 = { + sizeof(struct MeasurementRecordItem), + offsetof(struct MeasurementRecordItem, _asn_ctx), + offsetof(struct MeasurementRecordItem, present), + sizeof(((struct MeasurementRecordItem *)0)->present), + asn_MAP_MeasurementRecordItem_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementRecordItem = { + "MeasurementRecordItem", + "MeasurementRecordItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementRecordItem_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_MeasurementRecordItem_1, + 3, /* Elements count */ + &asn_SPC_MeasurementRecordItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementRecordItem.h b/e2sim/asn1c/MeasurementRecordItem.h new file mode 100644 index 0000000..94fe360 --- /dev/null +++ b/e2sim/asn1c/MeasurementRecordItem.h @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementRecordItem_H_ +#define _MeasurementRecordItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "NativeReal.h" +#include "NULL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MeasurementRecordItem_PR { + MeasurementRecordItem_PR_NOTHING, /* No components present */ + MeasurementRecordItem_PR_integer, + MeasurementRecordItem_PR_real, + MeasurementRecordItem_PR_noValue + /* Extensions may appear below */ + +} MeasurementRecordItem_PR; + +/* MeasurementRecordItem */ +typedef struct MeasurementRecordItem { + MeasurementRecordItem_PR present; + union MeasurementRecordItem_u { + unsigned long integer; + double real; + NULL_t noValue; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementRecordItem_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_integer_2; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementRecordItem; +extern asn_CHOICE_specifics_t asn_SPC_MeasurementRecordItem_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementRecordItem_1[3]; +extern asn_per_constraints_t asn_PER_type_MeasurementRecordItem_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementRecordItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementType.c b/e2sim/asn1c/MeasurementType.c new file mode 100644 index 0000000..b1764bd --- /dev/null +++ b/e2sim/asn1c/MeasurementType.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementType.h" + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MeasurementType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementType, choice.measName), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementTypeName, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measName" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementType, choice.measID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementTypeID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measName */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measID */ +}; +asn_CHOICE_specifics_t asn_SPC_MeasurementType_specs_1 = { + sizeof(struct MeasurementType), + offsetof(struct MeasurementType, _asn_ctx), + offsetof(struct MeasurementType, present), + sizeof(((struct MeasurementType *)0)->present), + asn_MAP_MeasurementType_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementType = { + "MeasurementType", + "MeasurementType", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_MeasurementType_1, + 2, /* Elements count */ + &asn_SPC_MeasurementType_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/MeasurementType.h b/e2sim/asn1c/MeasurementType.h new file mode 100644 index 0000000..d36d11f --- /dev/null +++ b/e2sim/asn1c/MeasurementType.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementType_H_ +#define _MeasurementType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementTypeName.h" +#include "MeasurementTypeID.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MeasurementType_PR { + MeasurementType_PR_NOTHING, /* No components present */ + MeasurementType_PR_measName, + MeasurementType_PR_measID + /* Extensions may appear below */ + +} MeasurementType_PR; + +/* MeasurementType */ +typedef struct MeasurementType { + MeasurementType_PR present; + union MeasurementType_u { + MeasurementTypeName_t measName; + MeasurementTypeID_t measID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementType; +extern asn_CHOICE_specifics_t asn_SPC_MeasurementType_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementType_1[2]; +extern asn_per_constraints_t asn_PER_type_MeasurementType_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementType_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementTypeID.c b/e2sim/asn1c/MeasurementTypeID.c new file mode 100644 index 0000000..13ed9cc --- /dev/null +++ b/e2sim/asn1c/MeasurementTypeID.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementTypeID.h" + +int +MeasurementTypeID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 65536L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementTypeID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, -1, 1, 65536 } /* (1..65536,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MeasurementTypeID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementTypeID = { + "MeasurementTypeID", + "MeasurementTypeID", + &asn_OP_NativeInteger, + asn_DEF_MeasurementTypeID_tags_1, + sizeof(asn_DEF_MeasurementTypeID_tags_1) + /sizeof(asn_DEF_MeasurementTypeID_tags_1[0]), /* 1 */ + asn_DEF_MeasurementTypeID_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementTypeID_tags_1) + /sizeof(asn_DEF_MeasurementTypeID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementTypeID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MeasurementTypeID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/MeasurementTypeID.h b/e2sim/asn1c/MeasurementTypeID.h new file mode 100644 index 0000000..a8e0505 --- /dev/null +++ b/e2sim/asn1c/MeasurementTypeID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementTypeID_H_ +#define _MeasurementTypeID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeasurementTypeID */ +typedef long MeasurementTypeID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MeasurementTypeID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementTypeID; +asn_struct_free_f MeasurementTypeID_free; +asn_struct_print_f MeasurementTypeID_print; +asn_constr_check_f MeasurementTypeID_constraint; +ber_type_decoder_f MeasurementTypeID_decode_ber; +der_type_encoder_f MeasurementTypeID_encode_der; +xer_type_decoder_f MeasurementTypeID_decode_xer; +xer_type_encoder_f MeasurementTypeID_encode_xer; +jer_type_encoder_f MeasurementTypeID_encode_jer; +per_type_decoder_f MeasurementTypeID_decode_uper; +per_type_encoder_f MeasurementTypeID_encode_uper; +per_type_decoder_f MeasurementTypeID_decode_aper; +per_type_encoder_f MeasurementTypeID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementTypeID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/MeasurementTypeName.c b/e2sim/asn1c/MeasurementTypeName.c new file mode 100644 index 0000000..01a2d96 --- /dev/null +++ b/e2sim/asn1c/MeasurementTypeName.c @@ -0,0 +1,116 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "MeasurementTypeName.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_1[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +MeasurementTypeName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 150UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_MeasurementTypeName_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_MeasurementTypeName_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using PrintableString, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MeasurementTypeName_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_MeasurementTypeName_1_v2c, /* Value to PER code map */ + asn_PER_MAP_MeasurementTypeName_1_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MeasurementTypeName_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementTypeName = { + "MeasurementTypeName", + "MeasurementTypeName", + &asn_OP_PrintableString, + asn_DEF_MeasurementTypeName_tags_1, + sizeof(asn_DEF_MeasurementTypeName_tags_1) + /sizeof(asn_DEF_MeasurementTypeName_tags_1[0]), /* 1 */ + asn_DEF_MeasurementTypeName_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementTypeName_tags_1) + /sizeof(asn_DEF_MeasurementTypeName_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MeasurementTypeName_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MeasurementTypeName_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/MeasurementTypeName.h b/e2sim/asn1c/MeasurementTypeName.h new file mode 100644 index 0000000..ba55bab --- /dev/null +++ b/e2sim/asn1c/MeasurementTypeName.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _MeasurementTypeName_H_ +#define _MeasurementTypeName_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrintableString.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeasurementTypeName */ +typedef PrintableString_t MeasurementTypeName_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MeasurementTypeName_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementTypeName; +asn_struct_free_f MeasurementTypeName_free; +asn_struct_print_f MeasurementTypeName_print; +asn_constr_check_f MeasurementTypeName_constraint; +ber_type_decoder_f MeasurementTypeName_decode_ber; +der_type_encoder_f MeasurementTypeName_encode_der; +xer_type_decoder_f MeasurementTypeName_decode_xer; +xer_type_encoder_f MeasurementTypeName_encode_xer; +jer_type_encoder_f MeasurementTypeName_encode_jer; +per_type_decoder_f MeasurementTypeName_decode_uper; +per_type_encoder_f MeasurementTypeName_encode_uper; +per_type_decoder_f MeasurementTypeName_decode_aper; +per_type_encoder_f MeasurementTypeName_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementTypeName_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NG-RANnodeUEXnAPID.c b/e2sim/asn1c/NG-RANnodeUEXnAPID.c new file mode 100644 index 0000000..c45c6c6 --- /dev/null +++ b/e2sim/asn1c/NG-RANnodeUEXnAPID.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NG-RANnodeUEXnAPID.h" + +int +NG_RANnodeUEXnAPID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NG_RANnodeUEXnAPID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +const asn_INTEGER_specifics_t asn_SPC_NG_RANnodeUEXnAPID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_NG_RANnodeUEXnAPID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NG_RANnodeUEXnAPID = { + "NG-RANnodeUEXnAPID", + "NG-RANnodeUEXnAPID", + &asn_OP_NativeInteger, + asn_DEF_NG_RANnodeUEXnAPID_tags_1, + sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1) + /sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1[0]), /* 1 */ + asn_DEF_NG_RANnodeUEXnAPID_tags_1, /* Same as above */ + sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1) + /sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NG_RANnodeUEXnAPID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NG_RANnodeUEXnAPID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_NG_RANnodeUEXnAPID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NG-RANnodeUEXnAPID.h b/e2sim/asn1c/NG-RANnodeUEXnAPID.h new file mode 100644 index 0000000..e6939ca --- /dev/null +++ b/e2sim/asn1c/NG-RANnodeUEXnAPID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NG_RANnodeUEXnAPID_H_ +#define _NG_RANnodeUEXnAPID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NG-RANnodeUEXnAPID */ +typedef unsigned long NG_RANnodeUEXnAPID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NG_RANnodeUEXnAPID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NG_RANnodeUEXnAPID; +extern const asn_INTEGER_specifics_t asn_SPC_NG_RANnodeUEXnAPID_specs_1; +asn_struct_free_f NG_RANnodeUEXnAPID_free; +asn_struct_print_f NG_RANnodeUEXnAPID_print; +asn_constr_check_f NG_RANnodeUEXnAPID_constraint; +ber_type_decoder_f NG_RANnodeUEXnAPID_decode_ber; +der_type_encoder_f NG_RANnodeUEXnAPID_encode_der; +xer_type_decoder_f NG_RANnodeUEXnAPID_decode_xer; +xer_type_encoder_f NG_RANnodeUEXnAPID_encode_xer; +jer_type_encoder_f NG_RANnodeUEXnAPID_encode_jer; +per_type_decoder_f NG_RANnodeUEXnAPID_decode_uper; +per_type_encoder_f NG_RANnodeUEXnAPID_encode_uper; +per_type_decoder_f NG_RANnodeUEXnAPID_decode_aper; +per_type_encoder_f NG_RANnodeUEXnAPID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NG_RANnodeUEXnAPID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NGENB-CU-UE-W1AP-ID.c b/e2sim/asn1c/NGENB-CU-UE-W1AP-ID.c new file mode 100644 index 0000000..1b83802 --- /dev/null +++ b/e2sim/asn1c/NGENB-CU-UE-W1AP-ID.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NGENB-CU-UE-W1AP-ID.h" + +int +NGENB_CU_UE_W1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +const asn_INTEGER_specifics_t asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NGENB_CU_UE_W1AP_ID = { + "NGENB-CU-UE-W1AP-ID", + "NGENB-CU-UE-W1AP-ID", + &asn_OP_NativeInteger, + asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1, + sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1) + /sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[0]), /* 1 */ + asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1) + /sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NGENB_CU_UE_W1AP_ID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NGENB-CU-UE-W1AP-ID.h b/e2sim/asn1c/NGENB-CU-UE-W1AP-ID.h new file mode 100644 index 0000000..c8a60ae --- /dev/null +++ b/e2sim/asn1c/NGENB-CU-UE-W1AP-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NGENB_CU_UE_W1AP_ID_H_ +#define _NGENB_CU_UE_W1AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NGENB-CU-UE-W1AP-ID */ +typedef unsigned long NGENB_CU_UE_W1AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NGENB_CU_UE_W1AP_ID; +extern const asn_INTEGER_specifics_t asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1; +asn_struct_free_f NGENB_CU_UE_W1AP_ID_free; +asn_struct_print_f NGENB_CU_UE_W1AP_ID_print; +asn_constr_check_f NGENB_CU_UE_W1AP_ID_constraint; +ber_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_ber; +der_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_der; +xer_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_xer; +xer_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_xer; +jer_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_jer; +per_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_uper; +per_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_uper; +per_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_aper; +per_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NGENB_CU_UE_W1AP_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NR-ARFCN.c b/e2sim/asn1c/NR-ARFCN.c new file mode 100644 index 0000000..cb2a090 --- /dev/null +++ b/e2sim/asn1c/NR-ARFCN.c @@ -0,0 +1,98 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NR-ARFCN.h" + +static int +memb_nRARFCN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 3279165L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_nRARFCN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 22, -1, 0, 3279165 } /* (0..3279165) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NR_ARFCN_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NR_ARFCN, nRARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_nRARFCN_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_nRARFCN_constraint_1 + }, + 0, 0, /* No default value */ + "nRARFCN" + }, +}; +static const ber_tlv_tag_t asn_DEF_NR_ARFCN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NR_ARFCN_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nRARFCN */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NR_ARFCN_specs_1 = { + sizeof(struct NR_ARFCN), + offsetof(struct NR_ARFCN, _asn_ctx), + asn_MAP_NR_ARFCN_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NR_ARFCN = { + "NR-ARFCN", + "NR-ARFCN", + &asn_OP_SEQUENCE, + asn_DEF_NR_ARFCN_tags_1, + sizeof(asn_DEF_NR_ARFCN_tags_1) + /sizeof(asn_DEF_NR_ARFCN_tags_1[0]), /* 1 */ + asn_DEF_NR_ARFCN_tags_1, /* Same as above */ + sizeof(asn_DEF_NR_ARFCN_tags_1) + /sizeof(asn_DEF_NR_ARFCN_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_NR_ARFCN_1, + 1, /* Elements count */ + &asn_SPC_NR_ARFCN_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NR-ARFCN.h b/e2sim/asn1c/NR-ARFCN.h new file mode 100644 index 0000000..49f273d --- /dev/null +++ b/e2sim/asn1c/NR-ARFCN.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NR_ARFCN_H_ +#define _NR_ARFCN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NR-ARFCN */ +typedef struct NR_ARFCN { + long nRARFCN; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NR_ARFCN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NR_ARFCN; +extern asn_SEQUENCE_specifics_t asn_SPC_NR_ARFCN_specs_1; +extern asn_TYPE_member_t asn_MBR_NR_ARFCN_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NR_ARFCN_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NR-CGI.c b/e2sim/asn1c/NR-CGI.c new file mode 100644 index 0000000..a5b8dc6 --- /dev/null +++ b/e2sim/asn1c/NR-CGI.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NR-CGI.h" + +asn_TYPE_member_t asn_MBR_NR_CGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NR_CGI, pLMNIdentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pLMNIdentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct NR_CGI, nRCellIdentity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCellIdentity, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nRCellIdentity" + }, +}; +static const ber_tlv_tag_t asn_DEF_NR_CGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NR_CGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nRCellIdentity */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NR_CGI_specs_1 = { + sizeof(struct NR_CGI), + offsetof(struct NR_CGI, _asn_ctx), + asn_MAP_NR_CGI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NR_CGI = { + "NR-CGI", + "NR-CGI", + &asn_OP_SEQUENCE, + asn_DEF_NR_CGI_tags_1, + sizeof(asn_DEF_NR_CGI_tags_1) + /sizeof(asn_DEF_NR_CGI_tags_1[0]), /* 1 */ + asn_DEF_NR_CGI_tags_1, /* Same as above */ + sizeof(asn_DEF_NR_CGI_tags_1) + /sizeof(asn_DEF_NR_CGI_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_NR_CGI_1, + 2, /* Elements count */ + &asn_SPC_NR_CGI_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NR-CGI.h b/e2sim/asn1c/NR-CGI.h new file mode 100644 index 0000000..2b49716 --- /dev/null +++ b/e2sim/asn1c/NR-CGI.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NR_CGI_H_ +#define _NR_CGI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNIdentity.h" +#include "NRCellIdentity.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NR-CGI */ +typedef struct NR_CGI { + PLMNIdentity_t pLMNIdentity; + NRCellIdentity_t nRCellIdentity; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NR_CGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NR_CGI; +extern asn_SEQUENCE_specifics_t asn_SPC_NR_CGI_specs_1; +extern asn_TYPE_member_t asn_MBR_NR_CGI_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NR_CGI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NR-PCI.c b/e2sim/asn1c/NR-PCI.c new file mode 100644 index 0000000..fc146bf --- /dev/null +++ b/e2sim/asn1c/NR-PCI.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NR-PCI.h" + +int +NR_PCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 1007L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NR_PCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1007 } /* (0..1007) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_NR_PCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NR_PCI = { + "NR-PCI", + "NR-PCI", + &asn_OP_NativeInteger, + asn_DEF_NR_PCI_tags_1, + sizeof(asn_DEF_NR_PCI_tags_1) + /sizeof(asn_DEF_NR_PCI_tags_1[0]), /* 1 */ + asn_DEF_NR_PCI_tags_1, /* Same as above */ + sizeof(asn_DEF_NR_PCI_tags_1) + /sizeof(asn_DEF_NR_PCI_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NR_PCI_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NR_PCI_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/NR-PCI.h b/e2sim/asn1c/NR-PCI.h new file mode 100644 index 0000000..c4144a9 --- /dev/null +++ b/e2sim/asn1c/NR-PCI.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NR_PCI_H_ +#define _NR_PCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NR-PCI */ +typedef long NR_PCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NR_PCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NR_PCI; +asn_struct_free_f NR_PCI_free; +asn_struct_print_f NR_PCI_print; +asn_constr_check_f NR_PCI_constraint; +ber_type_decoder_f NR_PCI_decode_ber; +der_type_encoder_f NR_PCI_encode_der; +xer_type_decoder_f NR_PCI_decode_xer; +xer_type_encoder_f NR_PCI_encode_xer; +jer_type_encoder_f NR_PCI_encode_jer; +per_type_decoder_f NR_PCI_decode_uper; +per_type_encoder_f NR_PCI_encode_uper; +per_type_decoder_f NR_PCI_decode_aper; +per_type_encoder_f NR_PCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NR_PCI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NRCellIdentity.c b/e2sim/asn1c/NRCellIdentity.c new file mode 100644 index 0000000..2ead6cd --- /dev/null +++ b/e2sim/asn1c/NRCellIdentity.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NRCellIdentity.h" + +int +NRCellIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 36UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 36, 36 } /* (SIZE(36..36)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_NRCellIdentity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRCellIdentity = { + "NRCellIdentity", + "NRCellIdentity", + &asn_OP_BIT_STRING, + asn_DEF_NRCellIdentity_tags_1, + sizeof(asn_DEF_NRCellIdentity_tags_1) + /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */ + asn_DEF_NRCellIdentity_tags_1, /* Same as above */ + sizeof(asn_DEF_NRCellIdentity_tags_1) + /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NRCellIdentity_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NRCellIdentity_constraint + }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NRCellIdentity.h b/e2sim/asn1c/NRCellIdentity.h new file mode 100644 index 0000000..e401343 --- /dev/null +++ b/e2sim/asn1c/NRCellIdentity.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NRCellIdentity_H_ +#define _NRCellIdentity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRCellIdentity */ +typedef BIT_STRING_t NRCellIdentity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRCellIdentity; +asn_struct_free_f NRCellIdentity_free; +asn_struct_print_f NRCellIdentity_print; +asn_constr_check_f NRCellIdentity_constraint; +ber_type_decoder_f NRCellIdentity_decode_ber; +der_type_encoder_f NRCellIdentity_encode_der; +xer_type_decoder_f NRCellIdentity_decode_xer; +xer_type_encoder_f NRCellIdentity_encode_xer; +jer_type_encoder_f NRCellIdentity_encode_jer; +per_type_decoder_f NRCellIdentity_decode_uper; +per_type_encoder_f NRCellIdentity_encode_uper; +per_type_decoder_f NRCellIdentity_decode_aper; +per_type_encoder_f NRCellIdentity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRCellIdentity_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NRFrequencyBand-List.c b/e2sim/asn1c/NRFrequencyBand-List.c new file mode 100644 index 0000000..2deec04 --- /dev/null +++ b/e2sim/asn1c/NRFrequencyBand-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NRFrequencyBand-List.h" + +#include "NRFrequencyBandItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NRFrequencyBand_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NRFrequencyBand_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRFrequencyBandItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRFrequencyBand_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_NRFrequencyBand_List_specs_1 = { + sizeof(struct NRFrequencyBand_List), + offsetof(struct NRFrequencyBand_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_NRFrequencyBand_List = { + "NRFrequencyBand-List", + "NRFrequencyBand-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_NRFrequencyBand_List_tags_1, + sizeof(asn_DEF_NRFrequencyBand_List_tags_1) + /sizeof(asn_DEF_NRFrequencyBand_List_tags_1[0]), /* 1 */ + asn_DEF_NRFrequencyBand_List_tags_1, /* Same as above */ + sizeof(asn_DEF_NRFrequencyBand_List_tags_1) + /sizeof(asn_DEF_NRFrequencyBand_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NRFrequencyBand_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_NRFrequencyBand_List_1, + 1, /* Single element */ + &asn_SPC_NRFrequencyBand_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NRFrequencyBand-List.h b/e2sim/asn1c/NRFrequencyBand-List.h new file mode 100644 index 0000000..17bd230 --- /dev/null +++ b/e2sim/asn1c/NRFrequencyBand-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NRFrequencyBand_List_H_ +#define _NRFrequencyBand_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRFrequencyBandItem; + +/* NRFrequencyBand-List */ +typedef struct NRFrequencyBand_List { + A_SEQUENCE_OF(struct NRFrequencyBandItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRFrequencyBand_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRFrequencyBand_List; +extern asn_SET_OF_specifics_t asn_SPC_NRFrequencyBand_List_specs_1; +extern asn_TYPE_member_t asn_MBR_NRFrequencyBand_List_1[1]; +extern asn_per_constraints_t asn_PER_type_NRFrequencyBand_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRFrequencyBand_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NRFrequencyBandItem.c b/e2sim/asn1c/NRFrequencyBandItem.c new file mode 100644 index 0000000..128e9fc --- /dev/null +++ b/e2sim/asn1c/NRFrequencyBandItem.c @@ -0,0 +1,116 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NRFrequencyBandItem.h" + +static int +memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 1024L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1024 } /* (1..1024,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NRFrequencyBandItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRFrequencyBandItem, freqBandIndicatorNr), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_freqBandIndicatorNr_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_freqBandIndicatorNr_constraint_1 + }, + 0, 0, /* No default value */ + "freqBandIndicatorNr" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRFrequencyBandItem, supportedSULBandList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SupportedSULBandList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "supportedSULBandList" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRFrequencyBandItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRFrequencyBandItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicatorNr */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* supportedSULBandList */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRFrequencyBandItem_specs_1 = { + sizeof(struct NRFrequencyBandItem), + offsetof(struct NRFrequencyBandItem, _asn_ctx), + asn_MAP_NRFrequencyBandItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRFrequencyBandItem = { + "NRFrequencyBandItem", + "NRFrequencyBandItem", + &asn_OP_SEQUENCE, + asn_DEF_NRFrequencyBandItem_tags_1, + sizeof(asn_DEF_NRFrequencyBandItem_tags_1) + /sizeof(asn_DEF_NRFrequencyBandItem_tags_1[0]), /* 1 */ + asn_DEF_NRFrequencyBandItem_tags_1, /* Same as above */ + sizeof(asn_DEF_NRFrequencyBandItem_tags_1) + /sizeof(asn_DEF_NRFrequencyBandItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_NRFrequencyBandItem_1, + 2, /* Elements count */ + &asn_SPC_NRFrequencyBandItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NRFrequencyBandItem.h b/e2sim/asn1c/NRFrequencyBandItem.h new file mode 100644 index 0000000..82000af --- /dev/null +++ b/e2sim/asn1c/NRFrequencyBandItem.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NRFrequencyBandItem_H_ +#define _NRFrequencyBandItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "SupportedSULBandList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRFrequencyBandItem */ +typedef struct NRFrequencyBandItem { + long freqBandIndicatorNr; + SupportedSULBandList_t supportedSULBandList; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRFrequencyBandItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRFrequencyBandItem; +extern asn_SEQUENCE_specifics_t asn_SPC_NRFrequencyBandItem_specs_1; +extern asn_TYPE_member_t asn_MBR_NRFrequencyBandItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRFrequencyBandItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NRFrequencyInfo.c b/e2sim/asn1c/NRFrequencyInfo.c new file mode 100644 index 0000000..341991c --- /dev/null +++ b/e2sim/asn1c/NRFrequencyInfo.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NRFrequencyInfo.h" + +static asn_TYPE_member_t asn_MBR_NRFrequencyInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRFrequencyInfo, nrARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_ARFCN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nrARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRFrequencyInfo, frequencyBand_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFrequencyBand_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "frequencyBand-List" + }, + { ATF_POINTER, 1, offsetof(struct NRFrequencyInfo, frequencyShift7p5khz), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFrequencyShift7p5khz, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "frequencyShift7p5khz" + }, +}; +static const int asn_MAP_NRFrequencyInfo_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_NRFrequencyInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRFrequencyInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frequencyBand-List */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* frequencyShift7p5khz */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_NRFrequencyInfo_specs_1 = { + sizeof(struct NRFrequencyInfo), + offsetof(struct NRFrequencyInfo, _asn_ctx), + asn_MAP_NRFrequencyInfo_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_NRFrequencyInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRFrequencyInfo = { + "NRFrequencyInfo", + "NRFrequencyInfo", + &asn_OP_SEQUENCE, + asn_DEF_NRFrequencyInfo_tags_1, + sizeof(asn_DEF_NRFrequencyInfo_tags_1) + /sizeof(asn_DEF_NRFrequencyInfo_tags_1[0]), /* 1 */ + asn_DEF_NRFrequencyInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_NRFrequencyInfo_tags_1) + /sizeof(asn_DEF_NRFrequencyInfo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_NRFrequencyInfo_1, + 3, /* Elements count */ + &asn_SPC_NRFrequencyInfo_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NRFrequencyInfo.h b/e2sim/asn1c/NRFrequencyInfo.h new file mode 100644 index 0000000..4429f77 --- /dev/null +++ b/e2sim/asn1c/NRFrequencyInfo.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NRFrequencyInfo_H_ +#define _NRFrequencyInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NR-ARFCN.h" +#include "NRFrequencyBand-List.h" +#include "NRFrequencyShift7p5khz.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRFrequencyInfo */ +typedef struct NRFrequencyInfo { + NR_ARFCN_t nrARFCN; + NRFrequencyBand_List_t frequencyBand_List; + NRFrequencyShift7p5khz_t *frequencyShift7p5khz; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRFrequencyInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRFrequencyInfo; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRFrequencyInfo_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NRFrequencyShift7p5khz.c b/e2sim/asn1c/NRFrequencyShift7p5khz.c new file mode 100644 index 0000000..b9a75ec --- /dev/null +++ b/e2sim/asn1c/NRFrequencyShift7p5khz.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NRFrequencyShift7p5khz.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NRFrequencyShift7p5khz_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_NRFrequencyShift7p5khz_value2enum_1[] = { + { 0, 5, "false" }, + { 1, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRFrequencyShift7p5khz_enum2value_1[] = { + 0, /* false(0) */ + 1 /* true(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRFrequencyShift7p5khz_specs_1 = { + asn_MAP_NRFrequencyShift7p5khz_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRFrequencyShift7p5khz_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NRFrequencyShift7p5khz_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRFrequencyShift7p5khz = { + "NRFrequencyShift7p5khz", + "NRFrequencyShift7p5khz", + &asn_OP_NativeEnumerated, + asn_DEF_NRFrequencyShift7p5khz_tags_1, + sizeof(asn_DEF_NRFrequencyShift7p5khz_tags_1) + /sizeof(asn_DEF_NRFrequencyShift7p5khz_tags_1[0]), /* 1 */ + asn_DEF_NRFrequencyShift7p5khz_tags_1, /* Same as above */ + sizeof(asn_DEF_NRFrequencyShift7p5khz_tags_1) + /sizeof(asn_DEF_NRFrequencyShift7p5khz_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NRFrequencyShift7p5khz_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRFrequencyShift7p5khz_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NRFrequencyShift7p5khz.h b/e2sim/asn1c/NRFrequencyShift7p5khz.h new file mode 100644 index 0000000..ba21a53 --- /dev/null +++ b/e2sim/asn1c/NRFrequencyShift7p5khz.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NRFrequencyShift7p5khz_H_ +#define _NRFrequencyShift7p5khz_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRFrequencyShift7p5khz { + NRFrequencyShift7p5khz_false = 0, + NRFrequencyShift7p5khz_true = 1 + /* + * Enumeration is extensible + */ +} e_NRFrequencyShift7p5khz; + +/* NRFrequencyShift7p5khz */ +typedef long NRFrequencyShift7p5khz_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRFrequencyShift7p5khz_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRFrequencyShift7p5khz; +extern const asn_INTEGER_specifics_t asn_SPC_NRFrequencyShift7p5khz_specs_1; +asn_struct_free_f NRFrequencyShift7p5khz_free; +asn_struct_print_f NRFrequencyShift7p5khz_print; +asn_constr_check_f NRFrequencyShift7p5khz_constraint; +ber_type_decoder_f NRFrequencyShift7p5khz_decode_ber; +der_type_encoder_f NRFrequencyShift7p5khz_encode_der; +xer_type_decoder_f NRFrequencyShift7p5khz_decode_xer; +xer_type_encoder_f NRFrequencyShift7p5khz_encode_xer; +jer_type_encoder_f NRFrequencyShift7p5khz_encode_jer; +per_type_decoder_f NRFrequencyShift7p5khz_decode_uper; +per_type_encoder_f NRFrequencyShift7p5khz_encode_uper; +per_type_decoder_f NRFrequencyShift7p5khz_decode_aper; +per_type_encoder_f NRFrequencyShift7p5khz_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRFrequencyShift7p5khz_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/NULL.c b/e2sim/asn1c/NULL.c new file mode 100644 index 0000000..d160e69 --- /dev/null +++ b/e2sim/asn1c/NULL.c @@ -0,0 +1,113 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * 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 = { + NULL_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + NULL_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + NULL_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + NULL_decode_ber, + NULL_encode_der, /* Special handling of DER encoding */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + NULL_decode_xer, + NULL_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + NULL_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + NULL_decode_oer, + NULL_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + NULL_decode_uper, /* Unaligned PER decoder */ + NULL_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + NULL_decode_aper, /* Aligned PER decoder */ + NULL_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + NULL_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 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]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +void +NULL_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(NULL_t)); + break; + } + } +} + +int +NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) { + (void)td; + (void)a; + (void)b; + return 0; +} diff --git a/e2sim/asn1c/NULL.h b/e2sim/asn1c/NULL.h new file mode 100644 index 0000000..7264475 --- /dev/null +++ b/e2sim/asn1c/NULL.h @@ -0,0 +1,69 @@ +/*- + * 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 + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The value of the NULL type is meaningless. + * Use the BOOLEAN type if you need 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_free_f NULL_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f NULL_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f NULL_compare; + +#define NULL_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f NULL_decode_ber; +der_type_encoder_f NULL_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f NULL_decode_xer; +xer_type_encoder_f NULL_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f NULL_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f NULL_decode_oer; +oer_type_encoder_f NULL_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f NULL_decode_uper; +per_type_encoder_f NULL_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f NULL_decode_aper; +per_type_encoder_f NULL_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f NULL_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* NULL_H */ diff --git a/e2sim/asn1c/NULL_aper.c b/e2sim/asn1c/NULL_aper.c new file mode 100644 index 0000000..5176880 --- /dev/null +++ b/e2sim/asn1c/NULL_aper.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + + +asn_enc_rval_t +NULL_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/NULL_ber.c b/e2sim/asn1c/NULL_ber.c new file mode 100644 index 0000000..38c85c9 --- /dev/null +++ b/e2sim/asn1c/NULL_ber.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode NULL type. + */ +asn_dec_rval_t +NULL_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) { + NULL_t *st = (NULL_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + if(st == NULL) { + st = (NULL_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as NULL (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; + } + + // X.690-201508, #8.8.2, length shall be zero. + if(length != 0) { + ASN_DEBUG("Decoding %s as NULL failed: too much data", td->name); + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + return rval; +} + +asn_enc_rval_t +NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, + ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + + erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = ptr; + } + + ASN__ENCODED_OK(erval); +} diff --git a/e2sim/asn1c/NULL_jer.c b/e2sim/asn1c/NULL_jer.c new file mode 100644 index 0000000..f69c64e --- /dev/null +++ b/e2sim/asn1c/NULL_jer.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +NULL_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)ilevel; + (void)flags; + (void)cb; + (void)app_key; + + /* XMLNullValue is empty */ + er.encoded = 0; + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/NULL_print.c b/e2sim/asn1c/NULL_print.c new file mode 100644 index 0000000..52fcc0e --- /dev/null +++ b/e2sim/asn1c/NULL_print.c @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; + } +} diff --git a/e2sim/asn1c/NULL_rfill.c b/e2sim/asn1c/NULL_rfill.c new file mode 100644 index 0000000..f1b60ce --- /dev/null +++ b/e2sim/asn1c/NULL_rfill.c @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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/e2sim/asn1c/NULL_uper.c b/e2sim/asn1c/NULL_uper.c new file mode 100644 index 0000000..c871a48 --- /dev/null +++ b/e2sim/asn1c/NULL_uper.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +NULL_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/NULL_xer.c b/e2sim/asn1c/NULL_xer.c new file mode 100644 index 0000000..5a6e4b9 --- /dev/null +++ b/e2sim/asn1c/NULL_xer.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)ilevel; + (void)flags; + (void)cb; + (void)app_key; + + /* XMLNullValue is empty */ + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +static enum xer_pbd_rval +NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + (void)td; + (void)sptr; + (void)chunk_buf; /* Going to be empty according to the rules below. */ + + /* + * There must be no content in self-terminating tag. + */ + if(chunk_size) + return XPBD_BROKEN_ENCODING; + else + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(NULL_t), opt_mname, buf_ptr, size, + NULL__xer_body_decode); +} diff --git a/e2sim/asn1c/NativeEnumerated.c b/e2sim/asn1c/NativeEnumerated.c new file mode 100644 index 0000000..aee450c --- /dev/null +++ b/e2sim/asn1c/NativeEnumerated.c @@ -0,0 +1,108 @@ +/*- + * 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, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + NativeInteger_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + NativeInteger_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + NativeInteger_decode_ber, + NativeInteger_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + NativeEnumerated_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + NativeEnumerated_decode_oer, + NativeEnumerated_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + NativeEnumerated_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 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]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +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; +} +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ diff --git a/e2sim/asn1c/NativeEnumerated.h b/e2sim/asn1c/NativeEnumerated.h new file mode 100644 index 0000000..0c711e3 --- /dev/null +++ b/e2sim/asn1c/NativeEnumerated.h @@ -0,0 +1,76 @@ +/* + * 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; + +#define NativeEnumerated_free NativeInteger_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define NativeEnumerated_print NativeInteger_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define NativeEnumerated_compare NativeInteger_compare + +#define NativeEnumerated_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define NativeEnumerated_decode_ber NativeInteger_decode_ber +#define NativeEnumerated_encode_der NativeInteger_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define NativeEnumerated_decode_xer NativeInteger_decode_xer +xer_type_encoder_f NativeEnumerated_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f NativeEnumerated_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f NativeEnumerated_decode_oer; +oer_type_encoder_f NativeEnumerated_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f NativeEnumerated_decode_uper; +per_type_encoder_f NativeEnumerated_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f NativeEnumerated_decode_aper; +per_type_encoder_f NativeEnumerated_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#define NativeEnumerated_random_fill NativeInteger_random_fill +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +int NativeEnumerated__compar_value2enum( + const void *ap, + const void *bp); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/e2sim/asn1c/NativeEnumerated_aper.c b/e2sim/asn1c/NativeEnumerated_aper.c new file mode 100644 index 0000000..5c4c256 --- /dev/null +++ b/e2sim/asn1c/NativeEnumerated_aper.c @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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 = %zu Padding bits = %d", + td->name, pd->moved, padding); + ASN_DEBUG("For NativeEnumerated %s, upper bound = %llu", + td->name, (unsigned long long)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; + */ + + /* XXX handle indefinite index length > 64k */ + value = aper_get_nsnnwn(pd, 65537); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + //if(value >= specs->map_count) + // ASN__DECODE_FAILED; + if(value >= specs->map_count) { + ASN_DEBUG("Decoded unknown index value %s = %ld", td->name, value); + /* unknown index. Workaround => set the first enumeration value */ + *native = specs->value2enum[0].nat_value; + return rval; + } + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0, range_bits = 1; + 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) range_bits = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(range_bits && 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(aper_put_nsnnwn(po, + ct->upper_bound - ct->lower_bound + 1, + value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/NativeEnumerated_jer.c b/e2sim/asn1c/NativeEnumerated_jer.c new file mode 100644 index 0000000..046afe9 --- /dev/null +++ b/e2sim/asn1c/NativeEnumerated_jer.c @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +NativeEnumerated_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "\"%s\"", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} diff --git a/e2sim/asn1c/NativeEnumerated_uper.c b/e2sim/asn1c/NativeEnumerated_uper.c new file mode 100644 index 0000000..e2f932a --- /dev/null +++ b/e2sim/asn1c/NativeEnumerated_uper.c @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; +} + +asn_enc_rval_t +NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + 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); +} diff --git a/e2sim/asn1c/NativeEnumerated_xer.c b/e2sim/asn1c/NativeEnumerated_xer.c new file mode 100644 index 0000000..e8d6d0d --- /dev/null +++ b/e2sim/asn1c/NativeEnumerated_xer.c @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} diff --git a/e2sim/asn1c/NativeInteger.c b/e2sim/asn1c/NativeInteger.c new file mode 100644 index 0000000..f0309b0 --- /dev/null +++ b/e2sim/asn1c/NativeInteger.c @@ -0,0 +1,152 @@ +/*- + * 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, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + NativeInteger_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + NativeInteger_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + NativeInteger_decode_ber, + NativeInteger_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + NativeInteger_decode_xer, + NativeInteger_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + NativeInteger_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + NativeInteger_decode_oer, /* OER decoder */ + NativeInteger_encode_oer, /* Canonical OER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + NativeInteger_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 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]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +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; + } +} diff --git a/e2sim/asn1c/NativeInteger.h b/e2sim/asn1c/NativeInteger.h new file mode 100644 index 0000000..3a47c11 --- /dev/null +++ b/e2sim/asn1c/NativeInteger.h @@ -0,0 +1,71 @@ +/*- + * 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; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f NativeInteger_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f NativeInteger_compare; + +#define NativeInteger_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f NativeInteger_decode_ber; +der_type_encoder_f NativeInteger_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f NativeInteger_decode_xer; +xer_type_encoder_f NativeInteger_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f NativeInteger_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f NativeInteger_decode_oer; +oer_type_encoder_f NativeInteger_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f NativeInteger_decode_uper; +per_type_encoder_f NativeInteger_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f NativeInteger_decode_aper; +per_type_encoder_f NativeInteger_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f NativeInteger_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/e2sim/asn1c/NativeInteger_aper.c b/e2sim/asn1c/NativeInteger_aper.c new file mode 100644 index 0000000..1d13070 --- /dev/null +++ b/e2sim/asn1c/NativeInteger_aper.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_aper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} diff --git a/e2sim/asn1c/NativeInteger_ber.c b/e2sim/asn1c/NativeInteger_ber.c new file mode 100644 index 0000000..ed68362 --- /dev/null +++ b/e2sim/asn1c/NativeInteger_ber.c @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * 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 occurred, return with RC_FAIL. + */ + { + INTEGER_t tmp; + union { + const void *constbuf; + void *nonconstbuf; + } unconst_buf; + long l; + + unconst_buf.constbuf = buf_ptr; + tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; + tmp.size = length; + + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&tmp, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + *native = l; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", + (long)rval.consumed, (long)length, td->name, (long)*native); + + return rval; +} + +/* + * Encode the NativeInteger using the standard INTEGER type DER encoder. + */ +asn_enc_rval_t +NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ + asn_enc_rval_t erval = {0,0,0}; + INTEGER_t tmp; + +#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ + + tmp.buf = (uint8_t *)&native; + tmp.size = sizeof(native); + +#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ + uint8_t buf[sizeof(native)]; + uint8_t *p; + + /* Prepare a fake INTEGER */ + for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) + *p = (uint8_t)native; + + tmp.buf = buf; + tmp.size = sizeof(buf); +#endif /* WORDS_BIGENDIAN */ + + /* Encode fake INTEGER */ + erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); + if(erval.structure_ptr == &tmp) { + erval.structure_ptr = ptr; + } + return erval; +} diff --git a/e2sim/asn1c/NativeInteger_jer.c b/e2sim/asn1c/NativeInteger_jer.c new file mode 100644 index 0000000..f48f8ec --- /dev/null +++ b/e2sim/asn1c/NativeInteger_jer.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +NativeInteger_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/NativeInteger_print.c b/e2sim/asn1c/NativeInteger_print.c new file mode 100644 index 0000000..0602e0d --- /dev/null +++ b/e2sim/asn1c/NativeInteger_print.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * 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; + } +} diff --git a/e2sim/asn1c/NativeInteger_rfill.c b/e2sim/asn1c/NativeInteger_rfill.c new file mode 100644 index 0000000..0e2cee8 --- /dev/null +++ b/e2sim/asn1c/NativeInteger_rfill.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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 { + 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; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + const asn_per_constraints_t *ct; + + 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); + } + } +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + } + + *sptr = st; + *st = value; + return result_ok; +} diff --git a/e2sim/asn1c/NativeInteger_uper.c b/e2sim/asn1c/NativeInteger_uper.c new file mode 100644 index 0000000..4fc4ba1 --- /dev/null +++ b/e2sim/asn1c/NativeInteger_uper.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_uper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} diff --git a/e2sim/asn1c/NativeInteger_xer.c b/e2sim/asn1c/NativeInteger_xer.c new file mode 100644 index 0000000..18ec59a --- /dev/null +++ b/e2sim/asn1c/NativeInteger_xer.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +asn_dec_rval_t +NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + INTEGER_t st; + void *st_ptr = (void *)&st; + long *native = (long *)*sptr; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&st, 0, sizeof(st)); + rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, + opt_mname, buf_ptr, size); + if(rval.code == RC_OK) { + long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&st, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + } else { + *native = l; + } + } else { + /* + * Cannot restart from the middle; + * there is no place to save state in the native type. + * Request a continuation from the very beginning. + */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); + return rval; +} + + +asn_enc_rval_t +NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/NativeReal.c b/e2sim/asn1c/NativeReal.c new file mode 100644 index 0000000..f6c37e1 --- /dev/null +++ b/e2sim/asn1c/NativeReal.c @@ -0,0 +1,218 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeReal.h for the explanation wrt. differences between + * REAL and NativeReal. + * Basically, both are decoders and encoders of ASN.1 REAL type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include +#include +#include + +#if defined(__clang__) +/* + * isnan() is defined using generic selections and won't compile in + * strict C89 mode because of too fancy system's standard library. + * However, prior to C11 the math had a perfectly working isnan() + * in the math library. + * Disable generic selection warning so we can test C89 mode with newer libc. + */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc11-extensions" +static int asn_isnan(double d) { + return isnan(d); +} +#pragma clang diagnostic pop +#else +#define asn_isnan(v) isnan(v) +#endif /* generic selections */ + +/* + * NativeReal basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeReal_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeReal = { + NativeReal_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + NativeReal_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + NativeReal_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + NativeReal_decode_ber, + NativeReal_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + NativeReal_decode_xer, + NativeReal_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + NativeReal_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + NativeReal_decode_oer, + NativeReal_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + NativeReal_decode_uper, + NativeReal_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + NativeReal_decode_aper, + NativeReal_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + NativeReal_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeReal = { + "REAL", /* The ASN.1 type is still REAL */ + "REAL", + &asn_OP_NativeReal, + asn_DEF_NativeReal_tags, + sizeof(asn_DEF_NativeReal_tags) / sizeof(asn_DEF_NativeReal_tags[0]), + asn_DEF_NativeReal_tags, /* Same as above */ + sizeof(asn_DEF_NativeReal_tags) / sizeof(asn_DEF_NativeReal_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +NativeReal_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + + if(aptr && bptr) { + double a = NativeReal__get_double(td, aptr); + double b = NativeReal__get_double(td, bptr); + + /* NaN sorted above everything else */ + if(asn_isnan(a)) { + if(asn_isnan(b)) { + return 0; + } else { + return -1; + } + } else if(asn_isnan(b)) { + return 1; + } + /* Value comparison. */ + if(a < b) { + return -1; + } else if(a > b) { + return 1; + } else { + return 0; + } + } else if(!aptr) { + return -1; + } else { + return 1; + } +} + +void +NativeReal_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as REAL (%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: { + const asn_NativeReal_specifics_t *specs; + size_t float_size; + specs = (const asn_NativeReal_specifics_t *)td->specifics; + float_size = specs ? specs->float_size : sizeof(double); + memset(ptr, 0, float_size); + } break; + } +} + +/* + * Local helper functions. + */ + +size_t +NativeReal__float_size(const asn_TYPE_descriptor_t *td) { + const asn_NativeReal_specifics_t *specs = + (const asn_NativeReal_specifics_t *)td->specifics; + return specs ? specs->float_size : sizeof(double); +} + +double +NativeReal__get_double(const asn_TYPE_descriptor_t *td, const void *ptr) { + size_t float_size = NativeReal__float_size(td); + if(float_size == sizeof(float)) { + return *(const float *)ptr; + } else { + return *(const double *)ptr; + } +} + +ssize_t /* Returns -1 or float size. */ +NativeReal__set(const asn_TYPE_descriptor_t *td, void **sptr, double d) { + size_t float_size = NativeReal__float_size(td); + void *native; + + if(!(native = *sptr)) { + native = (*sptr = CALLOC(1, float_size)); + if(!native) { + return -1; + } + } + + if(float_size == sizeof(float)) { + if(asn_double2float(d, (float *)native)) { + return -1; + } + } else { + *(double *)native = d; + } + + return float_size; +} + diff --git a/e2sim/asn1c/NativeReal.h b/e2sim/asn1c/NativeReal.h new file mode 100644 index 0000000..513876e --- /dev/null +++ b/e2sim/asn1c/NativeReal.h @@ -0,0 +1,79 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard REAL in that it is modelled using + * the fixed machine type (double), so it can hold only values of + * limited precision. There is no explicit type (i.e., NativeReal_t). + * Use of this type is normally enabled by -fnative-types. + */ +#ifndef ASN_TYPE_NativeReal_H +#define ASN_TYPE_NativeReal_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_NativeReal_specifics_s { + unsigned float_size; /* sizeof(float) or sizeof(double) */ +} asn_NativeReal_specifics_t; + +extern asn_TYPE_descriptor_t asn_DEF_NativeReal; +extern asn_TYPE_operation_t asn_OP_NativeReal; + +size_t NativeReal__float_size(const asn_TYPE_descriptor_t *td); +double NativeReal__get_double(const asn_TYPE_descriptor_t *td, + const void *ptr); +ssize_t NativeReal__set(const asn_TYPE_descriptor_t *td, void **sptr, + double d); + +asn_struct_free_f NativeReal_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f NativeReal_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f NativeReal_compare; + +#define NativeReal_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f NativeReal_decode_ber; +der_type_encoder_f NativeReal_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f NativeReal_decode_xer; +xer_type_encoder_f NativeReal_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f NativeReal_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f NativeReal_decode_oer; +oer_type_encoder_f NativeReal_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f NativeReal_decode_uper; +per_type_encoder_f NativeReal_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f NativeReal_decode_aper; +per_type_encoder_f NativeReal_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f NativeReal_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_NativeReal_H */ diff --git a/e2sim/asn1c/NativeReal_aper.c b/e2sim/asn1c/NativeReal_aper.c new file mode 100644 index 0000000..27f0f1d --- /dev/null +++ b/e2sim/asn1c/NativeReal_aper.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_dec_rval_t +NativeReal_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **dbl_ptr, asn_per_data_t *pd) { + double *Dbl = (double *)*dbl_ptr; + asn_dec_rval_t rval; + REAL_t tmp; + void *ptmp = &tmp; + int ret; + + (void)constraints; + + /* + * If the structure is not there, allocate it. + */ + if(Dbl == NULL) { + *dbl_ptr = CALLOC(1, sizeof(*Dbl)); + Dbl = (double *)*dbl_ptr; + if(Dbl == NULL) + ASN__DECODE_FAILED; + } + + memset(&tmp, 0, sizeof(tmp)); + rval = OCTET_STRING_decode_aper(opt_codec_ctx, td, NULL, + &ptmp, pd); + if(rval.code != RC_OK) { + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp); + return rval; + } + + ret = asn_REAL2double(&tmp, Dbl); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp); + if(ret) ASN__DECODE_FAILED; + + return rval; +} + +asn_enc_rval_t +NativeReal_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + double Dbl = *(const double *)sptr; + asn_enc_rval_t erval = {0,0,0}; + REAL_t tmp; + + (void)constraints; + + /* Prepare a temporary clean structure */ + memset(&tmp, 0, sizeof(tmp)); + + if(asn_double2REAL(&tmp, Dbl)) + ASN__ENCODE_FAILED; + + /* Encode a DER REAL */ + erval = OCTET_STRING_encode_aper(td, NULL, &tmp, po); + if(erval.encoded == -1) + erval.structure_ptr = sptr; + + /* Free possibly allocated members of the temporary structure */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp); + + return erval; +} diff --git a/e2sim/asn1c/NativeReal_ber.c b/e2sim/asn1c/NativeReal_ber.c new file mode 100644 index 0000000..923c3df --- /dev/null +++ b/e2sim/asn1c/NativeReal_ber.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode REAL type. + */ +asn_dec_rval_t +NativeReal_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) { + asn_dec_rval_t rval; + ber_tlv_len_t length; + + ASN_DEBUG("Decoding %s as REAL (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; + assert(length >= 0); /* Ensured by ber_check_tags */ + + 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 REAL: buf_ptr, length + * Fill the Dbl, at the same time checking for overflow. + * If overflow occurred, return with RC_FAIL. + */ + { + uint8_t scratch[24]; /* Longer than %.16f in decimal */ + REAL_t tmp; + double d; + int ret; + + if((size_t)length < sizeof(scratch)) { + tmp.buf = scratch; + tmp.size = length; + } else { + /* This rarely happens: impractically long value */ + tmp.buf = CALLOC(1, length + 1); + tmp.size = length; + if(!tmp.buf) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + memcpy(tmp.buf, buf_ptr, length); + tmp.buf[length] = '\0'; + + ret = asn_REAL2double(&tmp, &d); + if(tmp.buf != scratch) FREEMEM(tmp.buf); + if(ret) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + if(NativeReal__set(td, sptr, d) < 0) + ASN__DECODE_FAILED; + } + + 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 the NativeReal using the standard REAL type DER encoder. + */ +asn_enc_rval_t +NativeReal_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) { + double d = NativeReal__get_double(td, sptr); + asn_enc_rval_t erval = {0,0,0}; + REAL_t tmp; + + /* Prepare a temporary clean structure */ + memset(&tmp, 0, sizeof(tmp)); + + if(asn_double2REAL(&tmp, d)) + ASN__ENCODE_FAILED; + + /* Encode a fake REAL */ + erval = der_encode_primitive(td, &tmp, tag_mode, tag, cb, app_key); + if(erval.encoded == -1) { + assert(erval.structure_ptr == &tmp); + erval.structure_ptr = sptr; + } + + /* Free possibly allocated members of the temporary structure */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp); + + return erval; +} diff --git a/e2sim/asn1c/NativeReal_jer.c b/e2sim/asn1c/NativeReal_jer.c new file mode 100644 index 0000000..9c62208 --- /dev/null +++ b/e2sim/asn1c/NativeReal_jer.c @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t + NativeReal_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + double d = NativeReal__get_double(td, sptr); + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + + er.encoded = REAL__dump(d, flags, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/NativeReal_print.c b/e2sim/asn1c/NativeReal_print.c new file mode 100644 index 0000000..1914696 --- /dev/null +++ b/e2sim/asn1c/NativeReal_print.c @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * REAL specific human-readable output. + */ +int +NativeReal_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + (void)ilevel; /* Unused argument */ + + if(sptr) { + double d = NativeReal__get_double(td, sptr); + return (REAL__dump(d, 0, cb, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} diff --git a/e2sim/asn1c/NativeReal_rfill.c b/e2sim/asn1c/NativeReal_rfill.c new file mode 100644 index 0000000..04153ea --- /dev/null +++ b/e2sim/asn1c/NativeReal_rfill.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_random_fill_result_t +NativeReal_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, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; +#ifndef INFINITY +#define INFINITY (1.0/0.0) +#endif +#ifndef NAN +#define NAN (0.0/0.0) +#endif + static const double double_values[] = { + -M_E, M_E, -M_PI, M_PI, /* Better precision than with floats */ + -1E+308, 1E+308, + /* 2^51 */ + -2251799813685248.0, 2251799813685248.0, + /* 2^52 */ + -4503599627370496.0, 4503599627370496.0, + /* 2^100 */ + -1267650600228229401496703205376.0, 1267650600228229401496703205376.0, + -DBL_MIN, DBL_MIN, + -DBL_MAX, DBL_MAX, +#ifdef DBL_TRUE_MIN + -DBL_TRUE_MIN, DBL_TRUE_MIN +#endif + }; + static const float float_values[] = { + 0, -0.0, -1, 1, -M_E, M_E, -3.14, 3.14, -M_PI, M_PI, -255, 255, + -FLT_MIN, FLT_MIN, + -FLT_MAX, FLT_MAX, +#ifdef FLT_TRUE_MIN + -FLT_TRUE_MIN, FLT_TRUE_MIN, +#endif + INFINITY, -INFINITY, NAN + }; + ssize_t float_set_size = NativeReal__float_size(td); + const size_t n_doubles = sizeof(double_values) / sizeof(double_values[0]); + const size_t n_floats = sizeof(float_values) / sizeof(float_values[0]); + double d; + + (void)constraints; + + if(max_length == 0) return result_skipped; + + if(float_set_size == sizeof(double) && asn_random_between(0, 1) == 0) { + d = double_values[asn_random_between(0, n_doubles - 1)]; + } else { + d = float_values[asn_random_between(0, n_floats - 1)]; + } + + if(NativeReal__set(td, sptr, d) < 0) { + return result_failed; + } + + result_ok.length = float_set_size; + return result_ok; +} diff --git a/e2sim/asn1c/NativeReal_uper.c b/e2sim/asn1c/NativeReal_uper.c new file mode 100644 index 0000000..78fc242 --- /dev/null +++ b/e2sim/asn1c/NativeReal_uper.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Decode REAL type using PER. + */ +asn_dec_rval_t +NativeReal_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 rval; + double d; + REAL_t tmp; + void *ptmp = &tmp; + int ret; + + (void)constraints; + + memset(&tmp, 0, sizeof(tmp)); + rval = OCTET_STRING_decode_uper(opt_codec_ctx, &asn_DEF_REAL, + NULL, &ptmp, pd); + if(rval.code != RC_OK) { + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp); + return rval; + } + + ret = asn_REAL2double(&tmp, &d); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp); + if(ret) ASN__DECODE_FAILED; + + if(NativeReal__set(td, sptr, d) < 0 ) + ASN__DECODE_FAILED; + + return rval; +} + +/* + * Encode the NativeReal using the OCTET STRING PER encoder. + */ +asn_enc_rval_t +NativeReal_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + double d = NativeReal__get_double(td, sptr); + asn_enc_rval_t erval = {0,0,0}; + REAL_t tmp; + + (void)constraints; + + /* Prepare a temporary clean structure */ + memset(&tmp, 0, sizeof(tmp)); + + if(asn_double2REAL(&tmp, d)) + ASN__ENCODE_FAILED; + + /* Encode a DER REAL */ + erval = OCTET_STRING_encode_uper(&asn_DEF_REAL, NULL, &tmp, po); + if(erval.encoded == -1) + erval.structure_ptr = sptr; + + /* Free possibly allocated members of the temporary structure */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp); + + return erval; +} diff --git a/e2sim/asn1c/NativeReal_xer.c b/e2sim/asn1c/NativeReal_xer.c new file mode 100644 index 0000000..21cbe66 --- /dev/null +++ b/e2sim/asn1c/NativeReal_xer.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode the chunk of XML text encoding REAL. + */ +asn_dec_rval_t +NativeReal_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) { + asn_dec_rval_t rval; + REAL_t st = { 0, 0 }; + REAL_t *stp = &st; + + rval = REAL_decode_xer(opt_codec_ctx, td, (void **)&stp, opt_mname, + buf_ptr, size); + if(rval.code == RC_OK) { + double d; + if(asn_REAL2double(&st, &d) || NativeReal__set(td, sptr, d) < 0) { + rval.code = RC_FAIL; + rval.consumed = 0; + } + } else { + /* Convert all errors into RC_FAIL */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &st); + return rval; +} + +asn_enc_rval_t +NativeReal_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) { + double d = NativeReal__get_double(td, sptr); + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + + er.encoded = REAL__dump(d, flags & XER_F_CANONICAL, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/NgENB-ID.c b/e2sim/asn1c/NgENB-ID.c new file mode 100644 index 0000000..9b07ba7 --- /dev/null +++ b/e2sim/asn1c/NgENB-ID.c @@ -0,0 +1,220 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "NgENB-ID.h" + +static int +memb_macroNgENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_shortMacroNgENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_longMacroNgENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_macroNgENB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_shortMacroNgENB_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_longMacroNgENB_ID_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_NgENB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_NgENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.macroNgENB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_macroNgENB_ID_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_macroNgENB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "macroNgENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.shortMacroNgENB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_shortMacroNgENB_ID_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_shortMacroNgENB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "shortMacroNgENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.longMacroNgENB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_longMacroNgENB_ID_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_longMacroNgENB_ID_constraint_1 + }, + 0, 0, /* No default value */ + "longMacroNgENB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_NgENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macroNgENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* shortMacroNgENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* longMacroNgENB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_NgENB_ID_specs_1 = { + sizeof(struct NgENB_ID), + offsetof(struct NgENB_ID, _asn_ctx), + offsetof(struct NgENB_ID, present), + sizeof(((struct NgENB_ID *)0)->present), + asn_MAP_NgENB_ID_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_NgENB_ID = { + "NgENB-ID", + "NgENB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NgENB_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_NgENB_ID_1, + 3, /* Elements count */ + &asn_SPC_NgENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/NgENB-ID.h b/e2sim/asn1c/NgENB-ID.h new file mode 100644 index 0000000..8a4987c --- /dev/null +++ b/e2sim/asn1c/NgENB-ID.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _NgENB_ID_H_ +#define _NgENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NgENB_ID_PR { + NgENB_ID_PR_NOTHING, /* No components present */ + NgENB_ID_PR_macroNgENB_ID, + NgENB_ID_PR_shortMacroNgENB_ID, + NgENB_ID_PR_longMacroNgENB_ID + /* Extensions may appear below */ + +} NgENB_ID_PR; + +/* NgENB-ID */ +typedef struct NgENB_ID { + NgENB_ID_PR present; + union NgENB_ID_u { + BIT_STRING_t macroNgENB_ID; + BIT_STRING_t shortMacroNgENB_ID; + BIT_STRING_t longMacroNgENB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NgENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NgENB_ID; +extern asn_CHOICE_specifics_t asn_SPC_NgENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_NgENB_ID_1[3]; +extern asn_per_constraints_t asn_PER_type_NgENB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NgENB_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/OBJECT_IDENTIFIER.c b/e2sim/asn1c/OBJECT_IDENTIFIER.c new file mode 100644 index 0000000..5cf2d60 --- /dev/null +++ b/e2sim/asn1c/OBJECT_IDENTIFIER.c @@ -0,0 +1,532 @@ +/*- + * 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 +#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, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OBJECT_IDENTIFIER_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, /* Implemented in terms of a string comparison */ +#if !defined(ASN_DISABLE_BER_SUPPORT) + ber_decode_primitive, + der_encode_primitive, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OBJECT_IDENTIFIER_decode_xer, + OBJECT_IDENTIFIER_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OBJECT_IDENTIFIER_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OBJECT_IDENTIFIER_decode_oer, + OBJECT_IDENTIFIER_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OBJECT_IDENTIFIER_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 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]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OBJECT_IDENTIFIER_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +OBJECT_IDENTIFIER_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + if(st && st->buf) { + if(st->size < 1) { + ASN__CTFAIL(app_key, td, sptr, + "%s: at least one numerical value " + "expected (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static ssize_t +OBJECT_IDENTIFIER_get_first_arcs(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *arc0, asn_oid_arc_t *arc1) { + asn_oid_arc_t value; + + ssize_t rd = OBJECT_IDENTIFIER_get_single_arc(arcbuf, arcbuf_len, &value); + if(rd <= 0) return rd; + + if(value >= 80) { + *arc0 = 2; + *arc1 = value - 80; + } else if(value >= 40) { + *arc0 = 1; + *arc1 = value - 40; + } else { + *arc0 = 0; + *arc1 = value; + } + + return rd; +} + +ssize_t +OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *ret_value) { + const uint8_t *b = arcbuf; + const uint8_t *arcend = arcbuf + arcbuf_len; /* End of arc */ + + if(arcbuf == arcend) { + return 0; + } else { + asn_oid_arc_t accum; + asn_oid_arc_t upper_limit = (ASN_OID_ARC_MAX >> 7); + /* When the value reaches "upper_limit", it can take */ + /* at most one more digit. If it exceeds "upper_limit" */ + /* but there are more digits - it's an Overflow condition */ + /* Gather all bits into the accumulator */ + for(accum = 0; b < arcend; b++) { + accum = (accum << 7) | (*b & ~0x80); + if((*b & 0x80) == 0) { // no more digits + if(accum <= ASN_OID_ARC_MAX) { + *ret_value = accum; + return 1 + (b - arcbuf); + } else { + errno = ERANGE; /* Overflow */ + return -1; + } + } else { // to make sure we aren't wrapping around + if(accum > upper_limit) { + errno = ERANGE; /* Overflow */ + return -1; + } + } + } + errno = EINVAL; + return -1; + } + +} + +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 = 0; + asn_oid_arc_t arc1 = 0; + 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; +} + +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 = 0; + asn_oid_arc_t arc1 = 0; + 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; +} diff --git a/e2sim/asn1c/OBJECT_IDENTIFIER.h b/e2sim/asn1c/OBJECT_IDENTIFIER.h new file mode 100644 index 0000000..f878055 --- /dev/null +++ b/e2sim/asn1c/OBJECT_IDENTIFIER.h @@ -0,0 +1,184 @@ +/* + * 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; + +ssize_t OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, + asn_app_consume_bytes_f *cb, + void *app_key); + +#define OBJECT_IDENTIFIER_free ASN__PRIMITIVE_TYPE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f OBJECT_IDENTIFIER_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define OBJECT_IDENTIFIER_compare OCTET_STRING_compare + +asn_constr_check_f OBJECT_IDENTIFIER_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_ber ber_decode_primitive +#define OBJECT_IDENTIFIER_encode_der der_encode_primitive +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer; +xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f OBJECT_IDENTIFIER_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_oer oer_decode_primitive +#define OBJECT_IDENTIFIER_encode_oer oer_encode_primitive +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_uper OCTET_STRING_decode_uper +#define OBJECT_IDENTIFIER_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_aper OCTET_STRING_decode_aper +#define OBJECT_IDENTIFIER_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f OBJECT_IDENTIFIER_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +/********************************** + * 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/e2sim/asn1c/OBJECT_IDENTIFIER_jer.c b/e2sim/asn1c/OBJECT_IDENTIFIER_jer.c new file mode 100644 index 0000000..f105f03 --- /dev/null +++ b/e2sim/asn1c/OBJECT_IDENTIFIER_jer.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + + +asn_enc_rval_t +OBJECT_IDENTIFIER_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) { + ASN__ENCODE_FAILED; + } + + er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/OBJECT_IDENTIFIER_print.c b/e2sim/asn1c/OBJECT_IDENTIFIER_print.c new file mode 100644 index 0000000..b0c3a9e --- /dev/null +++ b/e2sim/asn1c/OBJECT_IDENTIFIER_print.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; +} diff --git a/e2sim/asn1c/OBJECT_IDENTIFIER_rfill.c b/e2sim/asn1c/OBJECT_IDENTIFIER_rfill.c new file mode 100644 index 0000000..55093c8 --- /dev/null +++ b/e2sim/asn1c/OBJECT_IDENTIFIER_rfill.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * 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/e2sim/asn1c/OBJECT_IDENTIFIER_xer.c b/e2sim/asn1c/OBJECT_IDENTIFIER_xer.c new file mode 100644 index 0000000..706e51a --- /dev/null +++ b/e2sim/asn1c/OBJECT_IDENTIFIER_xer.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; + } + (void)chunk_end; + assert(endptr == chunk_end); + + if((size_t)num_arcs > sizeof(s_arcs)/sizeof(s_arcs[0])) { + arcs = (asn_oid_arc_t *)MALLOC(num_arcs * sizeof(asn_oid_arc_t)); + if(!arcs) return XPBD_SYSTEM_FAILURE; + ret = OBJECT_IDENTIFIER_parse_arcs((const char *)chunk_buf, chunk_size, + arcs, num_arcs, &endptr); + if(ret != num_arcs) + return XPBD_SYSTEM_FAILURE; /* assert?.. */ + } + + /* + * Convert arcs into BER representation. + */ + ret = OBJECT_IDENTIFIER_set_arcs(st, arcs, num_arcs); + if(arcs != s_arcs) FREEMEM(arcs); + + return ret ? XPBD_SYSTEM_FAILURE : XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +OBJECT_IDENTIFIER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname, + buf_ptr, size, OBJECT_IDENTIFIER__xer_body_decode); +} + +asn_enc_rval_t +OBJECT_IDENTIFIER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) { + ASN__ENCODE_FAILED; + } + + er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/OCTET_STRING.c b/e2sim/asn1c/OCTET_STRING.c new file mode 100644 index 0000000..d0bdead --- /dev/null +++ b/e2sim/asn1c/OCTET_STRING.c @@ -0,0 +1,383 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#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, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, /* Unaligned PER decoder */ + OCTET_STRING_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 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]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs +}; + +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; + + if(!td || !st) + return; + + ASN_DEBUG("Freeing %s as OCTET STRING", td->name); + + if(st->buf) { + FREEMEM(st->buf); + st->buf = 0; + } + +#if !defined(ASN_DISABLE_BER_SUPPORT) + const asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + + 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); + + /* + * Remove decode-time stack. + */ + struct _stack *stck; + stck = (struct _stack *)ctx->ptr; + if(stck) { + while(stck->tail) { + struct _stack_el *sel = stck->tail; + stck->tail = sel->prev; + FREEMEM(sel); + } + FREEMEM(stck); + } +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + + 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; + + (void)specs; + 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; + } + +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +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; +} + +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; +} +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ diff --git a/e2sim/asn1c/OCTET_STRING.h b/e2sim/asn1c/OCTET_STRING.h new file mode 100644 index 0000000..b1ace14 --- /dev/null +++ b/e2sim/asn1c/OCTET_STRING.h @@ -0,0 +1,165 @@ +/*- + * 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; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f OCTET_STRING_compare; + +#define OCTET_STRING_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f OCTET_STRING_decode_ber; +der_type_encoder_f OCTET_STRING_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +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; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f OCTET_STRING_encode_jer; +jer_type_encoder_f OCTET_STRING_encode_jer_utf8; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f OCTET_STRING_decode_oer; +oer_type_encoder_f OCTET_STRING_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f OCTET_STRING_decode_uper; +per_type_encoder_f OCTET_STRING_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f OCTET_STRING_decode_aper; +per_type_encoder_f OCTET_STRING_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f OCTET_STRING_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +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); + +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); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +/****************************** + * 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); + +#if !defined(ASN_DISABLE_BER_SUPPORT) +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; +}; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/e2sim/asn1c/OCTET_STRING_aper.c b/e2sim/asn1c/OCTET_STRING_aper.c new file mode 100644 index 0000000..0373fe6 --- /dev/null +++ b/e2sim/asn1c/OCTET_STRING_aper.c @@ -0,0 +1,414 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +#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_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_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 %lld .. %lld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + (long long int)csiz->lower_bound, (long long int)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; + /* X.691 #16 NOTE 1 for fixed length (<= 16 bits) strings */ + if (st->size > 2 || csiz->range_bits != 0) { + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + if(bpc) { + ASN_DEBUG("Decoding OCTET STRING size %lld", + (long long int)csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, + bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Decoding BIT STRING size %lld", + (long long int)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; + + repeat = 0; + /* Get the PER length */ + if (csiz->upper_bound - csiz->lower_bound == 0) + /* Indefinite length case */ + raw_len = aper_get_length(pd, -1, -1, csiz->effective_bits, &repeat); + else + raw_len = aper_get_length(pd, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + raw_len += csiz->lower_bound; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + + /* X.691 #16 NOTE 1 for fixed length (<=16 bits) strings */ + if ((raw_len > 2) || (csiz->upper_bound > 2) || (csiz->range_bits != 0)) + { + 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" + " (%lld..%lld, effective %d)%s", + td->name, sizeinunits, unit_bits, + (long long int)csiz->lower_bound, + (long long int)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 %zu bytes (%lld), length in %d bits", + st->size, (long long int)(sizeinunits - csiz->lower_bound), + csiz->effective_bits); + if (csiz->effective_bits > 0) { + ret = aper_put_length(po, csiz->lower_bound, csiz->upper_bound, + sizeinunits - csiz->lower_bound, NULL); + if(ret < 0) ASN__ENCODE_FAILED; + } + if (csiz->effective_bits > 0 || (st->size > 2) + || (csiz->upper_bound > (2 * 8 / unit_bits)) + || (csiz->range_bits != 0)) + { /* X.691 #16 NOTE 1 for fixed length (<=16 bits) strings*/ + 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 %zu bytes", st->size); + + if(sizeinunits == 0) { + if(aper_put_length(po, -1, -1, 0, NULL) < 0) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + int need_eom = 0; + ssize_t maySave = aper_put_length(po, -1, -1, sizeinunits, &need_eom); + + 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); + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/OCTET_STRING_ber.c b/e2sim/asn1c/OCTET_STRING_ber.c new file mode 100644 index 0000000..9530eae --- /dev/null +++ b/e2sim/asn1c/OCTET_STRING_ber.c @@ -0,0 +1,525 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +#undef _CH_PHASE +#define _CH_PHASE(ctx, inc) do {\ + if(ctx->phase == 0)\ + ctx->context = 0;\ + ctx->phase += inc;\ + } while(0) + +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) +#undef PREV_PHASE +#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 acquired skill everywhere afterwards. + * No, I am not going to explain what the following stuff is. + */ +static struct _stack_el * +OS__add_stack_el(struct _stack *st) { + struct _stack_el *nel; + + /* + * Reuse the old stack frame or allocate a new one. + */ + if(st->cur_ptr && st->cur_ptr->next) { + nel = st->cur_ptr->next; + nel->bits_chopped = 0; + nel->got = 0; + /* Retain the nel->cont_level, it's correct. */ + } else { + nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); + if(nel == NULL) + return NULL; + + if(st->tail) { + /* Increase a subcontainment depth */ + nel->cont_level = st->tail->cont_level + 1; + st->tail->next = nel; + } + nel->prev = st->tail; + st->tail = nel; + } + + st->cur_ptr = nel; + + return nel; +} + +static struct _stack * +_new_stack(void) { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + asn_dec_rval_t rval; + asn_struct_ctx_t *ctx; + ssize_t consumed_myself = 0; + struct _stack *stck; /* Expectations stack structure */ + struct _stack_el *sel = 0; /* Stack element */ + int tlv_constr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + + ASN_DEBUG("Decoding %s as %s (frame %ld)", + td->name, + (type_variant == ASN_OSUBV_STR) ? + "OCTET STRING" : "OS-SpecialCase", + (long)size); + + /* + * Create the string if does not exist. + */ + if(st == NULL) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) RETURN(RC_FAIL); + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + switch(ctx->phase) { + case 0: + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, ctx, + buf_ptr, size, tag_mode, -1, + &ctx->left, &tlv_constr); + if(rval.code != RC_OK) + return rval; + + if(tlv_constr) { + /* + * Complex operation, requires stack of expectations. + */ + ctx->ptr = _new_stack(); + if(!ctx->ptr) { + RETURN(RC_FAIL); + } + } else { + /* + * Jump into stackless primitive decoding. + */ + _CH_PHASE(ctx, 3); + if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) + APPEND(buf_ptr, rval.consumed); + ADVANCE(rval.consumed); + goto phase3; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + phase1: + /* + * Fill the stack with expectations. + */ + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + do { + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_tag_t expected_tag; + ssize_t tl, ll, tlvl; + /* This one works even if (sel->left == -1) */ + size_t Left = ((!sel||(size_t)sel->left >= size) + ?size:(size_t)sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)(sel?sel->got:0) + ); + if(sel && sel->left <= 0 && sel->want_nulls == 0) { + if(sel->prev) { + struct _stack_el *prev = sel->prev; + if(prev->left != -1) { + if(prev->left < sel->got) + RETURN(RC_FAIL); + prev->left -= sel->got; + } + prev->got += sel->got; + sel = stck->cur_ptr = prev; + if(!sel) break; + tlv_constr = 1; + continue; + } else { + sel = stck->cur_ptr = 0; + break; /* Nothing to wait */ + } + } + + tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); + ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", + (long)size, (long)Left, sel?"":"!", + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)tl); + switch(tl) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); + + ll = ber_fetch_length(tlv_constr, + (const char *)buf_ptr + tl,Left - tl,&tlv_len); + ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", + ber_tlv_tag_string(tlv_tag), tlv_constr, + (long)Left, (long)tl, (long)tlv_len, (long)ll); + switch(ll) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + if(sel && sel->want_nulls + && ((const uint8_t *)buf_ptr)[0] == 0 + && ((const uint8_t *)buf_ptr)[1] == 0) + { + ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); + + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND("\0\0", 2); + + ADVANCE(2); + sel->got += 2; + if(sel->left != -1) { + sel->left -= 2; /* assert(sel->left >= 2) */ + } + + sel->want_nulls--; + if(sel->want_nulls == 0) { + /* Move to the next expectation */ + sel->left = 0; + tlv_constr = 1; + } + + continue; + } + + /* + * Set up expected tags, + * depending on ASN.1 type being decoded. + */ + switch(type_variant) { + case ASN_OSUBV_BIT: + /* X.690: 8.6.4.1, NOTE 2 */ + /* Fall through */ + case ASN_OSUBV_STR: + default: + if(sel) { + unsigned level = sel->cont_level; + if(level < td->all_tags_count) { + expected_tag = td->all_tags[level]; + break; + } else if(td->all_tags_count) { + expected_tag = td->all_tags + [td->all_tags_count - 1]; + break; + } + /* else, Fall through */ + } + /* Fall through */ + case ASN_OSUBV_ANY: + expected_tag = tlv_tag; + break; + } + + if(tlv_tag != expected_tag) { + char buf[2][32]; + ber_tlv_tag_snprint(tlv_tag, + buf[0], sizeof(buf[0])); + ber_tlv_tag_snprint(td->tags[td->tags_count-1], + buf[1], sizeof(buf[1])); + ASN_DEBUG("Tag does not match expectation: %s != %s", + buf[0], buf[1]); + RETURN(RC_FAIL); + } + + tlvl = tl + ll; /* Combined length of T and L encoding */ + if((tlv_len + tlvl) < 0) { + /* tlv_len value is too big */ + ASN_DEBUG("TLV encoding + length (%ld) is too big", + (long)tlv_len); + RETURN(RC_FAIL); + } + + /* + * Append a new expectation. + */ + sel = OS__add_stack_el(stck); + if(!sel) RETURN(RC_FAIL); + + sel->tag = tlv_tag; + + sel->want_nulls = (tlv_len==-1); + if(sel->prev && sel->prev->left != -1) { + /* Check that the parent frame is big enough */ + if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) + RETURN(RC_FAIL); + if(tlv_len == -1) + sel->left = sel->prev->left - tlvl; + else + sel->left = tlv_len; + } else { + sel->left = tlv_len; + } + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND(buf_ptr, tlvl); + sel->got += tlvl; + ADVANCE(tlvl); + + ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", + (long)sel->got, (long)sel->left, + sel->want_nulls, sel->cont_level); + + } while(tlv_constr); + if(sel == NULL) { + /* Finished operation, "phase out" */ + ASN_DEBUG("Phase out"); + _CH_PHASE(ctx, +3); + break; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 2: + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", + (long)sel->left, (long)size, (long)sel->got, + sel->want_nulls); + { + ber_tlv_len_t len; + + assert(sel->left >= 0); + + len = ((ber_tlv_len_t)size < sel->left) + ? (ber_tlv_len_t)size : sel->left; + if(len > 0) { + if(type_variant == ASN_OSUBV_BIT + && sel->bits_chopped == 0) { + /* Put the unused-bits-octet away */ + st->bits_unused = *(const uint8_t *)buf_ptr; + APPEND(((const char *)buf_ptr+1), (len - 1)); + sel->bits_chopped = 1; + } else { + APPEND(buf_ptr, len); + } + ADVANCE(len); + sel->left -= len; + sel->got += len; + } + + if(sel->left) { + ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", + (long)sel->left, (long)size, sel->want_nulls); + RETURN(RC_WMORE); + } + + PREV_PHASE(ctx); + goto phase1; + } + break; + case 3: + phase3: + /* + * Primitive form, no stack required. + */ + assert(ctx->left >= 0); + + if(size < (size_t)ctx->left) { + if(!size) RETURN(RC_WMORE); + if(type_variant == ASN_OSUBV_BIT && !ctx->context) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, size); + assert(ctx->context > 0); + ctx->left -= size; + ADVANCE(size); + RETURN(RC_WMORE); + } else { + if(type_variant == ASN_OSUBV_BIT + && !ctx->context && ctx->left) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, ctx->left); + ADVANCE(ctx->left); + ctx->left = 0; + + NEXT_PHASE(ctx); + } + break; + } + + if(sel) { + ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", + (void *)sel->prev, sel->want_nulls, + (long)sel->left, (long)sel->got, (long)size); + if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { + RETURN(RC_WMORE); + } + } + + /* + * BIT STRING-specific processing. + */ + if(type_variant == ASN_OSUBV_BIT) { + if(st->size) { + if(st->bits_unused < 0 || st->bits_unused > 7) { + RETURN(RC_FAIL); + } + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } else { + if(st->bits_unused) { + RETURN(RC_FAIL); + } + } + } + + ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", + (long)consumed_myself, td->name, + (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", + (long)st->size); + + + RETURN(RC_OK); +} + +/* + * Encode OCTET STRING type using DER. + */ +asn_enc_rval_t +OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 0, 0, 0 }; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + int fix_last_byte = 0; + + ASN_DEBUG("%s %s as OCTET STRING", + cb?"Estimating":"Encoding", td->name); + + /* + * Write tags. + */ + if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { + er.encoded = der_write_tags(td, + (type_variant == ASN_OSUBV_BIT) + st->size, + tag_mode, type_variant == ASN_OSUBV_ANY, tag, + cb, app_key); + if(er.encoded == -1) { + er.failed_type = td; + er.structure_ptr = sptr; + return er; + } + } else { + /* Disallow: [] IMPLICIT ANY */ + assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); + er.encoded = 0; + } + + if(!cb) { + er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; + ASN__ENCODED_OK(er); + } + + /* + * Prepare to deal with the last octet of BIT STRING. + */ + if(type_variant == ASN_OSUBV_BIT) { + uint8_t b = st->bits_unused & 0x07; + if(b && st->size) fix_last_byte = 1; + ASN__CALLBACK(&b, 1); + } + + /* Invoke callback for the main part of the buffer */ + ASN__CALLBACK(st->buf, st->size - fix_last_byte); + + /* The last octet should be stripped off the unused bits */ + if(fix_last_byte) { + uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); + ASN__CALLBACK(&b, 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/e2sim/asn1c/OCTET_STRING_jer.c b/e2sim/asn1c/OCTET_STRING_jer.c new file mode 100644 index 0000000..19b4fc3 --- /dev/null +++ b/e2sim/asn1c/OCTET_STRING_jer.c @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +asn_enc_rval_t +OCTET_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + 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__CALLBACK3("\"", 1, scratch, p-scratch, "\"", 1); /* 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__jer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__jer_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"), /* > */ +}; + +asn_enc_rval_t +OCTET_STRING_encode_jer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__jer_escape_table) + / sizeof(OCTET_STRING__jer_escape_table[0]) + && (s_len = OCTET_STRING__jer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__jer_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); +} + diff --git a/e2sim/asn1c/OCTET_STRING_print.c b/e2sim/asn1c/OCTET_STRING_print.c new file mode 100644 index 0000000..6daa33e --- /dev/null +++ b/e2sim/asn1c/OCTET_STRING_print.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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 == NULL)? NULL : 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; + } +} diff --git a/e2sim/asn1c/OCTET_STRING_rfill.c b/e2sim/asn1c/OCTET_STRING_rfill.c new file mode 100644 index 0000000..5c8b064 --- /dev/null +++ b/e2sim/asn1c/OCTET_STRING_rfill.c @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * 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); + } +} + +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 !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 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; + } + } +#else + if(!constraints) constraints = &td->encoding_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + + 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; +} + +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 !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 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 { +#else + if(!constraints) constraints = &td->encoding_constraints; + { +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + if(rnd_len > max_length) { + rnd_len = asn_random_between(0, max_length); + } + } + + return rnd_len; +} diff --git a/e2sim/asn1c/OCTET_STRING_uper.c b/e2sim/asn1c/OCTET_STRING_uper.c new file mode 100644 index 0000000..80130ca --- /dev/null +++ b/e2sim/asn1c/OCTET_STRING_uper.c @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +#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_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); +} diff --git a/e2sim/asn1c/OCTET_STRING_xer.c b/e2sim/asn1c/OCTET_STRING_xer.c new file mode 100644 index 0000000..490f362 --- /dev/null +++ b/e2sim/asn1c/OCTET_STRING_xer.c @@ -0,0 +1,627 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +asn_enc_rval_t +OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + if(flags & XER_F_CANONICAL) { + char *scend = scratch + (sizeof(scratch) - 2); + for(; buf < end; buf++) { + if(p >= scend) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + ASN__TEXT_INDENT(1, ilevel); + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + if(p - scratch) { + p--; /* Remove the tail space */ + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + if(st->size > 16) + ASN__TEXT_INDENT(1, ilevel-1); + } + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__xer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__xer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +static int +OS__check_escaped_control_char(const void *buf, int size) { + size_t i; + /* + * Inefficient algorithm which translates the escape sequences + * defined above into characters. Returns -1 if not found. + * TODO: replace by a faster algorithm (bsearch(), hash or + * nested table lookups). + */ + for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { + const struct OCTET_STRING__xer_escape_table_s *el; + el = &OCTET_STRING__xer_escape_table[i]; + if(el->size == size && memcmp(buf, el->string, size) == 0) + return i; + } + return -1; +} + +static int +OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { + /* + * This might be one of the escape sequences + * for control characters. Check it out. + * #11.15.5 + */ + int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); + if(control_char >= 0) { + OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; + void *p = REALLOC(st->buf, st->size + 2); + if(p) { + st->buf = (uint8_t *)p; + st->buf[st->size++] = control_char; + st->buf[st->size] = '\0'; /* nul-termination */ + return 0; + } + } + + return -1; /* No, it's not */ +} + +asn_enc_rval_t +OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__xer_escape_table) + / sizeof(OCTET_STRING__xer_escape_table[0]) + && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + +/* + * Convert from hexadecimal format (cstring): "AB CD EF" + */ +static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *chunk_stop = (const char *)chunk_buf; + const char *p = chunk_stop; + const char *pend = p + chunk_size; + unsigned int clv = 0; + int half = 0; /* Half bit */ + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * If something like " a b c " appears here, the " a b":3 will be + * converted, and the rest skipped. That is, unless buf_size is greater + * than chunk_size, then it'll be equivalent to "ABC0". + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + continue; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + clv = (clv << 4) + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + clv = (clv << 4) + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + clv = (clv << 4) + (ch - 0x61 + 10); + break; + default: + *buf = 0; /* JIC */ + return -1; + } + if(half++) { + half = 0; + *buf++ = clv; + chunk_stop = p + 1; + } + } + + /* + * Check partial decoding. + */ + if(half) { + if(have_more) { + /* + * Partial specification is fine, + * because no more more PXER_TEXT data is available. + */ + *buf++ = clv << 4; + chunk_stop = p; + } + } else { + chunk_stop = p; + } + + st->size = buf - st->buf; /* Adjust the buffer size */ + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return (chunk_stop - (const char *)chunk_buf); /* Converted size */ +} + +/* + * Convert from binary format: "00101011101" + */ +static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + BIT_STRING_t *st = (BIT_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = (p == NULL)? NULL : 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); +} diff --git a/e2sim/asn1c/OPEN_TYPE.c b/e2sim/asn1c/OPEN_TYPE.c new file mode 100644 index 0000000..c9afecf --- /dev/null +++ b/e2sim/asn1c/OPEN_TYPE.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_TYPE_operation_t asn_OP_OPEN_TYPE = { + OPEN_TYPE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OPEN_TYPE_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OPEN_TYPE_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OPEN_TYPE_decode_ber, + OPEN_TYPE_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OPEN_TYPE_decode_xer, + OPEN_TYPE_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OPEN_TYPE_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OPEN_TYPE_decode_oer, + OPEN_TYPE_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OPEN_TYPE_decode_uper, + OPEN_TYPE_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OPEN_TYPE_decode_aper, + OPEN_TYPE_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + 0, /* Random fill is not supported for open type */ +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; diff --git a/e2sim/asn1c/OPEN_TYPE.h b/e2sim/asn1c/OPEN_TYPE.h new file mode 100644 index 0000000..5e97977 --- /dev/null +++ b/e2sim/asn1c/OPEN_TYPE.h @@ -0,0 +1,117 @@ +/*- + * 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 +///////////#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Decode an Open Type which is potentially constraiend + * by the other members of the parent structure. + */ + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#define OPEN_TYPE_free CHOICE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define OPEN_TYPE_print CHOICE_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define OPEN_TYPE_compare CHOICE_compare + +#define OPEN_TYPE_constraint CHOICE_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +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); +#define OPEN_TYPE_decode_ber NULL +#define OPEN_TYPE_encode_der CHOICE_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +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); +#define OPEN_TYPE_decode_xer NULL +#define OPEN_TYPE_encode_xer CHOICE_encode_xer +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define OPEN_TYPE_encode_jer CHOICE_encode_jer +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +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); +#define OPEN_TYPE_decode_oer NULL +#define OPEN_TYPE_encode_oer CHOICE_encode_oer +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +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); +#define OPEN_TYPE_decode_uper NULL +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); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +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); +#define OPEN_TYPE_decode_aper NULL +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); + +int OPEN_TYPE_aper_is_unknown_type( + const asn_TYPE_descriptor_t *td, + void *sptr, + const asn_TYPE_member_t *elm); + +asn_dec_rval_t OPEN_TYPE_aper_unknown_type_discard_bytes( + asn_per_data_t *pd); +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_OPEN_TYPE_H */ diff --git a/e2sim/asn1c/OPEN_TYPE_aper.c b/e2sim/asn1c/OPEN_TYPE_aper.c new file mode 100644 index 0000000..3e2ab18 --- /dev/null +++ b/e2sim/asn1c/OPEN_TYPE_aper.c @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +int OPEN_TYPE_aper_is_unknown_type(const asn_TYPE_descriptor_t *td, void *sptr, const asn_TYPE_member_t *elm) { + asn_type_selector_result_t selected; + + if(!elm->type_selector) { + return 1; + } + else { + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + return 1; + } + } + return 0; +} + +asn_dec_rval_t +OPEN_TYPE_aper_unknown_type_discard_bytes (asn_per_data_t *pd) { +#define ASN_DUMMY_BYTES 256 + unsigned char dummy[ASN_DUMMY_BYTES], *dummy_ptr = NULL; + ssize_t bytes; + int repeat; + asn_dec_rval_t rv; + + rv.consumed = 0; + rv.code = RC_FAIL; + + do { + bytes = aper_get_length(pd, -1, -1, -1, &repeat); + if (bytes > 10 * ASN_DUMMY_BYTES) + { + return rv; + } + else if (bytes > ASN_DUMMY_BYTES) + { + dummy_ptr = CALLOC(1, bytes); + if (!dummy_ptr) + return rv; + } + + per_get_many_bits(pd, (dummy_ptr ? dummy_ptr : dummy), 0, bytes << 3); + + if (dummy_ptr) + { + FREEMEM(dummy_ptr); + dummy_ptr = NULL; + } + } while (repeat); + + rv.code = RC_OK; + return rv; +#undef ASN_DUMMY_BYTES +} diff --git a/e2sim/asn1c/OPEN_TYPE_ber.c b/e2sim/asn1c/OPEN_TYPE_ber.c new file mode 100644 index 0000000..7d89480 --- /dev/null +++ b/e2sim/asn1c/OPEN_TYPE_ber.c @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +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; +} diff --git a/e2sim/asn1c/OPEN_TYPE_uper.c b/e2sim/asn1c/OPEN_TYPE_uper.c new file mode 100644 index 0000000..2f27bb9 --- /dev/null +++ b/e2sim/asn1c/OPEN_TYPE_uper.c @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/OPEN_TYPE_xer.c b/e2sim/asn1c/OPEN_TYPE_xer.c new file mode 100644 index 0000000..fc38562 --- /dev/null +++ b/e2sim/asn1c/OPEN_TYPE_xer.c @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +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; +} diff --git a/e2sim/asn1c/ObjectDescriptor.c b/e2sim/asn1c/ObjectDescriptor.c new file mode 100644 index 0000000..c311a92 --- /dev/null +++ b/e2sim/asn1c/ObjectDescriptor.c @@ -0,0 +1,91 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * ObjectDescriptor basic type description. + */ +static const ber_tlv_tag_t asn_DEF_ObjectDescriptor_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (7 << 2)), /* [UNIVERSAL 7] IMPLICIT ... */ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +asn_TYPE_operation_t asn_OP_ObjectDescriptor = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print_utf8, /* Treat as ASCII subset (it's not) */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer_utf8, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, + 0, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + 0, /* Not supported for ObjectDescriptor */ +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ObjectDescriptor = { + "ObjectDescriptor", + "ObjectDescriptor", + &asn_OP_ObjectDescriptor, + asn_DEF_ObjectDescriptor_tags, + sizeof(asn_DEF_ObjectDescriptor_tags) + / sizeof(asn_DEF_ObjectDescriptor_tags[0]) - 1, + asn_DEF_ObjectDescriptor_tags, + sizeof(asn_DEF_ObjectDescriptor_tags) + / sizeof(asn_DEF_ObjectDescriptor_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_unknown_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; diff --git a/e2sim/asn1c/ObjectDescriptor.h b/e2sim/asn1c/ObjectDescriptor.h new file mode 100644 index 0000000..852c45d --- /dev/null +++ b/e2sim/asn1c/ObjectDescriptor.h @@ -0,0 +1,54 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _ObjectDescriptor_H_ +#define _ObjectDescriptor_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef GraphicString_t ObjectDescriptor_t; /* Implemented via GraphicString */ + +extern asn_TYPE_descriptor_t asn_DEF_ObjectDescriptor; +extern asn_TYPE_operation_t asn_OP_ObjectDescriptor; + +#define ObjectDescriptor_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define ObjectDescriptor_print OCTET_STRING_print_utf8 +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define ObjectDescriptor_constraint asn_generic_unknown_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define ObjectDescriptor_decode_ber OCTET_STRING_decode_ber +#define ObjectDescriptor_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define ObjectDescriptor_decode_xer OCTET_STRING_decode_xer_utf8 +#define ObjectDescriptor_encode_xer OCTET_STRING_encode_xer_utf8 +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define ObjectDescriptor_encode_jer OCTET_STRING_encode_jer_utf8 +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define ObjectDescriptor_decode_uper OCTET_STRING_decode_uper +#define ObjectDescriptor_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define ObjectDescriptor_decode_aper OCTET_STRING_decode_aper +#define ObjectDescriptor_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectDescriptor_H_ */ diff --git a/e2sim/asn1c/PLMN-Identity.c b/e2sim/asn1c/PLMN-Identity.c new file mode 100644 index 0000000..1a15c0e --- /dev/null +++ b/e2sim/asn1c/PLMN-Identity.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "PLMN-Identity.h" + +int +PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = { + "PLMN-Identity", + "PLMN-Identity", + &asn_OP_OCTET_STRING, + asn_DEF_PLMN_Identity_tags_1, + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + asn_DEF_PLMN_Identity_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PLMN_Identity_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PLMN_Identity_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/PLMN-Identity.h b/e2sim/asn1c/PLMN-Identity.h new file mode 100644 index 0000000..29df23e --- /dev/null +++ b/e2sim/asn1c/PLMN-Identity.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _PLMN_Identity_H_ +#define _PLMN_Identity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMN-Identity */ +typedef OCTET_STRING_t PLMN_Identity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity; +asn_struct_free_f PLMN_Identity_free; +asn_struct_print_f PLMN_Identity_print; +asn_constr_check_f PLMN_Identity_constraint; +ber_type_decoder_f PLMN_Identity_decode_ber; +der_type_encoder_f PLMN_Identity_encode_der; +xer_type_decoder_f PLMN_Identity_decode_xer; +xer_type_encoder_f PLMN_Identity_encode_xer; +jer_type_encoder_f PLMN_Identity_encode_jer; +per_type_decoder_f PLMN_Identity_decode_uper; +per_type_encoder_f PLMN_Identity_encode_uper; +per_type_decoder_f PLMN_Identity_decode_aper; +per_type_encoder_f PLMN_Identity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMN_Identity_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/PLMNIdentity.c b/e2sim/asn1c/PLMNIdentity.c new file mode 100644 index 0000000..e6ec291 --- /dev/null +++ b/e2sim/asn1c/PLMNIdentity.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "PLMNIdentity.h" + +int +PLMNIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PLMNIdentity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PLMNIdentity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PLMNIdentity = { + "PLMNIdentity", + "PLMNIdentity", + &asn_OP_OCTET_STRING, + asn_DEF_PLMNIdentity_tags_1, + sizeof(asn_DEF_PLMNIdentity_tags_1) + /sizeof(asn_DEF_PLMNIdentity_tags_1[0]), /* 1 */ + asn_DEF_PLMNIdentity_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMNIdentity_tags_1) + /sizeof(asn_DEF_PLMNIdentity_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PLMNIdentity_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PLMNIdentity_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/PLMNIdentity.h b/e2sim/asn1c/PLMNIdentity.h new file mode 100644 index 0000000..56784ac --- /dev/null +++ b/e2sim/asn1c/PLMNIdentity.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _PLMNIdentity_H_ +#define _PLMNIdentity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMNIdentity */ +typedef OCTET_STRING_t PLMNIdentity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PLMNIdentity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PLMNIdentity; +asn_struct_free_f PLMNIdentity_free; +asn_struct_print_f PLMNIdentity_print; +asn_constr_check_f PLMNIdentity_constraint; +ber_type_decoder_f PLMNIdentity_decode_ber; +der_type_encoder_f PLMNIdentity_encode_der; +xer_type_decoder_f PLMNIdentity_decode_xer; +xer_type_encoder_f PLMNIdentity_encode_xer; +jer_type_encoder_f PLMNIdentity_encode_jer; +per_type_decoder_f PLMNIdentity_decode_uper; +per_type_encoder_f PLMNIdentity_encode_uper; +per_type_decoder_f PLMNIdentity_decode_aper; +per_type_encoder_f PLMNIdentity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMNIdentity_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/Presence.c b/e2sim/asn1c/Presence.c new file mode 100644 index 0000000..4168e14 --- /dev/null +++ b/e2sim/asn1c/Presence.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "Presence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Presence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = { + { 0, 8, "optional" }, + { 1, 11, "conditional" }, + { 2, 9, "mandatory" } +}; +static const unsigned int asn_MAP_Presence_enum2value_1[] = { + 1, /* conditional(1) */ + 2, /* mandatory(2) */ + 0 /* optional(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = { + asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Presence_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Presence = { + "Presence", + "Presence", + &asn_OP_NativeEnumerated, + asn_DEF_Presence_tags_1, + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + asn_DEF_Presence_tags_1, /* Same as above */ + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Presence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Presence_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/Presence.h b/e2sim/asn1c/Presence.h new file mode 100644 index 0000000..fffe860 --- /dev/null +++ b/e2sim/asn1c/Presence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _Presence_H_ +#define _Presence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Presence { + Presence_optional = 0, + Presence_conditional = 1, + Presence_mandatory = 2 +} e_Presence; + +/* Presence */ +typedef long Presence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Presence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Presence; +extern const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1; +asn_struct_free_f Presence_free; +asn_struct_print_f Presence_print; +asn_constr_check_f Presence_constraint; +ber_type_decoder_f Presence_decode_ber; +der_type_encoder_f Presence_encode_der; +xer_type_decoder_f Presence_decode_xer; +xer_type_encoder_f Presence_encode_xer; +jer_type_encoder_f Presence_encode_jer; +per_type_decoder_f Presence_decode_uper; +per_type_encoder_f Presence_encode_uper; +per_type_decoder_f Presence_decode_aper; +per_type_encoder_f Presence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Presence_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/PrintableString.c b/e2sim/asn1c/PrintableString.c new file mode 100644 index 0000000..f046f12 --- /dev/null +++ b/e2sim/asn1c/PrintableString.c @@ -0,0 +1,165 @@ +/*- + * 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 */ +}; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +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 +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_operation_t asn_OP_PrintableString = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print_utf8, /* ASCII subset */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer_utf8, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 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]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_DEF_PrintableString_per_constraints, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 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/e2sim/asn1c/PrintableString.h b/e2sim/asn1c/PrintableString.h new file mode 100644 index 0000000..c24861d --- /dev/null +++ b/e2sim/asn1c/PrintableString.h @@ -0,0 +1,56 @@ +/*- + * 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; + +#define PrintableString_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define PrintableString_print OCTET_STRING_print_utf8 +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define PrintableString_compare OCTET_STRING_compare + +asn_constr_check_f PrintableString_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define PrintableString_decode_ber OCTET_STRING_decode_ber +#define PrintableString_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8 +#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8 +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define PrintableString_encode_jer OCTET_STRING_encode_jer_utf8 +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define PrintableString_decode_uper OCTET_STRING_decode_uper +#define PrintableString_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define PrintableString_decode_aper OCTET_STRING_decode_aper +#define PrintableString_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _PrintableString_H_ */ diff --git a/e2sim/asn1c/ProcedureCode.c b/e2sim/asn1c/ProcedureCode.c new file mode 100644 index 0000000..fc8bdc4 --- /dev/null +++ b/e2sim/asn1c/ProcedureCode.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ProcedureCode.h" + +int +ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProcedureCode = { + "ProcedureCode", + "ProcedureCode", + &asn_OP_NativeInteger, + asn_DEF_ProcedureCode_tags_1, + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + asn_DEF_ProcedureCode_tags_1, /* Same as above */ + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProcedureCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ProcedureCode_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/ProcedureCode.h b/e2sim/asn1c/ProcedureCode.h new file mode 100644 index 0000000..2864da3 --- /dev/null +++ b/e2sim/asn1c/ProcedureCode.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ProcedureCode_H_ +#define _ProcedureCode_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProcedureCode */ +typedef long ProcedureCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode; +asn_struct_free_f ProcedureCode_free; +asn_struct_print_f ProcedureCode_print; +asn_constr_check_f ProcedureCode_constraint; +ber_type_decoder_f ProcedureCode_decode_ber; +der_type_encoder_f ProcedureCode_encode_der; +xer_type_decoder_f ProcedureCode_decode_xer; +xer_type_encoder_f ProcedureCode_encode_xer; +jer_type_encoder_f ProcedureCode_encode_jer; +per_type_decoder_f ProcedureCode_decode_uper; +per_type_encoder_f ProcedureCode_encode_uper; +per_type_decoder_f ProcedureCode_decode_aper; +per_type_encoder_f ProcedureCode_encode_aper; +#define ProcedureCode_id_E2setup ((ProcedureCode_t)1) +#define ProcedureCode_id_ErrorIndication ((ProcedureCode_t)2) +#define ProcedureCode_id_Reset ((ProcedureCode_t)3) +#define ProcedureCode_id_RICcontrol ((ProcedureCode_t)4) +#define ProcedureCode_id_RICindication ((ProcedureCode_t)5) +#define ProcedureCode_id_RICserviceQuery ((ProcedureCode_t)6) +#define ProcedureCode_id_RICserviceUpdate ((ProcedureCode_t)7) +#define ProcedureCode_id_RICsubscription ((ProcedureCode_t)8) +#define ProcedureCode_id_RICsubscriptionDelete ((ProcedureCode_t)9) +#define ProcedureCode_id_E2nodeConfigurationUpdate ((ProcedureCode_t)10) +#define ProcedureCode_id_E2connectionUpdate ((ProcedureCode_t)11) +#define ProcedureCode_id_RICsubscriptionDeleteRequired ((ProcedureCode_t)12) +#define ProcedureCode_id_E2removal ((ProcedureCode_t)13) +#define ProcedureCode_id_RICsubscriptionModification ((ProcedureCode_t)14) +#define ProcedureCode_id_RICsubscriptionModificationRequired ((ProcedureCode_t)15) +#define ProcedureCode_id_RICquery ((ProcedureCode_t)16) + +#ifdef __cplusplus +} +#endif + +#endif /* _ProcedureCode_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ProtocolIE-Container.c b/e2sim/asn1c/ProtocolIE-Container.c new file mode 100644 index 0000000..44e1857 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-Container.c @@ -0,0 +1,2272 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ProtocolIE-Container.h" + +#include "ProtocolIE-Field.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P10_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P11_constr_23 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P12_constr_25 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P13_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P14_constr_29 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P15_constr_31 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P16_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P17_constr_35 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P18_constr_37 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P19_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P20_constr_41 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P21_constr_43 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P22_constr_45 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P23_constr_47 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P24_constr_49 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P25_constr_51 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P26_constr_53 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P27_constr_55 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P28_constr_57 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P29_constr_59 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P30_constr_61 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P31_constr_63 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P32_constr_65 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P33_constr_67 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P34_constr_69 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P35_constr_71 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P36_constr_73 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P37_constr_75 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P38_constr_77 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P0_specs_1 = { + sizeof(struct ProtocolIE_Container_85P0), + offsetof(struct ProtocolIE_Container_85P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P0 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P0_tags_1, + sizeof(asn_DEF_ProtocolIE_Container_85P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_85P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_85P0_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P0_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P0_1, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P1_specs_3 = { + sizeof(struct ProtocolIE_Container_85P1), + offsetof(struct ProtocolIE_Container_85P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P1 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P1_tags_3, + sizeof(asn_DEF_ProtocolIE_Container_85P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_85P1_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P1_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_85P1_tags_3[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P1_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P1_3, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P2_specs_5 = { + sizeof(struct ProtocolIE_Container_85P2), + offsetof(struct ProtocolIE_Container_85P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P2 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P2_tags_5, + sizeof(asn_DEF_ProtocolIE_Container_85P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_85P2_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P2_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_85P2_tags_5[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P2_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P2_5, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P3_specs_7 = { + sizeof(struct ProtocolIE_Container_85P3), + offsetof(struct ProtocolIE_Container_85P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P3 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P3_tags_7, + sizeof(asn_DEF_ProtocolIE_Container_85P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_85P3_tags_7[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P3_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_85P3_tags_7[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P3_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P3_7, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P4_specs_9 = { + sizeof(struct ProtocolIE_Container_85P4), + offsetof(struct ProtocolIE_Container_85P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P4 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P4_tags_9, + sizeof(asn_DEF_ProtocolIE_Container_85P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_85P4_tags_9[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P4_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_85P4_tags_9[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P4_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P4_9, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P5_specs_11 = { + sizeof(struct ProtocolIE_Container_85P5), + offsetof(struct ProtocolIE_Container_85P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P5 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P5_tags_11, + sizeof(asn_DEF_ProtocolIE_Container_85P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_85P5_tags_11[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P5_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_85P5_tags_11[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P5_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P5_11, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequired_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P6_specs_13 = { + sizeof(struct ProtocolIE_Container_85P6), + offsetof(struct ProtocolIE_Container_85P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P6 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P6_tags_13, + sizeof(asn_DEF_ProtocolIE_Container_85P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_85P6_tags_13[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P6_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_85P6_tags_13[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P6_constr_13, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P6_13, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationRequest_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P7_specs_15 = { + sizeof(struct ProtocolIE_Container_85P7), + offsetof(struct ProtocolIE_Container_85P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P7 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P7_tags_15, + sizeof(asn_DEF_ProtocolIE_Container_85P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_85P7_tags_15[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P7_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_85P7_tags_15[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P7_constr_15, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P7_15, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationResponse_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P8_specs_17 = { + sizeof(struct ProtocolIE_Container_85P8), + offsetof(struct ProtocolIE_Container_85P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P8 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P8_tags_17, + sizeof(asn_DEF_ProtocolIE_Container_85P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_85P8_tags_17[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P8_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_85P8_tags_17[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P8_constr_17, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P8_17, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationFailure_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P9_specs_19 = { + sizeof(struct ProtocolIE_Container_85P9), + offsetof(struct ProtocolIE_Container_85P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P9 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P9_tags_19, + sizeof(asn_DEF_ProtocolIE_Container_85P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_85P9_tags_19[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P9_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_85P9_tags_19[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P9_constr_19, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P9_19, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P9_specs_19 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationRequired_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P10_specs_21 = { + sizeof(struct ProtocolIE_Container_85P10), + offsetof(struct ProtocolIE_Container_85P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P10 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P10_tags_21, + sizeof(asn_DEF_ProtocolIE_Container_85P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_85P10_tags_21[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P10_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_85P10_tags_21[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P10_constr_21, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P10_21, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P10_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationConfirm_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P11_specs_23 = { + sizeof(struct ProtocolIE_Container_85P11), + offsetof(struct ProtocolIE_Container_85P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P11 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P11_tags_23, + sizeof(asn_DEF_ProtocolIE_Container_85P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_85P11_tags_23[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P11_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_85P11_tags_23[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P11_constr_23, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P11_23, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P11_specs_23 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationRefuse_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P12_specs_25 = { + sizeof(struct ProtocolIE_Container_85P12), + offsetof(struct ProtocolIE_Container_85P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P12 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P12_tags_25, + sizeof(asn_DEF_ProtocolIE_Container_85P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_85P12_tags_25[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P12_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_85P12_tags_25[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P12_constr_25, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P12_25, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P12_specs_25 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P13_specs_27 = { + sizeof(struct ProtocolIE_Container_85P13), + offsetof(struct ProtocolIE_Container_85P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P13 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P13_tags_27, + sizeof(asn_DEF_ProtocolIE_Container_85P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_85P13_tags_27[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P13_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_85P13_tags_27[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P13_constr_27, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P13_27, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P13_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P14_specs_29 = { + sizeof(struct ProtocolIE_Container_85P14), + offsetof(struct ProtocolIE_Container_85P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P14 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P14_tags_29, + sizeof(asn_DEF_ProtocolIE_Container_85P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_85P14_tags_29[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P14_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_85P14_tags_29[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P14_constr_29, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P14_29, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P14_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P15_specs_31 = { + sizeof(struct ProtocolIE_Container_85P15), + offsetof(struct ProtocolIE_Container_85P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P15 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P15_tags_31, + sizeof(asn_DEF_ProtocolIE_Container_85P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_85P15_tags_31[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P15_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_85P15_tags_31[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P15_constr_31, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P15_31, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P15_specs_31 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P16_specs_33 = { + sizeof(struct ProtocolIE_Container_85P16), + offsetof(struct ProtocolIE_Container_85P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P16 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P16_tags_33, + sizeof(asn_DEF_ProtocolIE_Container_85P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_85P16_tags_33[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P16_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_85P16_tags_33[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P16_constr_33, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P16_33, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P16_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICQueryRequest_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P17_specs_35 = { + sizeof(struct ProtocolIE_Container_85P17), + offsetof(struct ProtocolIE_Container_85P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P17 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P17_tags_35, + sizeof(asn_DEF_ProtocolIE_Container_85P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_85P17_tags_35[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P17_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_85P17_tags_35[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P17_constr_35, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P17_35, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P17_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICQueryResponse_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P18_specs_37 = { + sizeof(struct ProtocolIE_Container_85P18), + offsetof(struct ProtocolIE_Container_85P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P18 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P18_tags_37, + sizeof(asn_DEF_ProtocolIE_Container_85P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_85P18_tags_37[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P18_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_85P18_tags_37[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P18_constr_37, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P18_37, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P18_specs_37 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICQueryFailure_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P19_specs_39 = { + sizeof(struct ProtocolIE_Container_85P19), + offsetof(struct ProtocolIE_Container_85P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P19 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P19_tags_39, + sizeof(asn_DEF_ProtocolIE_Container_85P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_85P19_tags_39[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P19_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_85P19_tags_39[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P19_constr_39, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P19_39, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P19_specs_39 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P20_41[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P20_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P20_specs_41 = { + sizeof(struct ProtocolIE_Container_85P20), + offsetof(struct ProtocolIE_Container_85P20, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P20 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P20_tags_41, + sizeof(asn_DEF_ProtocolIE_Container_85P20_tags_41) + /sizeof(asn_DEF_ProtocolIE_Container_85P20_tags_41[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P20_tags_41, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P20_tags_41) + /sizeof(asn_DEF_ProtocolIE_Container_85P20_tags_41[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P20_constr_41, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P20_41, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P20_specs_41 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P21_43[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupRequestIEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P21_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P21_specs_43 = { + sizeof(struct ProtocolIE_Container_85P21), + offsetof(struct ProtocolIE_Container_85P21, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P21 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P21_tags_43, + sizeof(asn_DEF_ProtocolIE_Container_85P21_tags_43) + /sizeof(asn_DEF_ProtocolIE_Container_85P21_tags_43[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P21_tags_43, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P21_tags_43) + /sizeof(asn_DEF_ProtocolIE_Container_85P21_tags_43[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P21_constr_43, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P21_43, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P21_specs_43 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P22_45[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupResponseIEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P22_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P22_specs_45 = { + sizeof(struct ProtocolIE_Container_85P22), + offsetof(struct ProtocolIE_Container_85P22, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P22 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P22_tags_45, + sizeof(asn_DEF_ProtocolIE_Container_85P22_tags_45) + /sizeof(asn_DEF_ProtocolIE_Container_85P22_tags_45[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P22_tags_45, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P22_tags_45) + /sizeof(asn_DEF_ProtocolIE_Container_85P22_tags_45[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P22_constr_45, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P22_45, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P22_specs_45 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P23_47[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupFailureIEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P23_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P23_specs_47 = { + sizeof(struct ProtocolIE_Container_85P23), + offsetof(struct ProtocolIE_Container_85P23, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P23 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P23_tags_47, + sizeof(asn_DEF_ProtocolIE_Container_85P23_tags_47) + /sizeof(asn_DEF_ProtocolIE_Container_85P23_tags_47[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P23_tags_47, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P23_tags_47) + /sizeof(asn_DEF_ProtocolIE_Container_85P23_tags_47[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P23_constr_47, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P23_47, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P23_specs_47 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P24_49[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdate_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P24_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P24_specs_49 = { + sizeof(struct ProtocolIE_Container_85P24), + offsetof(struct ProtocolIE_Container_85P24, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P24 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P24_tags_49, + sizeof(asn_DEF_ProtocolIE_Container_85P24_tags_49) + /sizeof(asn_DEF_ProtocolIE_Container_85P24_tags_49[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P24_tags_49, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P24_tags_49) + /sizeof(asn_DEF_ProtocolIE_Container_85P24_tags_49[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P24_constr_49, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P24_49, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P24_specs_49 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P25_51[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdateAck_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P25_tags_51[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P25_specs_51 = { + sizeof(struct ProtocolIE_Container_85P25), + offsetof(struct ProtocolIE_Container_85P25, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P25 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P25_tags_51, + sizeof(asn_DEF_ProtocolIE_Container_85P25_tags_51) + /sizeof(asn_DEF_ProtocolIE_Container_85P25_tags_51[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P25_tags_51, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P25_tags_51) + /sizeof(asn_DEF_ProtocolIE_Container_85P25_tags_51[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P25_constr_51, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P25_51, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P25_specs_51 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P26_53[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdateFailure_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P26_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P26_specs_53 = { + sizeof(struct ProtocolIE_Container_85P26), + offsetof(struct ProtocolIE_Container_85P26, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P26 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P26_tags_53, + sizeof(asn_DEF_ProtocolIE_Container_85P26_tags_53) + /sizeof(asn_DEF_ProtocolIE_Container_85P26_tags_53[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P26_tags_53, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P26_tags_53) + /sizeof(asn_DEF_ProtocolIE_Container_85P26_tags_53[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P26_constr_53, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P26_53, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P26_specs_53 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P27_55[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeConfigurationUpdate_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P27_tags_55[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P27_specs_55 = { + sizeof(struct ProtocolIE_Container_85P27), + offsetof(struct ProtocolIE_Container_85P27, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P27 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P27_tags_55, + sizeof(asn_DEF_ProtocolIE_Container_85P27_tags_55) + /sizeof(asn_DEF_ProtocolIE_Container_85P27_tags_55[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P27_tags_55, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P27_tags_55) + /sizeof(asn_DEF_ProtocolIE_Container_85P27_tags_55[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P27_constr_55, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P27_55, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P27_specs_55 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P28_57[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P28_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P28_specs_57 = { + sizeof(struct ProtocolIE_Container_85P28), + offsetof(struct ProtocolIE_Container_85P28, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P28 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P28_tags_57, + sizeof(asn_DEF_ProtocolIE_Container_85P28_tags_57) + /sizeof(asn_DEF_ProtocolIE_Container_85P28_tags_57[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P28_tags_57, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P28_tags_57) + /sizeof(asn_DEF_ProtocolIE_Container_85P28_tags_57[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P28_constr_57, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P28_57, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P28_specs_57 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P29_59[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeConfigurationUpdateFailure_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P29_tags_59[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P29_specs_59 = { + sizeof(struct ProtocolIE_Container_85P29), + offsetof(struct ProtocolIE_Container_85P29, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P29 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P29_tags_59, + sizeof(asn_DEF_ProtocolIE_Container_85P29_tags_59) + /sizeof(asn_DEF_ProtocolIE_Container_85P29_tags_59[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P29_tags_59, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P29_tags_59) + /sizeof(asn_DEF_ProtocolIE_Container_85P29_tags_59[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P29_constr_59, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P29_59, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P29_specs_59 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P30_61[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequestIEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P30_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P30_specs_61 = { + sizeof(struct ProtocolIE_Container_85P30), + offsetof(struct ProtocolIE_Container_85P30, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P30 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P30_tags_61, + sizeof(asn_DEF_ProtocolIE_Container_85P30_tags_61) + /sizeof(asn_DEF_ProtocolIE_Container_85P30_tags_61[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P30_tags_61, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P30_tags_61) + /sizeof(asn_DEF_ProtocolIE_Container_85P30_tags_61[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P30_constr_61, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P30_61, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P30_specs_61 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P31_63[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponseIEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P31_tags_63[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P31_specs_63 = { + sizeof(struct ProtocolIE_Container_85P31), + offsetof(struct ProtocolIE_Container_85P31, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P31 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P31_tags_63, + sizeof(asn_DEF_ProtocolIE_Container_85P31_tags_63) + /sizeof(asn_DEF_ProtocolIE_Container_85P31_tags_63[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P31_tags_63, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P31_tags_63) + /sizeof(asn_DEF_ProtocolIE_Container_85P31_tags_63[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P31_constr_63, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P31_63, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P31_specs_63 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P32_65[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P32_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P32_specs_65 = { + sizeof(struct ProtocolIE_Container_85P32), + offsetof(struct ProtocolIE_Container_85P32, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P32 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P32_tags_65, + sizeof(asn_DEF_ProtocolIE_Container_85P32_tags_65) + /sizeof(asn_DEF_ProtocolIE_Container_85P32_tags_65[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P32_tags_65, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P32_tags_65) + /sizeof(asn_DEF_ProtocolIE_Container_85P32_tags_65[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P32_constr_65, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P32_65, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P32_specs_65 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P33_67[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P33_tags_67[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P33_specs_67 = { + sizeof(struct ProtocolIE_Container_85P33), + offsetof(struct ProtocolIE_Container_85P33, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P33 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P33_tags_67, + sizeof(asn_DEF_ProtocolIE_Container_85P33_tags_67) + /sizeof(asn_DEF_ProtocolIE_Container_85P33_tags_67[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P33_tags_67, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P33_tags_67) + /sizeof(asn_DEF_ProtocolIE_Container_85P33_tags_67[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P33_constr_67, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P33_67, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P33_specs_67 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P34_69[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P34_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P34_specs_69 = { + sizeof(struct ProtocolIE_Container_85P34), + offsetof(struct ProtocolIE_Container_85P34, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P34 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P34_tags_69, + sizeof(asn_DEF_ProtocolIE_Container_85P34_tags_69) + /sizeof(asn_DEF_ProtocolIE_Container_85P34_tags_69[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P34_tags_69, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P34_tags_69) + /sizeof(asn_DEF_ProtocolIE_Container_85P34_tags_69[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P34_constr_69, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P34_69, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P34_specs_69 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P35_71[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery_IEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P35_tags_71[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P35_specs_71 = { + sizeof(struct ProtocolIE_Container_85P35), + offsetof(struct ProtocolIE_Container_85P35, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P35 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P35_tags_71, + sizeof(asn_DEF_ProtocolIE_Container_85P35_tags_71) + /sizeof(asn_DEF_ProtocolIE_Container_85P35_tags_71[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P35_tags_71, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P35_tags_71) + /sizeof(asn_DEF_ProtocolIE_Container_85P35_tags_71[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P35_constr_71, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P35_71, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P35_specs_71 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P36_73[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2RemovalRequestIEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P36_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P36_specs_73 = { + sizeof(struct ProtocolIE_Container_85P36), + offsetof(struct ProtocolIE_Container_85P36, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P36 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P36_tags_73, + sizeof(asn_DEF_ProtocolIE_Container_85P36_tags_73) + /sizeof(asn_DEF_ProtocolIE_Container_85P36_tags_73[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P36_tags_73, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P36_tags_73) + /sizeof(asn_DEF_ProtocolIE_Container_85P36_tags_73[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P36_constr_73, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P36_73, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P36_specs_73 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P37_75[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2RemovalResponseIEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P37_tags_75[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P37_specs_75 = { + sizeof(struct ProtocolIE_Container_85P37), + offsetof(struct ProtocolIE_Container_85P37, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P37 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P37_tags_75, + sizeof(asn_DEF_ProtocolIE_Container_85P37_tags_75) + /sizeof(asn_DEF_ProtocolIE_Container_85P37_tags_75[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P37_tags_75, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P37_tags_75) + /sizeof(asn_DEF_ProtocolIE_Container_85P37_tags_75[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P37_constr_75, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P37_75, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P37_specs_75 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P38_77[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2RemovalFailureIEs, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_85P38_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P38_specs_77 = { + sizeof(struct ProtocolIE_Container_85P38), + offsetof(struct ProtocolIE_Container_85P38, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P38 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_85P38_tags_77, + sizeof(asn_DEF_ProtocolIE_Container_85P38_tags_77) + /sizeof(asn_DEF_ProtocolIE_Container_85P38_tags_77[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_85P38_tags_77, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_85P38_tags_77) + /sizeof(asn_DEF_ProtocolIE_Container_85P38_tags_77[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_Container_85P38_constr_77, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtocolIE_Container_85P38_77, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_85P38_specs_77 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ProtocolIE-Container.h b/e2sim/asn1c/ProtocolIE-Container.h new file mode 100644 index 0000000..cea28a6 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-Container.h @@ -0,0 +1,462 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ProtocolIE_Container_H_ +#define _ProtocolIE_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubscriptionRequest_IEs; +struct RICsubscriptionResponse_IEs; +struct RICsubscriptionFailure_IEs; +struct RICsubscriptionDeleteRequest_IEs; +struct RICsubscriptionDeleteResponse_IEs; +struct RICsubscriptionDeleteFailure_IEs; +struct RICsubscriptionDeleteRequired_IEs; +struct RICsubscriptionModificationRequest_IEs; +struct RICsubscriptionModificationResponse_IEs; +struct RICsubscriptionModificationFailure_IEs; +struct RICsubscriptionModificationRequired_IEs; +struct RICsubscriptionModificationConfirm_IEs; +struct RICsubscriptionModificationRefuse_IEs; +struct RICindication_IEs; +struct RICcontrolRequest_IEs; +struct RICcontrolAcknowledge_IEs; +struct RICcontrolFailure_IEs; +struct RICQueryRequest_IEs; +struct RICQueryResponse_IEs; +struct RICQueryFailure_IEs; +struct ErrorIndication_IEs; +struct E2setupRequestIEs; +struct E2setupResponseIEs; +struct E2setupFailureIEs; +struct E2connectionUpdate_IEs; +struct E2connectionUpdateAck_IEs; +struct E2connectionUpdateFailure_IEs; +struct E2nodeConfigurationUpdate_IEs; +struct E2nodeConfigurationUpdateAcknowledge_IEs; +struct E2nodeConfigurationUpdateFailure_IEs; +struct ResetRequestIEs; +struct ResetResponseIEs; +struct RICserviceUpdate_IEs; +struct RICserviceUpdateAcknowledge_IEs; +struct RICserviceUpdateFailure_IEs; +struct RICserviceQuery_IEs; +struct E2RemovalRequestIEs; +struct E2RemovalResponseIEs; +struct E2RemovalFailureIEs; + +/* ProtocolIE-Container */ +typedef struct ProtocolIE_Container_85P0 { + A_SEQUENCE_OF(struct RICsubscriptionRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P0_t; +typedef struct ProtocolIE_Container_85P1 { + A_SEQUENCE_OF(struct RICsubscriptionResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P1_t; +typedef struct ProtocolIE_Container_85P2 { + A_SEQUENCE_OF(struct RICsubscriptionFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P2_t; +typedef struct ProtocolIE_Container_85P3 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P3_t; +typedef struct ProtocolIE_Container_85P4 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P4_t; +typedef struct ProtocolIE_Container_85P5 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P5_t; +typedef struct ProtocolIE_Container_85P6 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P6_t; +typedef struct ProtocolIE_Container_85P7 { + A_SEQUENCE_OF(struct RICsubscriptionModificationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P7_t; +typedef struct ProtocolIE_Container_85P8 { + A_SEQUENCE_OF(struct RICsubscriptionModificationResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P8_t; +typedef struct ProtocolIE_Container_85P9 { + A_SEQUENCE_OF(struct RICsubscriptionModificationFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P9_t; +typedef struct ProtocolIE_Container_85P10 { + A_SEQUENCE_OF(struct RICsubscriptionModificationRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P10_t; +typedef struct ProtocolIE_Container_85P11 { + A_SEQUENCE_OF(struct RICsubscriptionModificationConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P11_t; +typedef struct ProtocolIE_Container_85P12 { + A_SEQUENCE_OF(struct RICsubscriptionModificationRefuse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P12_t; +typedef struct ProtocolIE_Container_85P13 { + A_SEQUENCE_OF(struct RICindication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P13_t; +typedef struct ProtocolIE_Container_85P14 { + A_SEQUENCE_OF(struct RICcontrolRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P14_t; +typedef struct ProtocolIE_Container_85P15 { + A_SEQUENCE_OF(struct RICcontrolAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P15_t; +typedef struct ProtocolIE_Container_85P16 { + A_SEQUENCE_OF(struct RICcontrolFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P16_t; +typedef struct ProtocolIE_Container_85P17 { + A_SEQUENCE_OF(struct RICQueryRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P17_t; +typedef struct ProtocolIE_Container_85P18 { + A_SEQUENCE_OF(struct RICQueryResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P18_t; +typedef struct ProtocolIE_Container_85P19 { + A_SEQUENCE_OF(struct RICQueryFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P19_t; +typedef struct ProtocolIE_Container_85P20 { + A_SEQUENCE_OF(struct ErrorIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P20_t; +typedef struct ProtocolIE_Container_85P21 { + A_SEQUENCE_OF(struct E2setupRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P21_t; +typedef struct ProtocolIE_Container_85P22 { + A_SEQUENCE_OF(struct E2setupResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P22_t; +typedef struct ProtocolIE_Container_85P23 { + A_SEQUENCE_OF(struct E2setupFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P23_t; +typedef struct ProtocolIE_Container_85P24 { + A_SEQUENCE_OF(struct E2connectionUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P24_t; +typedef struct ProtocolIE_Container_85P25 { + A_SEQUENCE_OF(struct E2connectionUpdateAck_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P25_t; +typedef struct ProtocolIE_Container_85P26 { + A_SEQUENCE_OF(struct E2connectionUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P26_t; +typedef struct ProtocolIE_Container_85P27 { + A_SEQUENCE_OF(struct E2nodeConfigurationUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P27_t; +typedef struct ProtocolIE_Container_85P28 { + A_SEQUENCE_OF(struct E2nodeConfigurationUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P28_t; +typedef struct ProtocolIE_Container_85P29 { + A_SEQUENCE_OF(struct E2nodeConfigurationUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P29_t; +typedef struct ProtocolIE_Container_85P30 { + A_SEQUENCE_OF(struct ResetRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P30_t; +typedef struct ProtocolIE_Container_85P31 { + A_SEQUENCE_OF(struct ResetResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P31_t; +typedef struct ProtocolIE_Container_85P32 { + A_SEQUENCE_OF(struct RICserviceUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P32_t; +typedef struct ProtocolIE_Container_85P33 { + A_SEQUENCE_OF(struct RICserviceUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P33_t; +typedef struct ProtocolIE_Container_85P34 { + A_SEQUENCE_OF(struct RICserviceUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P34_t; +typedef struct ProtocolIE_Container_85P35 { + A_SEQUENCE_OF(struct RICserviceQuery_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P35_t; +typedef struct ProtocolIE_Container_85P36 { + A_SEQUENCE_OF(struct E2RemovalRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P36_t; +typedef struct ProtocolIE_Container_85P37 { + A_SEQUENCE_OF(struct E2RemovalResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P37_t; +typedef struct ProtocolIE_Container_85P38 { + A_SEQUENCE_OF(struct E2RemovalFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_85P38_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P0; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P0_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P0_1[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P1; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P1_specs_3; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P1_3[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P2; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P2_specs_5; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P2_5[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P3; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P3_specs_7; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P3_7[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P4; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P4_specs_9; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P4_9[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P5; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P5_specs_11; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P5_11[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P6; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P6_specs_13; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P6_13[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P7; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P7_specs_15; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P7_15[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P8; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P8_specs_17; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P8_17[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P9; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P9_specs_19; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P9_19[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P9_constr_19; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P10; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P10_specs_21; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P10_21[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P10_constr_21; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P11; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P11_specs_23; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P11_23[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P11_constr_23; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P12; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P12_specs_25; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P12_25[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P12_constr_25; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P13; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P13_specs_27; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P13_27[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P13_constr_27; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P14; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P14_specs_29; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P14_29[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P14_constr_29; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P15; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P15_specs_31; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P15_31[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P15_constr_31; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P16; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P16_specs_33; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P16_33[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P16_constr_33; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P17; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P17_specs_35; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P17_35[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P17_constr_35; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P18; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P18_specs_37; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P18_37[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P18_constr_37; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P19; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P19_specs_39; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P19_39[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P19_constr_39; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P20; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P20_specs_41; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P20_41[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P20_constr_41; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P21; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P21_specs_43; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P21_43[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P21_constr_43; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P22; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P22_specs_45; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P22_45[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P22_constr_45; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P23; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P23_specs_47; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P23_47[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P23_constr_47; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P24; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P24_specs_49; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P24_49[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P24_constr_49; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P25; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P25_specs_51; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P25_51[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P25_constr_51; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P26; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P26_specs_53; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P26_53[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P26_constr_53; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P27; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P27_specs_55; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P27_55[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P27_constr_55; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P28; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P28_specs_57; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P28_57[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P28_constr_57; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P29; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P29_specs_59; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P29_59[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P29_constr_59; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P30; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P30_specs_61; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P30_61[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P30_constr_61; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P31; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P31_specs_63; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P31_63[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P31_constr_63; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P32; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P32_specs_65; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P32_65[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P32_constr_65; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P33; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P33_specs_67; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P33_67[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P33_constr_67; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P34; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P34_specs_69; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P34_69[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P34_constr_69; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P35; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P35_specs_71; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P35_71[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P35_constr_71; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P36; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P36_specs_73; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P36_73[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P36_constr_73; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P37; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P37_specs_75; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P37_75[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P37_constr_75; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_85P38; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_85P38_specs_77; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_85P38_77[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_85P38_constr_77; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Container_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ProtocolIE-ContainerList.c b/e2sim/asn1c/ProtocolIE-ContainerList.c new file mode 100644 index 0000000..db8959d --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-ContainerList.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ProtocolIE-ContainerList.h" + diff --git a/e2sim/asn1c/ProtocolIE-ContainerList.h b/e2sim/asn1c/ProtocolIE-ContainerList.h new file mode 100644 index 0000000..305a1b3 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-ContainerList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ProtocolIE_ContainerList_H_ +#define _ProtocolIE_ContainerList_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ProtocolIE-ContainerPair.c b/e2sim/asn1c/ProtocolIE-ContainerPair.c new file mode 100644 index 0000000..4c2e06e --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-ContainerPair.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ProtocolIE-ContainerPair.h" + diff --git a/e2sim/asn1c/ProtocolIE-ContainerPair.h b/e2sim/asn1c/ProtocolIE-ContainerPair.h new file mode 100644 index 0000000..748fbf8 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-ContainerPair.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ProtocolIE_ContainerPair_H_ +#define _ProtocolIE_ContainerPair_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPair_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ProtocolIE-ContainerPairList.c b/e2sim/asn1c/ProtocolIE-ContainerPairList.c new file mode 100644 index 0000000..726186b --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-ContainerPairList.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ProtocolIE-ContainerPairList.h" + diff --git a/e2sim/asn1c/ProtocolIE-ContainerPairList.h b/e2sim/asn1c/ProtocolIE-ContainerPairList.h new file mode 100644 index 0000000..ae86322 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-ContainerPairList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ProtocolIE_ContainerPairList_H_ +#define _ProtocolIE_ContainerPairList_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPairList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ProtocolIE-Field.c b/e2sim/asn1c/ProtocolIE-Field.c new file mode 100644 index 0000000..5675252 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-Field.c @@ -0,0 +1,24173 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ProtocolIE-Field.h" + +static const long asn_VAL_6_id_RICaction_ToBeSetup_Item = 19; +static const long asn_VAL_6_ignore = 1; +static const long asn_VAL_6_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_RICaction_ToBeSetup_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ToBeSetup_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows } +}; +static const long asn_VAL_11_id_RICaction_Admitted_Item = 14; +static const long asn_VAL_11_ignore = 1; +static const long asn_VAL_11_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_Admitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_RICaction_Admitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_Admitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_Admitted_ItemIEs_1_rows } +}; +static const long asn_VAL_12_id_RICaction_NotAdmitted_Item = 16; +static const long asn_VAL_12_ignore = 1; +static const long asn_VAL_12_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_RICaction_NotAdmitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows } +}; +static const long asn_VAL_26_id_RICsubscription_withCause_Item = 61; +static const long asn_VAL_26_ignore = 1; +static const long asn_VAL_26_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscription_withCause_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_RICsubscription_withCause_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_ignore }, + { "&Value", aioc__type, &asn_DEF_RICsubscription_withCause_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscription_withCause_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICsubscription_withCause_ItemIEs_1_rows } +}; +static const long asn_VAL_33_id_RICaction_ToBeRemovedForModification_Item = 66; +static const long asn_VAL_33_ignore = 1; +static const long asn_VAL_33_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ToBeRemovedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_RICaction_ToBeRemovedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ToBeRemovedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ToBeRemovedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ToBeRemovedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_34_id_RICaction_ToBeModifiedForModification_Item = 68; +static const long asn_VAL_34_ignore = 1; +static const long asn_VAL_34_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ToBeModifiedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_RICaction_ToBeModifiedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ToBeModifiedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ToBeModifiedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ToBeModifiedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_35_id_RICaction_ToBeAddedForModification_Item = 70; +static const long asn_VAL_35_ignore = 1; +static const long asn_VAL_35_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ToBeAddedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_RICaction_ToBeAddedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ToBeAddedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ToBeAddedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ToBeAddedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_44_id_RICaction_RemovedForModification_Item = 72; +static const long asn_VAL_44_ignore = 1; +static const long asn_VAL_44_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_RemovedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_RICaction_RemovedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_RemovedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_RemovedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_RemovedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_45_id_RICaction_FailedToBeRemovedForModification_Item = 74; +static const long asn_VAL_45_ignore = 1; +static const long asn_VAL_45_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_FailedToBeRemovedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_RICaction_FailedToBeRemovedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_FailedToBeRemovedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_FailedToBeRemovedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_FailedToBeRemovedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_46_id_RICaction_ModifiedForModification_Item = 76; +static const long asn_VAL_46_ignore = 1; +static const long asn_VAL_46_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ModifiedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_RICaction_ModifiedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ModifiedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ModifiedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ModifiedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_47_id_RICaction_FailedToBeModifiedForModification_Item = 78; +static const long asn_VAL_47_ignore = 1; +static const long asn_VAL_47_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_FailedToBeModifiedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_RICaction_FailedToBeModifiedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_FailedToBeModifiedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_FailedToBeModifiedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_FailedToBeModifiedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_48_id_RICaction_AddedForModification_Item = 80; +static const long asn_VAL_48_ignore = 1; +static const long asn_VAL_48_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_AddedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_RICaction_AddedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_AddedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_AddedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_AddedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_49_id_RICaction_FailedToBeAddedForModification_Item = 82; +static const long asn_VAL_49_ignore = 1; +static const long asn_VAL_49_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_FailedToBeAddedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_RICaction_FailedToBeAddedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_FailedToBeAddedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_FailedToBeAddedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_FailedToBeAddedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_58_id_RICaction_RequiredToBeModified_Item = 84; +static const long asn_VAL_58_ignore = 1; +static const long asn_VAL_58_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_RequiredToBeModified_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_RICaction_RequiredToBeModified_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_RequiredToBeModified_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_RequiredToBeModified_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_RequiredToBeModified_ItemIEs_1_rows } +}; +static const long asn_VAL_59_id_RICaction_RequiredToBeRemoved_Item = 86; +static const long asn_VAL_59_ignore = 1; +static const long asn_VAL_59_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_RequiredToBeRemoved_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_RICaction_RequiredToBeRemoved_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_RequiredToBeRemoved_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_RequiredToBeRemoved_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_RequiredToBeRemoved_ItemIEs_1_rows } +}; +static const long asn_VAL_66_id_RICaction_ConfirmedForModification_Item = 88; +static const long asn_VAL_66_ignore = 1; +static const long asn_VAL_66_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ConfirmedForModification_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_RICaction_ConfirmedForModification_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ConfirmedForModification_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ConfirmedForModification_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ConfirmedForModification_ItemIEs_1_rows } +}; +static const long asn_VAL_67_id_RICaction_RefusedToBeModified_Item = 90; +static const long asn_VAL_67_ignore = 1; +static const long asn_VAL_67_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_RefusedToBeModified_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_RICaction_RefusedToBeModified_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_RefusedToBeModified_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_RefusedToBeModified_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_RefusedToBeModified_ItemIEs_1_rows } +}; +static const long asn_VAL_68_id_RICaction_ConfirmedForRemoval_Item = 92; +static const long asn_VAL_68_ignore = 1; +static const long asn_VAL_68_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ConfirmedForRemoval_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_RICaction_ConfirmedForRemoval_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ConfirmedForRemoval_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ConfirmedForRemoval_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ConfirmedForRemoval_ItemIEs_1_rows } +}; +static const long asn_VAL_69_id_RICaction_RefusedToBeRemoved_Item = 94; +static const long asn_VAL_69_ignore = 1; +static const long asn_VAL_69_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_RefusedToBeRemoved_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_RICaction_RefusedToBeRemoved_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_RefusedToBeRemoved_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_RefusedToBeRemoved_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_RefusedToBeRemoved_ItemIEs_1_rows } +}; +static const long asn_VAL_132_id_E2connectionUpdate_Item = 43; +static const long asn_VAL_132_ignore = 1; +static const long asn_VAL_132_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2connectionUpdate_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_132_id_E2connectionUpdate_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_132_ignore }, + { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_132_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2connectionUpdate_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2connectionUpdate_ItemIEs_1_rows } +}; +static const long asn_VAL_133_id_E2connectionUpdateRemove_Item = 47; +static const long asn_VAL_133_ignore = 1; +static const long asn_VAL_133_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2connectionUpdateRemove_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_133_id_E2connectionUpdateRemove_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_133_ignore }, + { "&Value", aioc__type, &asn_DEF_E2connectionUpdateRemove_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_133_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2connectionUpdateRemove_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2connectionUpdateRemove_ItemIEs_1_rows } +}; +static const long asn_VAL_137_id_E2connectionSetupFailed_Item = 41; +static const long asn_VAL_137_ignore = 1; +static const long asn_VAL_137_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2connectionSetupFailed_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_137_id_E2connectionSetupFailed_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_137_ignore }, + { "&Value", aioc__type, &asn_DEF_E2connectionSetupFailed_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_137_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2connectionSetupFailed_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2connectionSetupFailed_ItemIEs_1_rows } +}; +static const long asn_VAL_148_id_E2nodeComponentConfigAddition_Item = 51; +static const long asn_VAL_148_reject = 0; +static const long asn_VAL_148_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_148_id_E2nodeComponentConfigAddition_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_148_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAddition_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_148_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1_rows } +}; +static const long asn_VAL_149_id_E2nodeComponentConfigUpdate_Item = 34; +static const long asn_VAL_149_reject = 0; +static const long asn_VAL_149_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_149_id_E2nodeComponentConfigUpdate_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_149_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdate_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_149_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1_rows } +}; +static const long asn_VAL_150_id_E2nodeComponentConfigRemoval_Item = 55; +static const long asn_VAL_150_reject = 0; +static const long asn_VAL_150_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_150_id_E2nodeComponentConfigRemoval_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_150_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemoval_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_150_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1_rows } +}; +static const long asn_VAL_151_id_E2nodeTNLassociationRemoval_Item = 59; +static const long asn_VAL_151_reject = 0; +static const long asn_VAL_151_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_151_id_E2nodeTNLassociationRemoval_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_151_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeTNLassociationRemoval_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_151_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1_rows } +}; +static const long asn_VAL_156_id_E2nodeComponentConfigAdditionAck_Item = 53; +static const long asn_VAL_156_reject = 0; +static const long asn_VAL_156_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_156_id_E2nodeComponentConfigAdditionAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_156_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAdditionAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_156_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1_rows } +}; +static const long asn_VAL_157_id_E2nodeComponentConfigUpdateAck_Item = 36; +static const long asn_VAL_157_reject = 0; +static const long asn_VAL_157_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_157_id_E2nodeComponentConfigUpdateAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_157_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdateAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_157_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1_rows } +}; +static const long asn_VAL_158_id_E2nodeComponentConfigRemovalAck_Item = 57; +static const long asn_VAL_158_reject = 0; +static const long asn_VAL_158_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_158_id_E2nodeComponentConfigRemovalAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_158_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemovalAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_158_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1_rows } +}; +static const long asn_VAL_171_id_RANfunction_Item = 8; +static const long asn_VAL_171_ignore = 1; +static const long asn_VAL_171_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunction_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_171_id_RANfunction_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_171_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunction_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_171_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunction_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunction_ItemIEs_1_rows } +}; +static const long asn_VAL_172_id_RANfunctionID_Item = 6; +static const long asn_VAL_172_ignore = 1; +static const long asn_VAL_172_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionID_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_172_id_RANfunctionID_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_172_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_172_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionID_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionID_ItemIEs_1_rows } +}; +static const long asn_VAL_176_id_RANfunctionIEcause_Item = 7; +static const long asn_VAL_176_ignore = 1; +static const long asn_VAL_176_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionIDcause_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_176_id_RANfunctionIEcause_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_176_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionIDcause_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_176_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionIDcause_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionIDcause_ItemIEs_1_rows } +}; +static const long asn_VAL_1_id_RICrequestID = 29; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_1_mandatory = 2; +static const long asn_VAL_2_id_RANfunctionID = 5; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_2_mandatory = 2; +static const long asn_VAL_3_id_RICsubscriptionDetails = 30; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_3_mandatory = 2; +static const long asn_VAL_4_id_RICsubscriptionStartTime = 62; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_4_optional = 0; +static const long asn_VAL_5_id_RICsubscriptionEndTime = 63; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_5_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_RICsubscriptionDetails }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&Value", aioc__type, &asn_DEF_RICsubscriptionDetails }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_RICsubscriptionStartTime }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&Value", aioc__type, &asn_DEF_RICsubscriptionTime }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_RICsubscriptionEndTime }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&Value", aioc__type, &asn_DEF_RICsubscriptionTime }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionRequest_IEs_1[] = { + { 5, 4, asn_IOS_RICsubscriptionRequest_IEs_1_rows } +}; +static const long asn_VAL_7_id_RICrequestID = 29; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_7_mandatory = 2; +static const long asn_VAL_8_id_RANfunctionID = 5; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_8_mandatory = 2; +static const long asn_VAL_9_id_RICactions_Admitted = 17; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_9_mandatory = 2; +static const long asn_VAL_10_id_RICactions_NotAdmitted = 18; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_10_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_RICactions_Admitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_RICactions_NotAdmitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionResponse_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionResponse_IEs_1_rows } +}; +static const long asn_VAL_13_id_RICrequestID = 29; +static const long asn_VAL_13_reject = 0; +static const long asn_VAL_13_mandatory = 2; +static const long asn_VAL_14_id_RANfunctionID = 5; +static const long asn_VAL_14_reject = 0; +static const long asn_VAL_14_mandatory = 2; +static const long asn_VAL_15_id_Cause = 1; +static const long asn_VAL_15_reject = 0; +static const long asn_VAL_15_mandatory = 2; +static const long asn_VAL_16_id_CriticalityDiagnostics = 2; +static const long asn_VAL_16_ignore = 1; +static const long asn_VAL_16_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_reject }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionFailure_IEs_1_rows } +}; +static const long asn_VAL_17_id_RICrequestID = 29; +static const long asn_VAL_17_reject = 0; +static const long asn_VAL_17_mandatory = 2; +static const long asn_VAL_18_id_RANfunctionID = 5; +static const long asn_VAL_18_reject = 0; +static const long asn_VAL_18_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows } +}; +static const long asn_VAL_19_id_RICrequestID = 29; +static const long asn_VAL_19_reject = 0; +static const long asn_VAL_19_mandatory = 2; +static const long asn_VAL_20_id_RANfunctionID = 5; +static const long asn_VAL_20_reject = 0; +static const long asn_VAL_20_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows } +}; +static const long asn_VAL_21_id_RICrequestID = 29; +static const long asn_VAL_21_reject = 0; +static const long asn_VAL_21_mandatory = 2; +static const long asn_VAL_22_id_RANfunctionID = 5; +static const long asn_VAL_22_reject = 0; +static const long asn_VAL_22_mandatory = 2; +static const long asn_VAL_23_id_Cause = 1; +static const long asn_VAL_23_ignore = 1; +static const long asn_VAL_23_mandatory = 2; +static const long asn_VAL_24_id_CriticalityDiagnostics = 2; +static const long asn_VAL_24_ignore = 1; +static const long asn_VAL_24_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows } +}; +static const long asn_VAL_25_id_RICsubscriptionToBeRemoved = 60; +static const long asn_VAL_25_ignore = 1; +static const long asn_VAL_25_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_RICsubscriptionToBeRemoved }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_ignore }, + { "&Value", aioc__type, &asn_DEF_RICsubscription_List_withCause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequired_IEs_1[] = { + { 1, 4, asn_IOS_RICsubscriptionDeleteRequired_IEs_1_rows } +}; +static const long asn_VAL_27_id_RICrequestID = 29; +static const long asn_VAL_27_reject = 0; +static const long asn_VAL_27_mandatory = 2; +static const long asn_VAL_28_id_RANfunctionID = 5; +static const long asn_VAL_28_reject = 0; +static const long asn_VAL_28_mandatory = 2; +static const long asn_VAL_29_id_RICeventTriggerDefinitionToBeModified = 64; +static const long asn_VAL_29_ignore = 1; +static const long asn_VAL_29_optional = 0; +static const long asn_VAL_30_id_RICactionsToBeRemovedForModification_List = 65; +static const long asn_VAL_30_ignore = 1; +static const long asn_VAL_30_optional = 0; +static const long asn_VAL_31_id_RICactionsToBeModifiedForModification_List = 67; +static const long asn_VAL_31_ignore = 1; +static const long asn_VAL_31_optional = 0; +static const long asn_VAL_32_id_RICactionsToBeAddedForModification_List = 69; +static const long asn_VAL_32_ignore = 1; +static const long asn_VAL_32_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionModificationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_RICeventTriggerDefinitionToBeModified }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_ignore }, + { "&Value", aioc__type, &asn_DEF_RICeventTriggerDefinition }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RICactionsToBeRemovedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_ToBeRemovedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_RICactionsToBeModifiedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_ToBeModifiedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_RICactionsToBeAddedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_ToBeAddedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionModificationRequest_IEs_1[] = { + { 6, 4, asn_IOS_RICsubscriptionModificationRequest_IEs_1_rows } +}; +static const long asn_VAL_36_id_RICrequestID = 29; +static const long asn_VAL_36_reject = 0; +static const long asn_VAL_36_mandatory = 2; +static const long asn_VAL_37_id_RANfunctionID = 5; +static const long asn_VAL_37_reject = 0; +static const long asn_VAL_37_mandatory = 2; +static const long asn_VAL_38_id_RICactionsRemovedForModification_List = 71; +static const long asn_VAL_38_ignore = 1; +static const long asn_VAL_38_optional = 0; +static const long asn_VAL_39_id_RICactionsFailedToBeRemovedForModification_List = 73; +static const long asn_VAL_39_ignore = 1; +static const long asn_VAL_39_optional = 0; +static const long asn_VAL_40_id_RICactionsModifiedForModification_List = 75; +static const long asn_VAL_40_ignore = 1; +static const long asn_VAL_40_optional = 0; +static const long asn_VAL_41_id_RICactionsFailedToBeModifiedForModification_List = 77; +static const long asn_VAL_41_ignore = 1; +static const long asn_VAL_41_optional = 0; +static const long asn_VAL_42_id_RICactionsAddedForModification_List = 79; +static const long asn_VAL_42_ignore = 1; +static const long asn_VAL_42_optional = 0; +static const long asn_VAL_43_id_RICactionsFailedToBeAddedForModification_List = 81; +static const long asn_VAL_43_ignore = 1; +static const long asn_VAL_43_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionModificationResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RICactionsRemovedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_RemovedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_RICactionsFailedToBeRemovedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_FailedToBeRemovedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_RICactionsModifiedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_ModifiedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_RICactionsFailedToBeModifiedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_FailedToBeModifiedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RICactionsAddedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_AddedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_RICactionsFailedToBeAddedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_FailedToBeAddedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionModificationResponse_IEs_1[] = { + { 8, 4, asn_IOS_RICsubscriptionModificationResponse_IEs_1_rows } +}; +static const long asn_VAL_50_id_RICrequestID = 29; +static const long asn_VAL_50_reject = 0; +static const long asn_VAL_50_mandatory = 2; +static const long asn_VAL_51_id_RANfunctionID = 5; +static const long asn_VAL_51_reject = 0; +static const long asn_VAL_51_mandatory = 2; +static const long asn_VAL_52_id_Cause = 1; +static const long asn_VAL_52_reject = 0; +static const long asn_VAL_52_mandatory = 2; +static const long asn_VAL_53_id_CriticalityDiagnostics = 2; +static const long asn_VAL_53_ignore = 1; +static const long asn_VAL_53_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionModificationFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_reject }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionModificationFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionModificationFailure_IEs_1_rows } +}; +static const long asn_VAL_54_id_RICrequestID = 29; +static const long asn_VAL_54_reject = 0; +static const long asn_VAL_54_mandatory = 2; +static const long asn_VAL_55_id_RANfunctionID = 5; +static const long asn_VAL_55_reject = 0; +static const long asn_VAL_55_mandatory = 2; +static const long asn_VAL_56_id_RICactionsRequiredToBeModified_List = 83; +static const long asn_VAL_56_ignore = 1; +static const long asn_VAL_56_optional = 0; +static const long asn_VAL_57_id_RICactionsRequiredToBeRemoved_List = 85; +static const long asn_VAL_57_ignore = 1; +static const long asn_VAL_57_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionModificationRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_RICactionsRequiredToBeModified_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_RequiredToBeModified_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_RICactionsRequiredToBeRemoved_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_RequiredToBeRemoved_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionModificationRequired_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionModificationRequired_IEs_1_rows } +}; +static const long asn_VAL_60_id_RICrequestID = 29; +static const long asn_VAL_60_reject = 0; +static const long asn_VAL_60_mandatory = 2; +static const long asn_VAL_61_id_RANfunctionID = 5; +static const long asn_VAL_61_reject = 0; +static const long asn_VAL_61_mandatory = 2; +static const long asn_VAL_62_id_RICactionsConfirmedForModification_List = 87; +static const long asn_VAL_62_ignore = 1; +static const long asn_VAL_62_optional = 0; +static const long asn_VAL_63_id_RICactionsRefusedToBeModified_List = 89; +static const long asn_VAL_63_ignore = 1; +static const long asn_VAL_63_optional = 0; +static const long asn_VAL_64_id_RICactionsConfirmedForRemoval_List = 91; +static const long asn_VAL_64_ignore = 1; +static const long asn_VAL_64_optional = 0; +static const long asn_VAL_65_id_RICactionsRefusedToBeRemoved_List = 93; +static const long asn_VAL_65_ignore = 1; +static const long asn_VAL_65_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionModificationConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_RICactionsConfirmedForModification_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_ConfirmedForModification_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_RICactionsRefusedToBeModified_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_RefusedToBeModified_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_RICactionsConfirmedForRemoval_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_ConfirmedForRemoval_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_RICactionsRefusedToBeRemoved_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_ignore }, + { "&Value", aioc__type, &asn_DEF_RICactions_RefusedToBeRemoved_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionModificationConfirm_IEs_1[] = { + { 6, 4, asn_IOS_RICsubscriptionModificationConfirm_IEs_1_rows } +}; +static const long asn_VAL_70_id_RICrequestID = 29; +static const long asn_VAL_70_reject = 0; +static const long asn_VAL_70_mandatory = 2; +static const long asn_VAL_71_id_RANfunctionID = 5; +static const long asn_VAL_71_reject = 0; +static const long asn_VAL_71_mandatory = 2; +static const long asn_VAL_72_id_Cause = 1; +static const long asn_VAL_72_reject = 0; +static const long asn_VAL_72_mandatory = 2; +static const long asn_VAL_73_id_CriticalityDiagnostics = 2; +static const long asn_VAL_73_ignore = 1; +static const long asn_VAL_73_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionModificationRefuse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_reject }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_73_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_73_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_73_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionModificationRefuse_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionModificationRefuse_IEs_1_rows } +}; +static const long asn_VAL_74_id_RICrequestID = 29; +static const long asn_VAL_74_reject = 0; +static const long asn_VAL_74_mandatory = 2; +static const long asn_VAL_75_id_RANfunctionID = 5; +static const long asn_VAL_75_reject = 0; +static const long asn_VAL_75_mandatory = 2; +static const long asn_VAL_76_id_RICactionID = 15; +static const long asn_VAL_76_reject = 0; +static const long asn_VAL_76_mandatory = 2; +static const long asn_VAL_77_id_RICindicationSN = 27; +static const long asn_VAL_77_reject = 0; +static const long asn_VAL_77_optional = 0; +static const long asn_VAL_78_id_RICindicationType = 28; +static const long asn_VAL_78_reject = 0; +static const long asn_VAL_78_mandatory = 2; +static const long asn_VAL_79_id_RICindicationHeader = 25; +static const long asn_VAL_79_reject = 0; +static const long asn_VAL_79_mandatory = 2; +static const long asn_VAL_80_id_RICindicationMessage = 26; +static const long asn_VAL_80_reject = 0; +static const long asn_VAL_80_mandatory = 2; +static const long asn_VAL_81_id_RICcallProcessID = 20; +static const long asn_VAL_81_reject = 0; +static const long asn_VAL_81_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICindication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_74_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_74_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_74_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_75_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_75_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_75_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_76_id_RICactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_76_reject }, + { "&Value", aioc__type, &asn_DEF_RICactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_76_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_77_id_RICindicationSN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_77_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationSN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_77_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_78_id_RICindicationType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_78_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_78_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_79_id_RICindicationHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_79_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_79_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_80_id_RICindicationMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_80_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_80_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_81_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_81_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_81_optional } +}; +static const asn_ioc_set_t asn_IOS_RICindication_IEs_1[] = { + { 8, 4, asn_IOS_RICindication_IEs_1_rows } +}; +static const long asn_VAL_82_id_RICrequestID = 29; +static const long asn_VAL_82_reject = 0; +static const long asn_VAL_82_mandatory = 2; +static const long asn_VAL_83_id_RANfunctionID = 5; +static const long asn_VAL_83_reject = 0; +static const long asn_VAL_83_mandatory = 2; +static const long asn_VAL_84_id_RICcallProcessID = 20; +static const long asn_VAL_84_reject = 0; +static const long asn_VAL_84_optional = 0; +static const long asn_VAL_85_id_RICcontrolHeader = 22; +static const long asn_VAL_85_reject = 0; +static const long asn_VAL_85_mandatory = 2; +static const long asn_VAL_86_id_RICcontrolMessage = 23; +static const long asn_VAL_86_reject = 0; +static const long asn_VAL_86_mandatory = 2; +static const long asn_VAL_87_id_RICcontrolAckRequest = 21; +static const long asn_VAL_87_reject = 0; +static const long asn_VAL_87_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_82_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_82_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_82_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_83_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_83_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_83_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_84_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_84_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_84_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_85_id_RICcontrolHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_85_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_85_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_86_id_RICcontrolMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_86_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_86_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_87_id_RICcontrolAckRequest }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_87_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolAckRequest }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_87_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolRequest_IEs_1[] = { + { 6, 4, asn_IOS_RICcontrolRequest_IEs_1_rows } +}; +static const long asn_VAL_88_id_RICrequestID = 29; +static const long asn_VAL_88_reject = 0; +static const long asn_VAL_88_mandatory = 2; +static const long asn_VAL_89_id_RANfunctionID = 5; +static const long asn_VAL_89_reject = 0; +static const long asn_VAL_89_mandatory = 2; +static const long asn_VAL_90_id_RICcallProcessID = 20; +static const long asn_VAL_90_reject = 0; +static const long asn_VAL_90_optional = 0; +static const long asn_VAL_91_id_RICcontrolOutcome = 32; +static const long asn_VAL_91_reject = 0; +static const long asn_VAL_91_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_88_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_88_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_88_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_89_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_89_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_89_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_90_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_90_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_90_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_91_id_RICcontrolOutcome }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_91_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_91_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolAcknowledge_IEs_1[] = { + { 4, 4, asn_IOS_RICcontrolAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_92_id_RICrequestID = 29; +static const long asn_VAL_92_reject = 0; +static const long asn_VAL_92_mandatory = 2; +static const long asn_VAL_93_id_RANfunctionID = 5; +static const long asn_VAL_93_reject = 0; +static const long asn_VAL_93_mandatory = 2; +static const long asn_VAL_94_id_RICcallProcessID = 20; +static const long asn_VAL_94_reject = 0; +static const long asn_VAL_94_optional = 0; +static const long asn_VAL_95_id_Cause = 1; +static const long asn_VAL_95_ignore = 1; +static const long asn_VAL_95_mandatory = 2; +static const long asn_VAL_96_id_RICcontrolOutcome = 32; +static const long asn_VAL_96_reject = 0; +static const long asn_VAL_96_optional = 0; +static const long asn_VAL_97_id_CriticalityDiagnostics = 2; +static const long asn_VAL_97_ignore = 1; +static const long asn_VAL_97_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_92_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_92_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_92_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_93_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_93_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_93_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_94_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_94_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_94_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_95_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_95_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_95_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_96_id_RICcontrolOutcome }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_96_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_96_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_97_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_97_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_97_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolFailure_IEs_1[] = { + { 6, 4, asn_IOS_RICcontrolFailure_IEs_1_rows } +}; +static const long asn_VAL_98_id_RICrequestID = 29; +static const long asn_VAL_98_reject = 0; +static const long asn_VAL_98_mandatory = 2; +static const long asn_VAL_99_id_RANfunctionID = 5; +static const long asn_VAL_99_reject = 0; +static const long asn_VAL_99_mandatory = 2; +static const long asn_VAL_100_id_RICqueryHeader = 95; +static const long asn_VAL_100_reject = 0; +static const long asn_VAL_100_mandatory = 2; +static const long asn_VAL_101_id_RICqueryDefinition = 96; +static const long asn_VAL_101_reject = 0; +static const long asn_VAL_101_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICQueryRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_98_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_98_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_98_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_99_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_99_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_99_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_100_id_RICqueryHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_100_reject }, + { "&Value", aioc__type, &asn_DEF_RICqueryHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_100_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_101_id_RICqueryDefinition }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_101_reject }, + { "&Value", aioc__type, &asn_DEF_RICqueryDefinition }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_101_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICQueryRequest_IEs_1[] = { + { 4, 4, asn_IOS_RICQueryRequest_IEs_1_rows } +}; +static const long asn_VAL_102_id_RICrequestID = 29; +static const long asn_VAL_102_reject = 0; +static const long asn_VAL_102_mandatory = 2; +static const long asn_VAL_103_id_RANfunctionID = 5; +static const long asn_VAL_103_reject = 0; +static const long asn_VAL_103_mandatory = 2; +static const long asn_VAL_104_id_RICqueryOutcome = 97; +static const long asn_VAL_104_reject = 0; +static const long asn_VAL_104_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICQueryResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_102_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_102_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_102_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_103_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_103_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_103_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_104_id_RICqueryOutcome }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_104_reject }, + { "&Value", aioc__type, &asn_DEF_RICqueryOutcome }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_104_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICQueryResponse_IEs_1[] = { + { 3, 4, asn_IOS_RICQueryResponse_IEs_1_rows } +}; +static const long asn_VAL_105_id_RICrequestID = 29; +static const long asn_VAL_105_reject = 0; +static const long asn_VAL_105_mandatory = 2; +static const long asn_VAL_106_id_RANfunctionID = 5; +static const long asn_VAL_106_reject = 0; +static const long asn_VAL_106_mandatory = 2; +static const long asn_VAL_107_id_Cause = 1; +static const long asn_VAL_107_ignore = 1; +static const long asn_VAL_107_mandatory = 2; +static const long asn_VAL_108_id_CriticalityDiagnostics = 2; +static const long asn_VAL_108_ignore = 1; +static const long asn_VAL_108_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICQueryFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_105_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_105_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_105_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_106_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_106_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_106_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_107_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_107_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_107_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_108_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_108_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_108_optional } +}; +static const asn_ioc_set_t asn_IOS_RICQueryFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICQueryFailure_IEs_1_rows } +}; +static const long asn_VAL_109_id_TransactionID = 49; +static const long asn_VAL_109_reject = 0; +static const long asn_VAL_109_optional = 0; +static const long asn_VAL_110_id_RICrequestID = 29; +static const long asn_VAL_110_reject = 0; +static const long asn_VAL_110_optional = 0; +static const long asn_VAL_111_id_RANfunctionID = 5; +static const long asn_VAL_111_reject = 0; +static const long asn_VAL_111_optional = 0; +static const long asn_VAL_112_id_Cause = 1; +static const long asn_VAL_112_ignore = 1; +static const long asn_VAL_112_optional = 0; +static const long asn_VAL_113_id_CriticalityDiagnostics = 2; +static const long asn_VAL_113_ignore = 1; +static const long asn_VAL_113_optional = 0; +static const asn_ioc_cell_t asn_IOS_ErrorIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_109_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_109_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_109_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_110_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_110_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_110_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_111_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_111_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_111_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_112_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_112_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_112_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_113_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_113_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_113_optional } +}; +static const asn_ioc_set_t asn_IOS_ErrorIndication_IEs_1[] = { + { 5, 4, asn_IOS_ErrorIndication_IEs_1_rows } +}; +static const long asn_VAL_114_id_TransactionID = 49; +static const long asn_VAL_114_reject = 0; +static const long asn_VAL_114_mandatory = 2; +static const long asn_VAL_115_id_GlobalE2node_ID = 3; +static const long asn_VAL_115_reject = 0; +static const long asn_VAL_115_mandatory = 2; +static const long asn_VAL_116_id_RANfunctionsAdded = 10; +static const long asn_VAL_116_reject = 0; +static const long asn_VAL_116_mandatory = 2; +static const long asn_VAL_117_id_E2nodeComponentConfigAddition = 50; +static const long asn_VAL_117_reject = 0; +static const long asn_VAL_117_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2setupRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_114_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_114_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_114_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_115_id_GlobalE2node_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_115_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalE2node_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_115_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_116_id_RANfunctionsAdded }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_116_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_116_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_117_id_E2nodeComponentConfigAddition }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_117_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAddition_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_117_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2setupRequestIEs_1[] = { + { 4, 4, asn_IOS_E2setupRequestIEs_1_rows } +}; +static const long asn_VAL_118_id_TransactionID = 49; +static const long asn_VAL_118_reject = 0; +static const long asn_VAL_118_mandatory = 2; +static const long asn_VAL_119_id_GlobalRIC_ID = 4; +static const long asn_VAL_119_reject = 0; +static const long asn_VAL_119_mandatory = 2; +static const long asn_VAL_120_id_RANfunctionsAccepted = 9; +static const long asn_VAL_120_reject = 0; +static const long asn_VAL_120_optional = 0; +static const long asn_VAL_121_id_RANfunctionsRejected = 13; +static const long asn_VAL_121_reject = 0; +static const long asn_VAL_121_optional = 0; +static const long asn_VAL_122_id_E2nodeComponentConfigAdditionAck = 52; +static const long asn_VAL_122_reject = 0; +static const long asn_VAL_122_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2setupResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_118_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_118_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_118_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_119_id_GlobalRIC_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_119_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalRIC_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_119_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_120_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_120_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_120_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_121_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_121_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_121_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_122_id_E2nodeComponentConfigAdditionAck }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_122_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAdditionAck_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_122_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2setupResponseIEs_1[] = { + { 5, 4, asn_IOS_E2setupResponseIEs_1_rows } +}; +static const long asn_VAL_123_id_TransactionID = 49; +static const long asn_VAL_123_reject = 0; +static const long asn_VAL_123_mandatory = 2; +static const long asn_VAL_124_id_Cause = 1; +static const long asn_VAL_124_ignore = 1; +static const long asn_VAL_124_mandatory = 2; +static const long asn_VAL_125_id_TimeToWait = 31; +static const long asn_VAL_125_ignore = 1; +static const long asn_VAL_125_optional = 0; +static const long asn_VAL_126_id_CriticalityDiagnostics = 2; +static const long asn_VAL_126_ignore = 1; +static const long asn_VAL_126_optional = 0; +static const long asn_VAL_127_id_TNLinformation = 48; +static const long asn_VAL_127_ignore = 1; +static const long asn_VAL_127_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2setupFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_123_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_123_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_123_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_124_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_124_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_124_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_125_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_125_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_125_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_126_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_126_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_126_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_127_id_TNLinformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_127_ignore }, + { "&Value", aioc__type, &asn_DEF_TNLinformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_127_optional } +}; +static const asn_ioc_set_t asn_IOS_E2setupFailureIEs_1[] = { + { 5, 4, asn_IOS_E2setupFailureIEs_1_rows } +}; +static const long asn_VAL_128_id_TransactionID = 49; +static const long asn_VAL_128_reject = 0; +static const long asn_VAL_128_mandatory = 2; +static const long asn_VAL_129_id_E2connectionUpdateAdd = 44; +static const long asn_VAL_129_reject = 0; +static const long asn_VAL_129_optional = 0; +static const long asn_VAL_130_id_E2connectionUpdateRemove = 46; +static const long asn_VAL_130_reject = 0; +static const long asn_VAL_130_optional = 0; +static const long asn_VAL_131_id_E2connectionUpdateModify = 45; +static const long asn_VAL_131_reject = 0; +static const long asn_VAL_131_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2connectionUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_128_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_128_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_128_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_129_id_E2connectionUpdateAdd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_129_reject }, + { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_129_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_130_id_E2connectionUpdateRemove }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_130_reject }, + { "&Value", aioc__type, &asn_DEF_E2connectionUpdateRemove_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_130_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_131_id_E2connectionUpdateModify }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_131_reject }, + { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_131_optional } +}; +static const asn_ioc_set_t asn_IOS_E2connectionUpdate_IEs_1[] = { + { 4, 4, asn_IOS_E2connectionUpdate_IEs_1_rows } +}; +static const long asn_VAL_134_id_TransactionID = 49; +static const long asn_VAL_134_reject = 0; +static const long asn_VAL_134_mandatory = 2; +static const long asn_VAL_135_id_E2connectionSetup = 39; +static const long asn_VAL_135_reject = 0; +static const long asn_VAL_135_optional = 0; +static const long asn_VAL_136_id_E2connectionSetupFailed = 40; +static const long asn_VAL_136_reject = 0; +static const long asn_VAL_136_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2connectionUpdateAck_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_134_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_134_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_134_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_135_id_E2connectionSetup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_135_reject }, + { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_135_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_136_id_E2connectionSetupFailed }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_136_reject }, + { "&Value", aioc__type, &asn_DEF_E2connectionSetupFailed_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_136_optional } +}; +static const asn_ioc_set_t asn_IOS_E2connectionUpdateAck_IEs_1[] = { + { 3, 4, asn_IOS_E2connectionUpdateAck_IEs_1_rows } +}; +static const long asn_VAL_138_id_TransactionID = 49; +static const long asn_VAL_138_reject = 0; +static const long asn_VAL_138_mandatory = 2; +static const long asn_VAL_139_id_Cause = 1; +static const long asn_VAL_139_reject = 0; +static const long asn_VAL_139_optional = 0; +static const long asn_VAL_140_id_TimeToWait = 31; +static const long asn_VAL_140_ignore = 1; +static const long asn_VAL_140_optional = 0; +static const long asn_VAL_141_id_CriticalityDiagnostics = 2; +static const long asn_VAL_141_ignore = 1; +static const long asn_VAL_141_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2connectionUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_138_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_138_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_138_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_139_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_139_reject }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_139_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_140_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_140_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_140_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_141_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_141_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_141_optional } +}; +static const asn_ioc_set_t asn_IOS_E2connectionUpdateFailure_IEs_1[] = { + { 4, 4, asn_IOS_E2connectionUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_142_id_TransactionID = 49; +static const long asn_VAL_142_reject = 0; +static const long asn_VAL_142_mandatory = 2; +static const long asn_VAL_143_id_GlobalE2node_ID = 3; +static const long asn_VAL_143_reject = 0; +static const long asn_VAL_143_optional = 0; +static const long asn_VAL_144_id_E2nodeComponentConfigAddition = 50; +static const long asn_VAL_144_reject = 0; +static const long asn_VAL_144_optional = 0; +static const long asn_VAL_145_id_E2nodeComponentConfigUpdate = 33; +static const long asn_VAL_145_reject = 0; +static const long asn_VAL_145_optional = 0; +static const long asn_VAL_146_id_E2nodeComponentConfigRemoval = 54; +static const long asn_VAL_146_reject = 0; +static const long asn_VAL_146_optional = 0; +static const long asn_VAL_147_id_E2nodeTNLassociationRemoval = 58; +static const long asn_VAL_147_reject = 0; +static const long asn_VAL_147_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2nodeConfigurationUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_142_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_142_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_142_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_143_id_GlobalE2node_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_143_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalE2node_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_143_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_144_id_E2nodeComponentConfigAddition }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_144_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAddition_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_144_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_145_id_E2nodeComponentConfigUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_145_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdate_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_145_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_146_id_E2nodeComponentConfigRemoval }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_146_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemoval_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_146_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_147_id_E2nodeTNLassociationRemoval }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_147_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeTNLassociationRemoval_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_147_optional } +}; +static const asn_ioc_set_t asn_IOS_E2nodeConfigurationUpdate_IEs_1[] = { + { 6, 4, asn_IOS_E2nodeConfigurationUpdate_IEs_1_rows } +}; +static const long asn_VAL_152_id_TransactionID = 49; +static const long asn_VAL_152_reject = 0; +static const long asn_VAL_152_mandatory = 2; +static const long asn_VAL_153_id_E2nodeComponentConfigAdditionAck = 52; +static const long asn_VAL_153_reject = 0; +static const long asn_VAL_153_optional = 0; +static const long asn_VAL_154_id_E2nodeComponentConfigUpdateAck = 35; +static const long asn_VAL_154_reject = 0; +static const long asn_VAL_154_optional = 0; +static const long asn_VAL_155_id_E2nodeComponentConfigRemovalAck = 56; +static const long asn_VAL_155_reject = 0; +static const long asn_VAL_155_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_152_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_152_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_152_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_153_id_E2nodeComponentConfigAdditionAck }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_153_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAdditionAck_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_153_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_154_id_E2nodeComponentConfigUpdateAck }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_154_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdateAck_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_154_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_155_id_E2nodeComponentConfigRemovalAck }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_155_reject }, + { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemovalAck_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_155_optional } +}; +static const asn_ioc_set_t asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1[] = { + { 4, 4, asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_159_id_TransactionID = 49; +static const long asn_VAL_159_reject = 0; +static const long asn_VAL_159_mandatory = 2; +static const long asn_VAL_160_id_Cause = 1; +static const long asn_VAL_160_ignore = 1; +static const long asn_VAL_160_mandatory = 2; +static const long asn_VAL_161_id_TimeToWait = 31; +static const long asn_VAL_161_ignore = 1; +static const long asn_VAL_161_optional = 0; +static const long asn_VAL_162_id_CriticalityDiagnostics = 2; +static const long asn_VAL_162_ignore = 1; +static const long asn_VAL_162_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_159_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_159_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_159_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_160_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_160_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_160_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_161_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_161_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_161_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_162_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_162_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_162_optional } +}; +static const asn_ioc_set_t asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1[] = { + { 4, 4, asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_163_id_TransactionID = 49; +static const long asn_VAL_163_reject = 0; +static const long asn_VAL_163_mandatory = 2; +static const long asn_VAL_164_id_Cause = 1; +static const long asn_VAL_164_ignore = 1; +static const long asn_VAL_164_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ResetRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_163_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_163_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_163_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_164_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_164_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_164_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ResetRequestIEs_1[] = { + { 2, 4, asn_IOS_ResetRequestIEs_1_rows } +}; +static const long asn_VAL_165_id_TransactionID = 49; +static const long asn_VAL_165_reject = 0; +static const long asn_VAL_165_mandatory = 2; +static const long asn_VAL_166_id_CriticalityDiagnostics = 2; +static const long asn_VAL_166_ignore = 1; +static const long asn_VAL_166_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResetResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_165_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_165_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_165_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_166_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_166_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_166_optional } +}; +static const asn_ioc_set_t asn_IOS_ResetResponseIEs_1[] = { + { 2, 4, asn_IOS_ResetResponseIEs_1_rows } +}; +static const long asn_VAL_167_id_TransactionID = 49; +static const long asn_VAL_167_reject = 0; +static const long asn_VAL_167_mandatory = 2; +static const long asn_VAL_168_id_RANfunctionsAdded = 10; +static const long asn_VAL_168_reject = 0; +static const long asn_VAL_168_optional = 0; +static const long asn_VAL_169_id_RANfunctionsModified = 12; +static const long asn_VAL_169_reject = 0; +static const long asn_VAL_169_optional = 0; +static const long asn_VAL_170_id_RANfunctionsDeleted = 11; +static const long asn_VAL_170_reject = 0; +static const long asn_VAL_170_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_167_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_167_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_167_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_168_id_RANfunctionsAdded }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_168_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_168_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_169_id_RANfunctionsModified }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_169_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_169_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_170_id_RANfunctionsDeleted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_170_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_170_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdate_IEs_1[] = { + { 4, 4, asn_IOS_RICserviceUpdate_IEs_1_rows } +}; +static const long asn_VAL_173_id_TransactionID = 49; +static const long asn_VAL_173_reject = 0; +static const long asn_VAL_173_mandatory = 2; +static const long asn_VAL_174_id_RANfunctionsAccepted = 9; +static const long asn_VAL_174_reject = 0; +static const long asn_VAL_174_optional = 0; +static const long asn_VAL_175_id_RANfunctionsRejected = 13; +static const long asn_VAL_175_reject = 0; +static const long asn_VAL_175_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_173_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_173_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_173_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_174_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_174_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_174_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_175_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_175_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_175_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1[] = { + { 3, 4, asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_177_id_TransactionID = 49; +static const long asn_VAL_177_reject = 0; +static const long asn_VAL_177_mandatory = 2; +static const long asn_VAL_178_id_Cause = 1; +static const long asn_VAL_178_reject = 0; +static const long asn_VAL_178_mandatory = 2; +static const long asn_VAL_179_id_TimeToWait = 31; +static const long asn_VAL_179_ignore = 1; +static const long asn_VAL_179_optional = 0; +static const long asn_VAL_180_id_CriticalityDiagnostics = 2; +static const long asn_VAL_180_ignore = 1; +static const long asn_VAL_180_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_177_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_177_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_177_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_178_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_178_reject }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_178_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_179_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_179_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_179_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_180_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_180_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_180_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICserviceUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_181_id_TransactionID = 49; +static const long asn_VAL_181_reject = 0; +static const long asn_VAL_181_mandatory = 2; +static const long asn_VAL_182_id_RANfunctionsAccepted = 9; +static const long asn_VAL_182_reject = 0; +static const long asn_VAL_182_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceQuery_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_181_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_181_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_181_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_182_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_182_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_182_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceQuery_IEs_1[] = { + { 2, 4, asn_IOS_RICserviceQuery_IEs_1_rows } +}; +static const long asn_VAL_183_id_TransactionID = 49; +static const long asn_VAL_183_reject = 0; +static const long asn_VAL_183_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E2RemovalRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_183_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_183_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_183_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E2RemovalRequestIEs_1[] = { + { 1, 4, asn_IOS_E2RemovalRequestIEs_1_rows } +}; +static const long asn_VAL_184_id_TransactionID = 49; +static const long asn_VAL_184_reject = 0; +static const long asn_VAL_184_mandatory = 2; +static const long asn_VAL_185_id_CriticalityDiagnostics = 2; +static const long asn_VAL_185_ignore = 1; +static const long asn_VAL_185_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2RemovalResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_184_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_184_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_184_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_185_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_185_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_185_optional } +}; +static const asn_ioc_set_t asn_IOS_E2RemovalResponseIEs_1[] = { + { 2, 4, asn_IOS_E2RemovalResponseIEs_1_rows } +}; +static const long asn_VAL_186_id_TransactionID = 49; +static const long asn_VAL_186_reject = 0; +static const long asn_VAL_186_mandatory = 2; +static const long asn_VAL_187_id_Cause = 1; +static const long asn_VAL_187_ignore = 1; +static const long asn_VAL_187_mandatory = 2; +static const long asn_VAL_188_id_CriticalityDiagnostics = 2; +static const long asn_VAL_188_ignore = 1; +static const long asn_VAL_188_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2RemovalFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_186_id_TransactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_186_reject }, + { "&Value", aioc__type, &asn_DEF_TransactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_186_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_187_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_187_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_187_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_188_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_188_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_188_optional } +}; +static const asn_ioc_set_t asn_IOS_E2RemovalFailureIEs_1[] = { + { 3, 4, asn_IOS_E2RemovalFailureIEs_1_rows } +}; +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscription_withCause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscription_withCause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscription_withCause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscription_withCause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscription_withCause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscription_withCause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ToBeRemovedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeRemovedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeRemovedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ToBeRemovedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeRemovedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeRemovedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ToBeModifiedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeModifiedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeModifiedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ToBeModifiedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeModifiedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeModifiedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ToBeAddedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeAddedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeAddedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ToBeAddedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeAddedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeAddedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_RemovedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RemovedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RemovedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_RemovedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RemovedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RemovedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_FailedToBeRemovedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_FailedToBeRemovedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_FailedToBeRemovedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_FailedToBeRemovedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_FailedToBeRemovedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_FailedToBeRemovedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ModifiedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ModifiedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ModifiedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ModifiedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ModifiedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ModifiedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_FailedToBeModifiedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_FailedToBeModifiedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_FailedToBeModifiedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_FailedToBeModifiedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_FailedToBeModifiedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_FailedToBeModifiedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_AddedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_AddedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_AddedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_AddedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_AddedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_AddedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_FailedToBeAddedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_FailedToBeAddedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_FailedToBeAddedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_FailedToBeAddedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_FailedToBeAddedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_FailedToBeAddedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_RequiredToBeModified_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RequiredToBeModified_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RequiredToBeModified_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_RequiredToBeModified_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RequiredToBeModified_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RequiredToBeModified_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_RequiredToBeRemoved_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RequiredToBeRemoved_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RequiredToBeRemoved_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_RequiredToBeRemoved_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RequiredToBeRemoved_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RequiredToBeRemoved_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ConfirmedForModification_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ConfirmedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ConfirmedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ConfirmedForModification_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ConfirmedForModification_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ConfirmedForModification_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_RefusedToBeModified_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RefusedToBeModified_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RefusedToBeModified_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_RefusedToBeModified_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RefusedToBeModified_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RefusedToBeModified_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ConfirmedForRemoval_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ConfirmedForRemoval_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ConfirmedForRemoval_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ConfirmedForRemoval_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ConfirmedForRemoval_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ConfirmedForRemoval_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_RefusedToBeRemoved_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RefusedToBeRemoved_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RefusedToBeRemoved_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_RefusedToBeRemoved_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_RefusedToBeRemoved_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_RefusedToBeRemoved_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2connectionUpdate_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2connectionUpdate_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2connectionUpdateRemove_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateRemove_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateRemove_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2connectionUpdateRemove_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateRemove_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateRemove_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2connectionSetupFailed_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionSetupFailed_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionSetupFailed_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2connectionSetupFailed_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionSetupFailed_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionSetupFailed_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigAddition_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAddition_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigAddition_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAddition_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigUpdate_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigUpdate_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigRemoval_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigRemoval_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeTNLassociationRemoval_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeTNLassociationRemoval_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigAdditionAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigAdditionAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigUpdateAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigUpdateAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigRemovalAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeComponentConfigRemovalAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationRefuse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionModificationRefuse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionModificationRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICindication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICindication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICQueryRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICQueryRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICQueryRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICQueryRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICQueryRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICQueryRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICQueryResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICQueryResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICQueryResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICQueryResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICQueryResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICQueryResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICQueryFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICQueryFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICQueryFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICQueryFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICQueryFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICQueryFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2setupRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2setupRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2setupResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2setupResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2setupFailureIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2setupFailureIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2connectionUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2connectionUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2connectionUpdateAck_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateAck_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateAck_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2connectionUpdateAck_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateAck_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateAck_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2connectionUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2connectionUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeConfigurationUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeConfigurationUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeConfigurationUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeConfigurationUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2nodeConfigurationUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2nodeConfigurationUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2RemovalRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2RemovalRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2RemovalRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2RemovalRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2RemovalRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2RemovalRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2RemovalResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2RemovalResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2RemovalResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2RemovalResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2RemovalResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2RemovalResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2RemovalFailureIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2RemovalFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2RemovalFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2RemovalFailureIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2RemovalFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2RemovalFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_16 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_20 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_28 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_32 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_40 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_44 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_52 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_56 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_64 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_68 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_76 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_80 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_88 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_92 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_100 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_104 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_106 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_107 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_108 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_110 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_111 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_112 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_114 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_115 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_116 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_118 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_119 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_120 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_122 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_123 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_124 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_126 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_127 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_128 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_130 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_131 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_132 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_134 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_135 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_136 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_138 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_139 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_140 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_142 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_143 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_144 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_146 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_147 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_148 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_150 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_151 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_152 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_154 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_155 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_156 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_158 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_159 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_160 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_162 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_163 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_164 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_166 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_167 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_168 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_170 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_171 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_172 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_174 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_175 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_176 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_178 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_179 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_180 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_182 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_183 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_184 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_186 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_187 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_188 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_190 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_191 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_192 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_194 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_195 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_196 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_198 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_199 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_200 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_202 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_203 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_204 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_206 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_207 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_208 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_210 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_211 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_212 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_214 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_215 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_216 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_218 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_219 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_220 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_222 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_223 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_224 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_226 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_227 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_228 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_230 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_231 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_232 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_234 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_235 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_236 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_238 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_239 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_240 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_242 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_243 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_244 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_246 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_247 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_248 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_250 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_251 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_252 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_254 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_255 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_256 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_258 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_259 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_260 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_262 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_263 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_264 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_266 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_267 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_268 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_270 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_271 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_272 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_274 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_275 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_276 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_278 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_279 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_280 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_id_constr_282 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_283 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_284 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs__value, choice.RICaction_ToBeSetup_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ToBeSetup_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-ToBeSetup-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeSetup-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs__value), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, present), + sizeof(((struct RICaction_ToBeSetup_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_4, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_4, + 1, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_1 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_ToBeSetup_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_1 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_4, + select_RICaction_ToBeSetup_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_1 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs), + offsetof(struct RICaction_ToBeSetup_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs = { + "RICaction-ToBeSetup-ItemIEs", + "RICaction-ToBeSetup-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs__value, choice.RICaction_Admitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-Admitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_8[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-Admitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_8 = { + sizeof(struct RICaction_Admitted_ItemIEs__value), + offsetof(struct RICaction_Admitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_Admitted_ItemIEs__value, present), + sizeof(((struct RICaction_Admitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_8, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_8 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_8, + 1, /* Elements count */ + &asn_SPC_value_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_5 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_Admitted_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_5 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_8, + select_RICaction_Admitted_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_5 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_ItemIEs_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5 = { + sizeof(struct RICaction_Admitted_ItemIEs), + offsetof(struct RICaction_Admitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs = { + "RICaction-Admitted-ItemIEs", + "RICaction-Admitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_12[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs__value, choice.RICaction_NotAdmitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_12[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-NotAdmitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_12 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs__value), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, present), + sizeof(((struct RICaction_NotAdmitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_12, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_12 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_12, + 1, /* Elements count */ + &asn_SPC_value_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_10, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_9 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_NotAdmitted_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_9 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_12, + select_RICaction_NotAdmitted_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_12, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_9 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs), + offsetof(struct RICaction_NotAdmitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs = { + "RICaction-NotAdmitted-ItemIEs", + "RICaction-NotAdmitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_16[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs__value, choice.RICsubscription_withCause_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscription_withCause_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscription-withCause-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_16[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICsubscription-withCause-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_16 = { + sizeof(struct RICsubscription_withCause_ItemIEs__value), + offsetof(struct RICsubscription_withCause_ItemIEs__value, _asn_ctx), + offsetof(struct RICsubscription_withCause_ItemIEs__value, present), + sizeof(((struct RICsubscription_withCause_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_16, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_16 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_16, + 1, /* Elements count */ + &asn_SPC_value_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscription_withCause_ItemIEs_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_14, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_13 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscription_withCause_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_15, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_13 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_16, + select_RICsubscription_withCause_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_16, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_13 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscription_withCause_ItemIEs_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscription_withCause_ItemIEs_tag2el_13[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_ItemIEs_specs_13 = { + sizeof(struct RICsubscription_withCause_ItemIEs), + offsetof(struct RICsubscription_withCause_ItemIEs, _asn_ctx), + asn_MAP_RICsubscription_withCause_ItemIEs_tag2el_13, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_ItemIEs = { + "RICsubscription-withCause-ItemIEs", + "RICsubscription-withCause-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscription_withCause_ItemIEs_tags_13, + sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13) + /sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13[0]), /* 1 */ + asn_DEF_RICsubscription_withCause_ItemIEs_tags_13, /* Same as above */ + sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13) + /sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscription_withCause_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RICsubscription_withCause_ItemIEs_specs_13 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_20[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeRemovedForModification_ItemIEs__value, choice.RICaction_ToBeRemovedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ToBeRemovedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-ToBeRemovedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_20[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeRemovedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_20 = { + sizeof(struct RICaction_ToBeRemovedForModification_ItemIEs__value), + offsetof(struct RICaction_ToBeRemovedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ToBeRemovedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_ToBeRemovedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_20, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_20 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_20, + 1, /* Elements count */ + &asn_SPC_value_specs_20 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ToBeRemovedForModification_ItemIEs_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeRemovedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_18, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_17 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeRemovedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_ToBeRemovedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_19, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_17 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeRemovedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_20, + select_RICaction_ToBeRemovedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_20, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_17 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeRemovedForModification_ItemIEs_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeRemovedForModification_ItemIEs_tag2el_17[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeRemovedForModification_ItemIEs_specs_17 = { + sizeof(struct RICaction_ToBeRemovedForModification_ItemIEs), + offsetof(struct RICaction_ToBeRemovedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ToBeRemovedForModification_ItemIEs_tag2el_17, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeRemovedForModification_ItemIEs = { + "RICaction-ToBeRemovedForModification-ItemIEs", + "RICaction-ToBeRemovedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeRemovedForModification_ItemIEs_tags_17, + sizeof(asn_DEF_RICaction_ToBeRemovedForModification_ItemIEs_tags_17) + /sizeof(asn_DEF_RICaction_ToBeRemovedForModification_ItemIEs_tags_17[0]), /* 1 */ + asn_DEF_RICaction_ToBeRemovedForModification_ItemIEs_tags_17, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeRemovedForModification_ItemIEs_tags_17) + /sizeof(asn_DEF_RICaction_ToBeRemovedForModification_ItemIEs_tags_17[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeRemovedForModification_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeRemovedForModification_ItemIEs_specs_17 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_24[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeModifiedForModification_ItemIEs__value, choice.RICaction_ToBeModifiedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ToBeModifiedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-ToBeModifiedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_24[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeModifiedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_24 = { + sizeof(struct RICaction_ToBeModifiedForModification_ItemIEs__value), + offsetof(struct RICaction_ToBeModifiedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ToBeModifiedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_ToBeModifiedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_24, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_24 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_24, + 1, /* Elements count */ + &asn_SPC_value_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ToBeModifiedForModification_ItemIEs_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeModifiedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_22, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_21 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeModifiedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_ToBeModifiedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_23, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_21 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeModifiedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_24, + select_RICaction_ToBeModifiedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_24, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_21 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeModifiedForModification_ItemIEs_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeModifiedForModification_ItemIEs_tag2el_21[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeModifiedForModification_ItemIEs_specs_21 = { + sizeof(struct RICaction_ToBeModifiedForModification_ItemIEs), + offsetof(struct RICaction_ToBeModifiedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ToBeModifiedForModification_ItemIEs_tag2el_21, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeModifiedForModification_ItemIEs = { + "RICaction-ToBeModifiedForModification-ItemIEs", + "RICaction-ToBeModifiedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeModifiedForModification_ItemIEs_tags_21, + sizeof(asn_DEF_RICaction_ToBeModifiedForModification_ItemIEs_tags_21) + /sizeof(asn_DEF_RICaction_ToBeModifiedForModification_ItemIEs_tags_21[0]), /* 1 */ + asn_DEF_RICaction_ToBeModifiedForModification_ItemIEs_tags_21, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeModifiedForModification_ItemIEs_tags_21) + /sizeof(asn_DEF_RICaction_ToBeModifiedForModification_ItemIEs_tags_21[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeModifiedForModification_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeModifiedForModification_ItemIEs_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeAddedForModification_ItemIEs__value, choice.RICaction_ToBeAddedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ToBeAddedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-ToBeAddedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_28[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeAddedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_28 = { + sizeof(struct RICaction_ToBeAddedForModification_ItemIEs__value), + offsetof(struct RICaction_ToBeAddedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ToBeAddedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_ToBeAddedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_28, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_28 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_28, + 1, /* Elements count */ + &asn_SPC_value_specs_28 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ToBeAddedForModification_ItemIEs_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeAddedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_26, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_25 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeAddedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_ToBeAddedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_27, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_25 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeAddedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_28, + select_RICaction_ToBeAddedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_28, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_25 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeAddedForModification_ItemIEs_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeAddedForModification_ItemIEs_tag2el_25[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeAddedForModification_ItemIEs_specs_25 = { + sizeof(struct RICaction_ToBeAddedForModification_ItemIEs), + offsetof(struct RICaction_ToBeAddedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ToBeAddedForModification_ItemIEs_tag2el_25, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeAddedForModification_ItemIEs = { + "RICaction-ToBeAddedForModification-ItemIEs", + "RICaction-ToBeAddedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeAddedForModification_ItemIEs_tags_25, + sizeof(asn_DEF_RICaction_ToBeAddedForModification_ItemIEs_tags_25) + /sizeof(asn_DEF_RICaction_ToBeAddedForModification_ItemIEs_tags_25[0]), /* 1 */ + asn_DEF_RICaction_ToBeAddedForModification_ItemIEs_tags_25, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeAddedForModification_ItemIEs_tags_25) + /sizeof(asn_DEF_RICaction_ToBeAddedForModification_ItemIEs_tags_25[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeAddedForModification_ItemIEs_25, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeAddedForModification_ItemIEs_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_32[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RemovedForModification_ItemIEs__value, choice.RICaction_RemovedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_RemovedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-RemovedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_32[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-RemovedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_32 = { + sizeof(struct RICaction_RemovedForModification_ItemIEs__value), + offsetof(struct RICaction_RemovedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_RemovedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_RemovedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_32, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_32 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_32, + 1, /* Elements count */ + &asn_SPC_value_specs_32 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_RemovedForModification_ItemIEs_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RemovedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_30, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_29 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RemovedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_RemovedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_31, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_29 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_RemovedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_32, + select_RICaction_RemovedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_32, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_29 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RemovedForModification_ItemIEs_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RemovedForModification_ItemIEs_tag2el_29[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RemovedForModification_ItemIEs_specs_29 = { + sizeof(struct RICaction_RemovedForModification_ItemIEs), + offsetof(struct RICaction_RemovedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_RemovedForModification_ItemIEs_tag2el_29, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RemovedForModification_ItemIEs = { + "RICaction-RemovedForModification-ItemIEs", + "RICaction-RemovedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RemovedForModification_ItemIEs_tags_29, + sizeof(asn_DEF_RICaction_RemovedForModification_ItemIEs_tags_29) + /sizeof(asn_DEF_RICaction_RemovedForModification_ItemIEs_tags_29[0]), /* 1 */ + asn_DEF_RICaction_RemovedForModification_ItemIEs_tags_29, /* Same as above */ + sizeof(asn_DEF_RICaction_RemovedForModification_ItemIEs_tags_29) + /sizeof(asn_DEF_RICaction_RemovedForModification_ItemIEs_tags_29[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RemovedForModification_ItemIEs_29, + 3, /* Elements count */ + &asn_SPC_RICaction_RemovedForModification_ItemIEs_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_36[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeRemovedForModification_ItemIEs__value, choice.RICaction_FailedToBeRemovedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_FailedToBeRemovedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-FailedToBeRemovedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_36[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-FailedToBeRemovedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_36 = { + sizeof(struct RICaction_FailedToBeRemovedForModification_ItemIEs__value), + offsetof(struct RICaction_FailedToBeRemovedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_FailedToBeRemovedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_FailedToBeRemovedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_36, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_36 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_36, + 1, /* Elements count */ + &asn_SPC_value_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_FailedToBeRemovedForModification_ItemIEs_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeRemovedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_34, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_33 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeRemovedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_FailedToBeRemovedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_35, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_33 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeRemovedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_36, + select_RICaction_FailedToBeRemovedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_36, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_33 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_FailedToBeRemovedForModification_ItemIEs_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_FailedToBeRemovedForModification_ItemIEs_tag2el_33[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeRemovedForModification_ItemIEs_specs_33 = { + sizeof(struct RICaction_FailedToBeRemovedForModification_ItemIEs), + offsetof(struct RICaction_FailedToBeRemovedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_FailedToBeRemovedForModification_ItemIEs_tag2el_33, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeRemovedForModification_ItemIEs = { + "RICaction-FailedToBeRemovedForModification-ItemIEs", + "RICaction-FailedToBeRemovedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_FailedToBeRemovedForModification_ItemIEs_tags_33, + sizeof(asn_DEF_RICaction_FailedToBeRemovedForModification_ItemIEs_tags_33) + /sizeof(asn_DEF_RICaction_FailedToBeRemovedForModification_ItemIEs_tags_33[0]), /* 1 */ + asn_DEF_RICaction_FailedToBeRemovedForModification_ItemIEs_tags_33, /* Same as above */ + sizeof(asn_DEF_RICaction_FailedToBeRemovedForModification_ItemIEs_tags_33) + /sizeof(asn_DEF_RICaction_FailedToBeRemovedForModification_ItemIEs_tags_33[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_FailedToBeRemovedForModification_ItemIEs_33, + 3, /* Elements count */ + &asn_SPC_RICaction_FailedToBeRemovedForModification_ItemIEs_specs_33 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_40[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ModifiedForModification_ItemIEs__value, choice.RICaction_ModifiedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ModifiedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-ModifiedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_40[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ModifiedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_40 = { + sizeof(struct RICaction_ModifiedForModification_ItemIEs__value), + offsetof(struct RICaction_ModifiedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ModifiedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_ModifiedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_40, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_40 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_40, + 1, /* Elements count */ + &asn_SPC_value_specs_40 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ModifiedForModification_ItemIEs_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ModifiedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_38, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_37 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ModifiedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_ModifiedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_39, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_37 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ModifiedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_40, + select_RICaction_ModifiedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_40, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_37 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ModifiedForModification_ItemIEs_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ModifiedForModification_ItemIEs_tag2el_37[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ModifiedForModification_ItemIEs_specs_37 = { + sizeof(struct RICaction_ModifiedForModification_ItemIEs), + offsetof(struct RICaction_ModifiedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ModifiedForModification_ItemIEs_tag2el_37, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ModifiedForModification_ItemIEs = { + "RICaction-ModifiedForModification-ItemIEs", + "RICaction-ModifiedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ModifiedForModification_ItemIEs_tags_37, + sizeof(asn_DEF_RICaction_ModifiedForModification_ItemIEs_tags_37) + /sizeof(asn_DEF_RICaction_ModifiedForModification_ItemIEs_tags_37[0]), /* 1 */ + asn_DEF_RICaction_ModifiedForModification_ItemIEs_tags_37, /* Same as above */ + sizeof(asn_DEF_RICaction_ModifiedForModification_ItemIEs_tags_37) + /sizeof(asn_DEF_RICaction_ModifiedForModification_ItemIEs_tags_37[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ModifiedForModification_ItemIEs_37, + 3, /* Elements count */ + &asn_SPC_RICaction_ModifiedForModification_ItemIEs_specs_37 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_44[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeModifiedForModification_ItemIEs__value, choice.RICaction_FailedToBeModifiedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_FailedToBeModifiedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-FailedToBeModifiedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_44[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-FailedToBeModifiedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_44 = { + sizeof(struct RICaction_FailedToBeModifiedForModification_ItemIEs__value), + offsetof(struct RICaction_FailedToBeModifiedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_FailedToBeModifiedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_FailedToBeModifiedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_44, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_44 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_44, + 1, /* Elements count */ + &asn_SPC_value_specs_44 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_FailedToBeModifiedForModification_ItemIEs_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeModifiedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_42, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_41 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeModifiedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_FailedToBeModifiedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_43, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_41 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeModifiedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_44, + select_RICaction_FailedToBeModifiedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_44, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_41 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_FailedToBeModifiedForModification_ItemIEs_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_FailedToBeModifiedForModification_ItemIEs_tag2el_41[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeModifiedForModification_ItemIEs_specs_41 = { + sizeof(struct RICaction_FailedToBeModifiedForModification_ItemIEs), + offsetof(struct RICaction_FailedToBeModifiedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_FailedToBeModifiedForModification_ItemIEs_tag2el_41, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeModifiedForModification_ItemIEs = { + "RICaction-FailedToBeModifiedForModification-ItemIEs", + "RICaction-FailedToBeModifiedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_FailedToBeModifiedForModification_ItemIEs_tags_41, + sizeof(asn_DEF_RICaction_FailedToBeModifiedForModification_ItemIEs_tags_41) + /sizeof(asn_DEF_RICaction_FailedToBeModifiedForModification_ItemIEs_tags_41[0]), /* 1 */ + asn_DEF_RICaction_FailedToBeModifiedForModification_ItemIEs_tags_41, /* Same as above */ + sizeof(asn_DEF_RICaction_FailedToBeModifiedForModification_ItemIEs_tags_41) + /sizeof(asn_DEF_RICaction_FailedToBeModifiedForModification_ItemIEs_tags_41[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_FailedToBeModifiedForModification_ItemIEs_41, + 3, /* Elements count */ + &asn_SPC_RICaction_FailedToBeModifiedForModification_ItemIEs_specs_41 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_48[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_AddedForModification_ItemIEs__value, choice.RICaction_AddedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_AddedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-AddedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_48[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-AddedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_48 = { + sizeof(struct RICaction_AddedForModification_ItemIEs__value), + offsetof(struct RICaction_AddedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_AddedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_AddedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_48, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_48 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_48, + 1, /* Elements count */ + &asn_SPC_value_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_AddedForModification_ItemIEs_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_AddedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_46, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_45 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_AddedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_AddedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_47, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_45 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_AddedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_48, + select_RICaction_AddedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_48, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_45 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_AddedForModification_ItemIEs_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_AddedForModification_ItemIEs_tag2el_45[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_AddedForModification_ItemIEs_specs_45 = { + sizeof(struct RICaction_AddedForModification_ItemIEs), + offsetof(struct RICaction_AddedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_AddedForModification_ItemIEs_tag2el_45, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_AddedForModification_ItemIEs = { + "RICaction-AddedForModification-ItemIEs", + "RICaction-AddedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_AddedForModification_ItemIEs_tags_45, + sizeof(asn_DEF_RICaction_AddedForModification_ItemIEs_tags_45) + /sizeof(asn_DEF_RICaction_AddedForModification_ItemIEs_tags_45[0]), /* 1 */ + asn_DEF_RICaction_AddedForModification_ItemIEs_tags_45, /* Same as above */ + sizeof(asn_DEF_RICaction_AddedForModification_ItemIEs_tags_45) + /sizeof(asn_DEF_RICaction_AddedForModification_ItemIEs_tags_45[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_AddedForModification_ItemIEs_45, + 3, /* Elements count */ + &asn_SPC_RICaction_AddedForModification_ItemIEs_specs_45 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_52[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeAddedForModification_ItemIEs__value, choice.RICaction_FailedToBeAddedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_FailedToBeAddedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-FailedToBeAddedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_52[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-FailedToBeAddedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_52 = { + sizeof(struct RICaction_FailedToBeAddedForModification_ItemIEs__value), + offsetof(struct RICaction_FailedToBeAddedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_FailedToBeAddedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_FailedToBeAddedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_52, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_52 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_52, + 1, /* Elements count */ + &asn_SPC_value_specs_52 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_FailedToBeAddedForModification_ItemIEs_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeAddedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_50, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_49 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeAddedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_FailedToBeAddedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_51, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_49 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeAddedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_52, + select_RICaction_FailedToBeAddedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_52, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_49 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_FailedToBeAddedForModification_ItemIEs_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_FailedToBeAddedForModification_ItemIEs_tag2el_49[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeAddedForModification_ItemIEs_specs_49 = { + sizeof(struct RICaction_FailedToBeAddedForModification_ItemIEs), + offsetof(struct RICaction_FailedToBeAddedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_FailedToBeAddedForModification_ItemIEs_tag2el_49, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeAddedForModification_ItemIEs = { + "RICaction-FailedToBeAddedForModification-ItemIEs", + "RICaction-FailedToBeAddedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_FailedToBeAddedForModification_ItemIEs_tags_49, + sizeof(asn_DEF_RICaction_FailedToBeAddedForModification_ItemIEs_tags_49) + /sizeof(asn_DEF_RICaction_FailedToBeAddedForModification_ItemIEs_tags_49[0]), /* 1 */ + asn_DEF_RICaction_FailedToBeAddedForModification_ItemIEs_tags_49, /* Same as above */ + sizeof(asn_DEF_RICaction_FailedToBeAddedForModification_ItemIEs_tags_49) + /sizeof(asn_DEF_RICaction_FailedToBeAddedForModification_ItemIEs_tags_49[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_FailedToBeAddedForModification_ItemIEs_49, + 3, /* Elements count */ + &asn_SPC_RICaction_FailedToBeAddedForModification_ItemIEs_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_56[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeModified_ItemIEs__value, choice.RICaction_RequiredToBeModified_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_RequiredToBeModified_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-RequiredToBeModified-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_56[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-RequiredToBeModified-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_56 = { + sizeof(struct RICaction_RequiredToBeModified_ItemIEs__value), + offsetof(struct RICaction_RequiredToBeModified_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_RequiredToBeModified_ItemIEs__value, present), + sizeof(((struct RICaction_RequiredToBeModified_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_56, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_56 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_56, + 1, /* Elements count */ + &asn_SPC_value_specs_56 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_RequiredToBeModified_ItemIEs_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeModified_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_54, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_53 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeModified_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_RequiredToBeModified_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_55, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_53 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeModified_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_56, + select_RICaction_RequiredToBeModified_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_56, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_53 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RequiredToBeModified_ItemIEs_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RequiredToBeModified_ItemIEs_tag2el_53[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RequiredToBeModified_ItemIEs_specs_53 = { + sizeof(struct RICaction_RequiredToBeModified_ItemIEs), + offsetof(struct RICaction_RequiredToBeModified_ItemIEs, _asn_ctx), + asn_MAP_RICaction_RequiredToBeModified_ItemIEs_tag2el_53, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RequiredToBeModified_ItemIEs = { + "RICaction-RequiredToBeModified-ItemIEs", + "RICaction-RequiredToBeModified-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RequiredToBeModified_ItemIEs_tags_53, + sizeof(asn_DEF_RICaction_RequiredToBeModified_ItemIEs_tags_53) + /sizeof(asn_DEF_RICaction_RequiredToBeModified_ItemIEs_tags_53[0]), /* 1 */ + asn_DEF_RICaction_RequiredToBeModified_ItemIEs_tags_53, /* Same as above */ + sizeof(asn_DEF_RICaction_RequiredToBeModified_ItemIEs_tags_53) + /sizeof(asn_DEF_RICaction_RequiredToBeModified_ItemIEs_tags_53[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RequiredToBeModified_ItemIEs_53, + 3, /* Elements count */ + &asn_SPC_RICaction_RequiredToBeModified_ItemIEs_specs_53 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_60[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeRemoved_ItemIEs__value, choice.RICaction_RequiredToBeRemoved_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_RequiredToBeRemoved_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-RequiredToBeRemoved-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_60[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-RequiredToBeRemoved-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_60 = { + sizeof(struct RICaction_RequiredToBeRemoved_ItemIEs__value), + offsetof(struct RICaction_RequiredToBeRemoved_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_RequiredToBeRemoved_ItemIEs__value, present), + sizeof(((struct RICaction_RequiredToBeRemoved_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_60, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_60 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_60, + 1, /* Elements count */ + &asn_SPC_value_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_RequiredToBeRemoved_ItemIEs_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeRemoved_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_58, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_57 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeRemoved_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_RequiredToBeRemoved_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_59, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_57 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeRemoved_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_60, + select_RICaction_RequiredToBeRemoved_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_60, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_57 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RequiredToBeRemoved_ItemIEs_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RequiredToBeRemoved_ItemIEs_tag2el_57[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RequiredToBeRemoved_ItemIEs_specs_57 = { + sizeof(struct RICaction_RequiredToBeRemoved_ItemIEs), + offsetof(struct RICaction_RequiredToBeRemoved_ItemIEs, _asn_ctx), + asn_MAP_RICaction_RequiredToBeRemoved_ItemIEs_tag2el_57, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RequiredToBeRemoved_ItemIEs = { + "RICaction-RequiredToBeRemoved-ItemIEs", + "RICaction-RequiredToBeRemoved-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RequiredToBeRemoved_ItemIEs_tags_57, + sizeof(asn_DEF_RICaction_RequiredToBeRemoved_ItemIEs_tags_57) + /sizeof(asn_DEF_RICaction_RequiredToBeRemoved_ItemIEs_tags_57[0]), /* 1 */ + asn_DEF_RICaction_RequiredToBeRemoved_ItemIEs_tags_57, /* Same as above */ + sizeof(asn_DEF_RICaction_RequiredToBeRemoved_ItemIEs_tags_57) + /sizeof(asn_DEF_RICaction_RequiredToBeRemoved_ItemIEs_tags_57[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RequiredToBeRemoved_ItemIEs_57, + 3, /* Elements count */ + &asn_SPC_RICaction_RequiredToBeRemoved_ItemIEs_specs_57 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_64[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForModification_ItemIEs__value, choice.RICaction_ConfirmedForModification_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ConfirmedForModification_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-ConfirmedForModification-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_64[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ConfirmedForModification-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_64 = { + sizeof(struct RICaction_ConfirmedForModification_ItemIEs__value), + offsetof(struct RICaction_ConfirmedForModification_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ConfirmedForModification_ItemIEs__value, present), + sizeof(((struct RICaction_ConfirmedForModification_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_64, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_64 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_64, + 1, /* Elements count */ + &asn_SPC_value_specs_64 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ConfirmedForModification_ItemIEs_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForModification_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_62, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_61 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForModification_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_ConfirmedForModification_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_63, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_61 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForModification_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_64, + select_RICaction_ConfirmedForModification_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_64, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_61 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ConfirmedForModification_ItemIEs_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ConfirmedForModification_ItemIEs_tag2el_61[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ConfirmedForModification_ItemIEs_specs_61 = { + sizeof(struct RICaction_ConfirmedForModification_ItemIEs), + offsetof(struct RICaction_ConfirmedForModification_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ConfirmedForModification_ItemIEs_tag2el_61, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ConfirmedForModification_ItemIEs = { + "RICaction-ConfirmedForModification-ItemIEs", + "RICaction-ConfirmedForModification-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ConfirmedForModification_ItemIEs_tags_61, + sizeof(asn_DEF_RICaction_ConfirmedForModification_ItemIEs_tags_61) + /sizeof(asn_DEF_RICaction_ConfirmedForModification_ItemIEs_tags_61[0]), /* 1 */ + asn_DEF_RICaction_ConfirmedForModification_ItemIEs_tags_61, /* Same as above */ + sizeof(asn_DEF_RICaction_ConfirmedForModification_ItemIEs_tags_61) + /sizeof(asn_DEF_RICaction_ConfirmedForModification_ItemIEs_tags_61[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ConfirmedForModification_ItemIEs_61, + 3, /* Elements count */ + &asn_SPC_RICaction_ConfirmedForModification_ItemIEs_specs_61 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_68[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeModified_ItemIEs__value, choice.RICaction_RefusedToBeModified_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_RefusedToBeModified_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-RefusedToBeModified-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_68[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-RefusedToBeModified-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_68 = { + sizeof(struct RICaction_RefusedToBeModified_ItemIEs__value), + offsetof(struct RICaction_RefusedToBeModified_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_RefusedToBeModified_ItemIEs__value, present), + sizeof(((struct RICaction_RefusedToBeModified_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_68, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_68 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_68, + 1, /* Elements count */ + &asn_SPC_value_specs_68 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_RefusedToBeModified_ItemIEs_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeModified_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_66, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_65 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeModified_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_RefusedToBeModified_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_67, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_65 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeModified_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_68, + select_RICaction_RefusedToBeModified_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_68, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_65 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RefusedToBeModified_ItemIEs_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RefusedToBeModified_ItemIEs_tag2el_65[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RefusedToBeModified_ItemIEs_specs_65 = { + sizeof(struct RICaction_RefusedToBeModified_ItemIEs), + offsetof(struct RICaction_RefusedToBeModified_ItemIEs, _asn_ctx), + asn_MAP_RICaction_RefusedToBeModified_ItemIEs_tag2el_65, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RefusedToBeModified_ItemIEs = { + "RICaction-RefusedToBeModified-ItemIEs", + "RICaction-RefusedToBeModified-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RefusedToBeModified_ItemIEs_tags_65, + sizeof(asn_DEF_RICaction_RefusedToBeModified_ItemIEs_tags_65) + /sizeof(asn_DEF_RICaction_RefusedToBeModified_ItemIEs_tags_65[0]), /* 1 */ + asn_DEF_RICaction_RefusedToBeModified_ItemIEs_tags_65, /* Same as above */ + sizeof(asn_DEF_RICaction_RefusedToBeModified_ItemIEs_tags_65) + /sizeof(asn_DEF_RICaction_RefusedToBeModified_ItemIEs_tags_65[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RefusedToBeModified_ItemIEs_65, + 3, /* Elements count */ + &asn_SPC_RICaction_RefusedToBeModified_ItemIEs_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_72[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForRemoval_ItemIEs__value, choice.RICaction_ConfirmedForRemoval_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ConfirmedForRemoval_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-ConfirmedForRemoval-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_72[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ConfirmedForRemoval-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_72 = { + sizeof(struct RICaction_ConfirmedForRemoval_ItemIEs__value), + offsetof(struct RICaction_ConfirmedForRemoval_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ConfirmedForRemoval_ItemIEs__value, present), + sizeof(((struct RICaction_ConfirmedForRemoval_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_72, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_72 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_72, + 1, /* Elements count */ + &asn_SPC_value_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ConfirmedForRemoval_ItemIEs_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForRemoval_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_70, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_69 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForRemoval_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_ConfirmedForRemoval_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_71, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_69 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForRemoval_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_72, + select_RICaction_ConfirmedForRemoval_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_72, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_69 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ConfirmedForRemoval_ItemIEs_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ConfirmedForRemoval_ItemIEs_tag2el_69[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ConfirmedForRemoval_ItemIEs_specs_69 = { + sizeof(struct RICaction_ConfirmedForRemoval_ItemIEs), + offsetof(struct RICaction_ConfirmedForRemoval_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ConfirmedForRemoval_ItemIEs_tag2el_69, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ConfirmedForRemoval_ItemIEs = { + "RICaction-ConfirmedForRemoval-ItemIEs", + "RICaction-ConfirmedForRemoval-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ConfirmedForRemoval_ItemIEs_tags_69, + sizeof(asn_DEF_RICaction_ConfirmedForRemoval_ItemIEs_tags_69) + /sizeof(asn_DEF_RICaction_ConfirmedForRemoval_ItemIEs_tags_69[0]), /* 1 */ + asn_DEF_RICaction_ConfirmedForRemoval_ItemIEs_tags_69, /* Same as above */ + sizeof(asn_DEF_RICaction_ConfirmedForRemoval_ItemIEs_tags_69) + /sizeof(asn_DEF_RICaction_ConfirmedForRemoval_ItemIEs_tags_69[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ConfirmedForRemoval_ItemIEs_69, + 3, /* Elements count */ + &asn_SPC_RICaction_ConfirmedForRemoval_ItemIEs_specs_69 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_76[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeRemoved_ItemIEs__value, choice.RICaction_RefusedToBeRemoved_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_RefusedToBeRemoved_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-RefusedToBeRemoved-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_76[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-RefusedToBeRemoved-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_76 = { + sizeof(struct RICaction_RefusedToBeRemoved_ItemIEs__value), + offsetof(struct RICaction_RefusedToBeRemoved_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_RefusedToBeRemoved_ItemIEs__value, present), + sizeof(((struct RICaction_RefusedToBeRemoved_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_76, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_76 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_76, + 1, /* Elements count */ + &asn_SPC_value_specs_76 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_RefusedToBeRemoved_ItemIEs_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeRemoved_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_74, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_73 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeRemoved_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICaction_RefusedToBeRemoved_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_75, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_73 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeRemoved_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_76, + select_RICaction_RefusedToBeRemoved_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_76, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_73 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RefusedToBeRemoved_ItemIEs_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RefusedToBeRemoved_ItemIEs_tag2el_73[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RefusedToBeRemoved_ItemIEs_specs_73 = { + sizeof(struct RICaction_RefusedToBeRemoved_ItemIEs), + offsetof(struct RICaction_RefusedToBeRemoved_ItemIEs, _asn_ctx), + asn_MAP_RICaction_RefusedToBeRemoved_ItemIEs_tag2el_73, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RefusedToBeRemoved_ItemIEs = { + "RICaction-RefusedToBeRemoved-ItemIEs", + "RICaction-RefusedToBeRemoved-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RefusedToBeRemoved_ItemIEs_tags_73, + sizeof(asn_DEF_RICaction_RefusedToBeRemoved_ItemIEs_tags_73) + /sizeof(asn_DEF_RICaction_RefusedToBeRemoved_ItemIEs_tags_73[0]), /* 1 */ + asn_DEF_RICaction_RefusedToBeRemoved_ItemIEs_tags_73, /* Same as above */ + sizeof(asn_DEF_RICaction_RefusedToBeRemoved_ItemIEs_tags_73) + /sizeof(asn_DEF_RICaction_RefusedToBeRemoved_ItemIEs_tags_73[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RefusedToBeRemoved_ItemIEs_73, + 3, /* Elements count */ + &asn_SPC_RICaction_RefusedToBeRemoved_ItemIEs_specs_73 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_80[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs__value, choice.E2connectionUpdate_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdate_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionUpdate-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_80[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2connectionUpdate-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_80 = { + sizeof(struct E2connectionUpdate_ItemIEs__value), + offsetof(struct E2connectionUpdate_ItemIEs__value, _asn_ctx), + offsetof(struct E2connectionUpdate_ItemIEs__value, present), + sizeof(((struct E2connectionUpdate_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_80, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_80 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_80, + 1, /* Elements count */ + &asn_SPC_value_specs_80 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2connectionUpdate_ItemIEs_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_78, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_77 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2connectionUpdate_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_79, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_77 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_80, + select_E2connectionUpdate_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_80, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_77 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_ItemIEs_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_ItemIEs_tag2el_77[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_ItemIEs_specs_77 = { + sizeof(struct E2connectionUpdate_ItemIEs), + offsetof(struct E2connectionUpdate_ItemIEs, _asn_ctx), + asn_MAP_E2connectionUpdate_ItemIEs_tag2el_77, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_ItemIEs = { + "E2connectionUpdate-ItemIEs", + "E2connectionUpdate-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdate_ItemIEs_tags_77, + sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_77) + /sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_77[0]), /* 1 */ + asn_DEF_E2connectionUpdate_ItemIEs_tags_77, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_77) + /sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_77[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdate_ItemIEs_77, + 3, /* Elements count */ + &asn_SPC_E2connectionUpdate_ItemIEs_specs_77 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_84[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs__value, choice.E2connectionUpdateRemove_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdateRemove_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionUpdateRemove-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_84[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2connectionUpdateRemove-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_84 = { + sizeof(struct E2connectionUpdateRemove_ItemIEs__value), + offsetof(struct E2connectionUpdateRemove_ItemIEs__value, _asn_ctx), + offsetof(struct E2connectionUpdateRemove_ItemIEs__value, present), + sizeof(((struct E2connectionUpdateRemove_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_84, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_84 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_84, + 1, /* Elements count */ + &asn_SPC_value_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_ItemIEs_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_82, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_81 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2connectionUpdateRemove_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_83, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_81 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_84, + select_E2connectionUpdateRemove_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_84, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_81 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateRemove_ItemIEs_tag2el_81[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_81 = { + sizeof(struct E2connectionUpdateRemove_ItemIEs), + offsetof(struct E2connectionUpdateRemove_ItemIEs, _asn_ctx), + asn_MAP_E2connectionUpdateRemove_ItemIEs_tag2el_81, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_ItemIEs = { + "E2connectionUpdateRemove-ItemIEs", + "E2connectionUpdateRemove-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_81, + sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_81) + /sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_81[0]), /* 1 */ + asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_81, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_81) + /sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_81[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdateRemove_ItemIEs_81, + 3, /* Elements count */ + &asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_81 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_88[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs__value, choice.E2connectionSetupFailed_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionSetupFailed_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionSetupFailed-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_88[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2connectionSetupFailed-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_88 = { + sizeof(struct E2connectionSetupFailed_ItemIEs__value), + offsetof(struct E2connectionSetupFailed_ItemIEs__value, _asn_ctx), + offsetof(struct E2connectionSetupFailed_ItemIEs__value, present), + sizeof(((struct E2connectionSetupFailed_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_88, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_88 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_88, + 1, /* Elements count */ + &asn_SPC_value_specs_88 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_ItemIEs_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_86, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_85 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2connectionSetupFailed_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_87, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_85 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_88, + select_E2connectionSetupFailed_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_88, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_85 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionSetupFailed_ItemIEs_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionSetupFailed_ItemIEs_tag2el_85[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_ItemIEs_specs_85 = { + sizeof(struct E2connectionSetupFailed_ItemIEs), + offsetof(struct E2connectionSetupFailed_ItemIEs, _asn_ctx), + asn_MAP_E2connectionSetupFailed_ItemIEs_tag2el_85, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_ItemIEs = { + "E2connectionSetupFailed-ItemIEs", + "E2connectionSetupFailed-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionSetupFailed_ItemIEs_tags_85, + sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_85) + /sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_85[0]), /* 1 */ + asn_DEF_E2connectionSetupFailed_ItemIEs_tags_85, /* Same as above */ + sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_85) + /sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_85[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionSetupFailed_ItemIEs_85, + 3, /* Elements count */ + &asn_SPC_E2connectionSetupFailed_ItemIEs_specs_85 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_92[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs__value, choice.E2nodeComponentConfigAddition_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigAddition_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigAddition-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_92[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigAddition-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_92 = { + sizeof(struct E2nodeComponentConfigAddition_ItemIEs__value), + offsetof(struct E2nodeComponentConfigAddition_ItemIEs__value, _asn_ctx), + offsetof(struct E2nodeComponentConfigAddition_ItemIEs__value, present), + sizeof(((struct E2nodeComponentConfigAddition_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_92, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_92 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_92, + 1, /* Elements count */ + &asn_SPC_value_specs_92 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_ItemIEs_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_90, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_89 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeComponentConfigAddition_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_91, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_89 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_92, + select_E2nodeComponentConfigAddition_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_92, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_89 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAddition_ItemIEs_tag2el_89[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_89 = { + sizeof(struct E2nodeComponentConfigAddition_ItemIEs), + offsetof(struct E2nodeComponentConfigAddition_ItemIEs, _asn_ctx), + asn_MAP_E2nodeComponentConfigAddition_ItemIEs_tag2el_89, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_ItemIEs = { + "E2nodeComponentConfigAddition-ItemIEs", + "E2nodeComponentConfigAddition-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_89, + sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_89) + /sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_89[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_89, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_89) + /sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_89[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigAddition_ItemIEs_89, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_89 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_96[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs__value, choice.E2nodeComponentConfigUpdate_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigUpdate_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigUpdate-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_96[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigUpdate-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_96 = { + sizeof(struct E2nodeComponentConfigUpdate_ItemIEs__value), + offsetof(struct E2nodeComponentConfigUpdate_ItemIEs__value, _asn_ctx), + offsetof(struct E2nodeComponentConfigUpdate_ItemIEs__value, present), + sizeof(((struct E2nodeComponentConfigUpdate_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_96, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_96 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_96, + 1, /* Elements count */ + &asn_SPC_value_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_94, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_93 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeComponentConfigUpdate_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_95, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_93 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_96, + select_E2nodeComponentConfigUpdate_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_96, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_93 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdate_ItemIEs_tag2el_93[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_93 = { + sizeof(struct E2nodeComponentConfigUpdate_ItemIEs), + offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, _asn_ctx), + asn_MAP_E2nodeComponentConfigUpdate_ItemIEs_tag2el_93, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_ItemIEs = { + "E2nodeComponentConfigUpdate-ItemIEs", + "E2nodeComponentConfigUpdate-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_93, + sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_93) + /sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_93[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_93, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_93) + /sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_93[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_93, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_100[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs__value, choice.E2nodeComponentConfigRemoval_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigRemoval_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigRemoval-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_100[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigRemoval-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_100 = { + sizeof(struct E2nodeComponentConfigRemoval_ItemIEs__value), + offsetof(struct E2nodeComponentConfigRemoval_ItemIEs__value, _asn_ctx), + offsetof(struct E2nodeComponentConfigRemoval_ItemIEs__value, present), + sizeof(((struct E2nodeComponentConfigRemoval_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_100, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_100 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_100, + 1, /* Elements count */ + &asn_SPC_value_specs_100 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_98, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_97 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeComponentConfigRemoval_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_99, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_97 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_100, + select_E2nodeComponentConfigRemoval_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_100, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_97 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemoval_ItemIEs_tag2el_97[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_97 = { + sizeof(struct E2nodeComponentConfigRemoval_ItemIEs), + offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, _asn_ctx), + asn_MAP_E2nodeComponentConfigRemoval_ItemIEs_tag2el_97, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_ItemIEs = { + "E2nodeComponentConfigRemoval-ItemIEs", + "E2nodeComponentConfigRemoval-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_97, + sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_97) + /sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_97[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_97, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_97) + /sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_97[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_97, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_97 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_104[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs__value, choice.E2nodeTNLassociationRemoval_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeTNLassociationRemoval_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeTNLassociationRemoval-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_104[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeTNLassociationRemoval-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_104 = { + sizeof(struct E2nodeTNLassociationRemoval_ItemIEs__value), + offsetof(struct E2nodeTNLassociationRemoval_ItemIEs__value, _asn_ctx), + offsetof(struct E2nodeTNLassociationRemoval_ItemIEs__value, present), + sizeof(((struct E2nodeTNLassociationRemoval_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_104, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_104 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_104, + 1, /* Elements count */ + &asn_SPC_value_specs_104 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_102, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_101 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeTNLassociationRemoval_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_103, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_101 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_104, + select_E2nodeTNLassociationRemoval_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_104, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_101 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeTNLassociationRemoval_ItemIEs_tag2el_101[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_101 = { + sizeof(struct E2nodeTNLassociationRemoval_ItemIEs), + offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, _asn_ctx), + asn_MAP_E2nodeTNLassociationRemoval_ItemIEs_tag2el_101, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_ItemIEs = { + "E2nodeTNLassociationRemoval-ItemIEs", + "E2nodeTNLassociationRemoval-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_101, + sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_101) + /sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_101[0]), /* 1 */ + asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_101, /* Same as above */ + sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_101) + /sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_101[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_101, + 3, /* Elements count */ + &asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_101 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_108[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value, choice.E2nodeComponentConfigAdditionAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigAdditionAck_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigAdditionAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_108[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigAdditionAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_108 = { + sizeof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value), + offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value, _asn_ctx), + offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value, present), + sizeof(((struct E2nodeComponentConfigAdditionAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_108, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_108 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_108, + 1, /* Elements count */ + &asn_SPC_value_specs_108 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_105[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_106, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_105 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeComponentConfigAdditionAck_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_107, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_105 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_108, + select_E2nodeComponentConfigAdditionAck_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_108, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_105 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAdditionAck_ItemIEs_tag2el_105[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_105 = { + sizeof(struct E2nodeComponentConfigAdditionAck_ItemIEs), + offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, _asn_ctx), + asn_MAP_E2nodeComponentConfigAdditionAck_ItemIEs_tag2el_105, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs = { + "E2nodeComponentConfigAdditionAck-ItemIEs", + "E2nodeComponentConfigAdditionAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_105, + sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_105) + /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_105[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_105, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_105) + /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_105[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_105, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_105 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_112[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value, choice.E2nodeComponentConfigUpdateAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigUpdateAck_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigUpdateAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_112[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigUpdateAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_112 = { + sizeof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value), + offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value, _asn_ctx), + offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value, present), + sizeof(((struct E2nodeComponentConfigUpdateAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_112, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_112 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_112, + 1, /* Elements count */ + &asn_SPC_value_specs_112 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_109[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_110, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_109 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeComponentConfigUpdateAck_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_111, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_109 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_112, + select_E2nodeComponentConfigUpdateAck_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_112, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_109 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdateAck_ItemIEs_tag2el_109[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_109 = { + sizeof(struct E2nodeComponentConfigUpdateAck_ItemIEs), + offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, _asn_ctx), + asn_MAP_E2nodeComponentConfigUpdateAck_ItemIEs_tag2el_109, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs = { + "E2nodeComponentConfigUpdateAck-ItemIEs", + "E2nodeComponentConfigUpdateAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_109, + sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_109) + /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_109[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_109, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_109) + /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_109[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_109, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_109 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_116[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value, choice.E2nodeComponentConfigRemovalAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigRemovalAck_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigRemovalAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_116[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigRemovalAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_116 = { + sizeof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value), + offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value, _asn_ctx), + offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value, present), + sizeof(((struct E2nodeComponentConfigRemovalAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_116, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_116 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_116, + 1, /* Elements count */ + &asn_SPC_value_specs_116 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_113[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_114, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_113 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeComponentConfigRemovalAck_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_115, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_113 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_116, + select_E2nodeComponentConfigRemovalAck_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_116, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_113 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemovalAck_ItemIEs_tag2el_113[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_113 = { + sizeof(struct E2nodeComponentConfigRemovalAck_ItemIEs), + offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, _asn_ctx), + asn_MAP_E2nodeComponentConfigRemovalAck_ItemIEs_tag2el_113, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs = { + "E2nodeComponentConfigRemovalAck-ItemIEs", + "E2nodeComponentConfigRemovalAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_113, + sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_113) + /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_113[0]), /* 1 */ + asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_113, /* Same as above */ + sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_113) + /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_113[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_113, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_113 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_120[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs__value, choice.RANfunction_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunction_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunction-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_120[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunction-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_120 = { + sizeof(struct RANfunction_ItemIEs__value), + offsetof(struct RANfunction_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunction_ItemIEs__value, present), + sizeof(((struct RANfunction_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_120, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_120 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_120, + 1, /* Elements count */ + &asn_SPC_value_specs_120 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_117[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_118, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_117 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RANfunction_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_119, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_117 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_120, + select_RANfunction_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_120, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_117 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_ItemIEs_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_ItemIEs_tag2el_117[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_117 = { + sizeof(struct RANfunction_ItemIEs), + offsetof(struct RANfunction_ItemIEs, _asn_ctx), + asn_MAP_RANfunction_ItemIEs_tag2el_117, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs = { + "RANfunction-ItemIEs", + "RANfunction-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_ItemIEs_tags_117, + sizeof(asn_DEF_RANfunction_ItemIEs_tags_117) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_117[0]), /* 1 */ + asn_DEF_RANfunction_ItemIEs_tags_117, /* Same as above */ + sizeof(asn_DEF_RANfunction_ItemIEs_tags_117) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_117[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunction_ItemIEs_117, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_117 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_124[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs__value, choice.RANfunctionID_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionID_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_124[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionID-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_124 = { + sizeof(struct RANfunctionID_ItemIEs__value), + offsetof(struct RANfunctionID_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionID_ItemIEs__value, present), + sizeof(((struct RANfunctionID_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_124, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_124 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_124, + 1, /* Elements count */ + &asn_SPC_value_specs_124 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_121[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_122, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_121 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RANfunctionID_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_123, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_121 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_124, + select_RANfunctionID_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_124, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_121 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_ItemIEs_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_ItemIEs_tag2el_121[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_121 = { + sizeof(struct RANfunctionID_ItemIEs), + offsetof(struct RANfunctionID_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionID_ItemIEs_tag2el_121, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs = { + "RANfunctionID-ItemIEs", + "RANfunctionID-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_ItemIEs_tags_121, + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_121) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_121[0]), /* 1 */ + asn_DEF_RANfunctionID_ItemIEs_tags_121, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_121) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_121[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunctionID_ItemIEs_121, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_121 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_128[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs__value, choice.RANfunctionIDcause_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionIDcause_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionIDcause-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_128[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionIDcause-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_128 = { + sizeof(struct RANfunctionIDcause_ItemIEs__value), + offsetof(struct RANfunctionIDcause_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionIDcause_ItemIEs__value, present), + sizeof(((struct RANfunctionIDcause_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_128, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_128 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_128, + 1, /* Elements count */ + &asn_SPC_value_specs_128 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_125[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_126, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_125 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RANfunctionIDcause_ItemIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_127, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_125 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_128, + select_RANfunctionIDcause_ItemIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_128, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_125 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_ItemIEs_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_125[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_125 = { + sizeof(struct RANfunctionIDcause_ItemIEs), + offsetof(struct RANfunctionIDcause_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_125, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs = { + "RANfunctionIDcause-ItemIEs", + "RANfunctionIDcause-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_ItemIEs_tags_125, + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_125) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_125[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_ItemIEs_tags_125, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_125) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_125[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunctionIDcause_ItemIEs_125, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_125 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_132[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscriptionDetails), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDetails, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionDetails" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscriptionTime), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICsubscriptionTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscriptionTime_1), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICsubscriptionTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionTime" + }, +}; +static const unsigned asn_MAP_value_to_canonical_132[] = { 1, 3, 4, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_132[] = { 3, 0, 4, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_132[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 1 }, /* RICsubscriptionTime */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICsubscriptionTime */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RICsubscriptionDetails */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_132 = { + sizeof(struct RICsubscriptionRequest_IEs__value), + offsetof(struct RICsubscriptionRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionRequest_IEs__value, present), + sizeof(((struct RICsubscriptionRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_132, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_132, + asn_MAP_value_from_canonical_132, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_132 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_132, + 5, /* Elements count */ + &asn_SPC_value_specs_132 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_129[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_130, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_129 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionRequest_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_131, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_129 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_132, + select_RICsubscriptionRequest_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_132, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_129 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_IEs_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_IEs_tag2el_129[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_129 = { + sizeof(struct RICsubscriptionRequest_IEs), + offsetof(struct RICsubscriptionRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionRequest_IEs_tag2el_129, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs = { + "RICsubscriptionRequest-IEs", + "RICsubscriptionRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_IEs_tags_129, + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_129) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_129[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_IEs_tags_129, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_129) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_129[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionRequest_IEs_129, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_IEs_specs_129 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_136[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_Admitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-Admitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_NotAdmitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_136[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_136[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_136[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-Admitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RICaction-NotAdmitted-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_136 = { + sizeof(struct RICsubscriptionResponse_IEs__value), + offsetof(struct RICsubscriptionResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionResponse_IEs__value, present), + sizeof(((struct RICsubscriptionResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_136, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_136, + asn_MAP_value_from_canonical_136, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_136 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_136, + 4, /* Elements count */ + &asn_SPC_value_specs_136 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_133[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_134, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_133 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionResponse_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_135, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_133 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_136, + select_RICsubscriptionResponse_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_136, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_133 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_IEs_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_IEs_tag2el_133[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_133 = { + sizeof(struct RICsubscriptionResponse_IEs), + offsetof(struct RICsubscriptionResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionResponse_IEs_tag2el_133, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs = { + "RICsubscriptionResponse-IEs", + "RICsubscriptionResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_IEs_tags_133, + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_133) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_133[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_IEs_tags_133, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_133) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_133[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionResponse_IEs_133, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_IEs_specs_133 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_140[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_140[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_140[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_140[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_140 = { + sizeof(struct RICsubscriptionFailure_IEs__value), + offsetof(struct RICsubscriptionFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionFailure_IEs__value, present), + sizeof(((struct RICsubscriptionFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_140, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_140, + asn_MAP_value_from_canonical_140, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_140 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_140, + 4, /* Elements count */ + &asn_SPC_value_specs_140 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_137[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_138, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_137 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionFailure_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_139, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_137 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_140, + select_RICsubscriptionFailure_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_140, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_137 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_IEs_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_IEs_tag2el_137[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_137 = { + sizeof(struct RICsubscriptionFailure_IEs), + offsetof(struct RICsubscriptionFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionFailure_IEs_tag2el_137, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs = { + "RICsubscriptionFailure-IEs", + "RICsubscriptionFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_IEs_tags_137, + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_137) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_137[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_IEs_tags_137, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_137) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_137[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionFailure_IEs_137, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_IEs_specs_137 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_144[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_144[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_144[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_144[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_144 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs__value), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_144, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_144, + asn_MAP_value_from_canonical_144, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_144 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_144, + 2, /* Elements count */ + &asn_SPC_value_specs_144 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_141[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_142, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_141 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionDeleteRequest_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_143, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_141 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_144, + select_RICsubscriptionDeleteRequest_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_144, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_141 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_141[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_141 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs), + offsetof(struct RICsubscriptionDeleteRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_141, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs = { + "RICsubscriptionDeleteRequest-IEs", + "RICsubscriptionDeleteRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_141, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_141) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_141[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_141, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_141) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_141[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionDeleteRequest_IEs_141, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_141 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_148[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_148[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_148[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_148[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_148 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs__value), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_148, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_148, + asn_MAP_value_from_canonical_148, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_148 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_148, + 2, /* Elements count */ + &asn_SPC_value_specs_148 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_145[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_146, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_145 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionDeleteResponse_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_147, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_145 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_148, + select_RICsubscriptionDeleteResponse_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_148, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_145 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_145[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_145 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs), + offsetof(struct RICsubscriptionDeleteResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_145, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs = { + "RICsubscriptionDeleteResponse-IEs", + "RICsubscriptionDeleteResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_145, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_145) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_145[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_145, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_145) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_145[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionDeleteResponse_IEs_145, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_145 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_152[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_152[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_152[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_152[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_152 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs__value), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_152, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_152, + asn_MAP_value_from_canonical_152, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_152 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_152, + 4, /* Elements count */ + &asn_SPC_value_specs_152 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_149[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_150, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_149 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionDeleteFailure_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_151, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_149 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_152, + select_RICsubscriptionDeleteFailure_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_152, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_149 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_149[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_149 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs), + offsetof(struct RICsubscriptionDeleteFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_149, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs = { + "RICsubscriptionDeleteFailure-IEs", + "RICsubscriptionDeleteFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_149, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_149) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_149[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_149, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_149) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_149[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionDeleteFailure_IEs_149, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_149 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_156[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs__value, choice.RICsubscription_List_withCause), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscription_List_withCause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscription-List-withCause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_156[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICsubscription-List-withCause */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_156 = { + sizeof(struct RICsubscriptionDeleteRequired_IEs__value), + offsetof(struct RICsubscriptionDeleteRequired_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteRequired_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_156, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_156 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_156, + 1, /* Elements count */ + &asn_SPC_value_specs_156 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_IEs_153[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_154, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_153 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionDeleteRequired_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_155, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_153 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_156, + select_RICsubscriptionDeleteRequired_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_156, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_153 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequired_IEs_tag2el_153[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_IEs_specs_153 = { + sizeof(struct RICsubscriptionDeleteRequired_IEs), + offsetof(struct RICsubscriptionDeleteRequired_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequired_IEs_tag2el_153, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired_IEs = { + "RICsubscriptionDeleteRequired-IEs", + "RICsubscriptionDeleteRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_153, + sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_153) + /sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_153[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_153, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_153) + /sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_153[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionDeleteRequired_IEs_153, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequired_IEs_specs_153 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_160[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest_IEs__value, choice.RICeventTriggerDefinition), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICeventTriggerDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICeventTriggerDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest_IEs__value, choice.RICactions_ToBeRemovedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_ToBeRemovedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-ToBeRemovedForModification-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest_IEs__value, choice.RICactions_ToBeModifiedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_ToBeModifiedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-ToBeModifiedForModification-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest_IEs__value, choice.RICactions_ToBeAddedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_ToBeAddedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-ToBeAddedForModification-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_160[] = { 1, 2, 0, 3, 4, 5 }; +static const unsigned asn_MAP_value_from_canonical_160[] = { 2, 0, 1, 3, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_160[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* RICeventTriggerDefinition */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 3 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* RICactions-ToBeRemovedForModification-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 1 }, /* RICactions-ToBeModifiedForModification-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 0 } /* RICactions-ToBeAddedForModification-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_160 = { + sizeof(struct RICsubscriptionModificationRequest_IEs__value), + offsetof(struct RICsubscriptionModificationRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionModificationRequest_IEs__value, present), + sizeof(((struct RICsubscriptionModificationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_160, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_160, + asn_MAP_value_from_canonical_160, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_160 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_160, + 6, /* Elements count */ + &asn_SPC_value_specs_160 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRequest_IEs_157[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_158, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_157 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionModificationRequest_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_159, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_157 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_160, + select_RICsubscriptionModificationRequest_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_160, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_157 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationRequest_IEs_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationRequest_IEs_tag2el_157[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRequest_IEs_specs_157 = { + sizeof(struct RICsubscriptionModificationRequest_IEs), + offsetof(struct RICsubscriptionModificationRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionModificationRequest_IEs_tag2el_157, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRequest_IEs = { + "RICsubscriptionModificationRequest-IEs", + "RICsubscriptionModificationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationRequest_IEs_tags_157, + sizeof(asn_DEF_RICsubscriptionModificationRequest_IEs_tags_157) + /sizeof(asn_DEF_RICsubscriptionModificationRequest_IEs_tags_157[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationRequest_IEs_tags_157, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationRequest_IEs_tags_157) + /sizeof(asn_DEF_RICsubscriptionModificationRequest_IEs_tags_157[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationRequest_IEs_157, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionModificationRequest_IEs_specs_157 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_164[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs__value, choice.RICactions_RemovedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_RemovedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-RemovedForModification-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs__value, choice.RICactions_FailedToBeRemovedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_FailedToBeRemovedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-FailedToBeRemovedForModification-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs__value, choice.RICactions_ModifiedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_ModifiedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-ModifiedForModification-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs__value, choice.RICactions_FailedToBeModifiedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_FailedToBeModifiedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-FailedToBeModifiedForModification-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs__value, choice.RICactions_AddedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_AddedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-AddedForModification-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs__value, choice.RICactions_FailedToBeAddedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_FailedToBeAddedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-FailedToBeAddedForModification-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_164[] = { 1, 0, 2, 3, 4, 5, 6, 7 }; +static const unsigned asn_MAP_value_from_canonical_164[] = { 1, 0, 2, 3, 4, 5, 6, 7 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_164[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 6 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 5 }, /* RICactions-RemovedForModification-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 4 }, /* RICactions-FailedToBeRemovedForModification-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 3 }, /* RICactions-ModifiedForModification-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -4, 2 }, /* RICactions-FailedToBeModifiedForModification-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -5, 1 }, /* RICactions-AddedForModification-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -6, 0 } /* RICactions-FailedToBeAddedForModification-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_164 = { + sizeof(struct RICsubscriptionModificationResponse_IEs__value), + offsetof(struct RICsubscriptionModificationResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionModificationResponse_IEs__value, present), + sizeof(((struct RICsubscriptionModificationResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_164, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_164, + asn_MAP_value_from_canonical_164, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_164 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_164, + 8, /* Elements count */ + &asn_SPC_value_specs_164 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationResponse_IEs_161[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_162, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_161 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionModificationResponse_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_163, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_161 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_164, + select_RICsubscriptionModificationResponse_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_164, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_161 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationResponse_IEs_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationResponse_IEs_tag2el_161[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationResponse_IEs_specs_161 = { + sizeof(struct RICsubscriptionModificationResponse_IEs), + offsetof(struct RICsubscriptionModificationResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionModificationResponse_IEs_tag2el_161, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationResponse_IEs = { + "RICsubscriptionModificationResponse-IEs", + "RICsubscriptionModificationResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationResponse_IEs_tags_161, + sizeof(asn_DEF_RICsubscriptionModificationResponse_IEs_tags_161) + /sizeof(asn_DEF_RICsubscriptionModificationResponse_IEs_tags_161[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationResponse_IEs_tags_161, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationResponse_IEs_tags_161) + /sizeof(asn_DEF_RICsubscriptionModificationResponse_IEs_tags_161[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationResponse_IEs_161, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionModificationResponse_IEs_specs_161 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_168[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_168[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_168[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_168[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_168 = { + sizeof(struct RICsubscriptionModificationFailure_IEs__value), + offsetof(struct RICsubscriptionModificationFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionModificationFailure_IEs__value, present), + sizeof(((struct RICsubscriptionModificationFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_168, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_168, + asn_MAP_value_from_canonical_168, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_168 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_168, + 4, /* Elements count */ + &asn_SPC_value_specs_168 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationFailure_IEs_165[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationFailure_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_166, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_165 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationFailure_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionModificationFailure_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_167, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_165 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationFailure_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_168, + select_RICsubscriptionModificationFailure_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_168, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_165 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationFailure_IEs_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationFailure_IEs_tag2el_165[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationFailure_IEs_specs_165 = { + sizeof(struct RICsubscriptionModificationFailure_IEs), + offsetof(struct RICsubscriptionModificationFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionModificationFailure_IEs_tag2el_165, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationFailure_IEs = { + "RICsubscriptionModificationFailure-IEs", + "RICsubscriptionModificationFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationFailure_IEs_tags_165, + sizeof(asn_DEF_RICsubscriptionModificationFailure_IEs_tags_165) + /sizeof(asn_DEF_RICsubscriptionModificationFailure_IEs_tags_165[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationFailure_IEs_tags_165, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationFailure_IEs_tags_165) + /sizeof(asn_DEF_RICsubscriptionModificationFailure_IEs_tags_165[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationFailure_IEs_165, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionModificationFailure_IEs_specs_165 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_172[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequired_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequired_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequired_IEs__value, choice.RICactions_RequiredToBeModified_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_RequiredToBeModified_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-RequiredToBeModified-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequired_IEs__value, choice.RICactions_RequiredToBeRemoved_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_RequiredToBeRemoved_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-RequiredToBeRemoved-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_172[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_172[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_172[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICactions-RequiredToBeModified-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RICactions-RequiredToBeRemoved-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_172 = { + sizeof(struct RICsubscriptionModificationRequired_IEs__value), + offsetof(struct RICsubscriptionModificationRequired_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionModificationRequired_IEs__value, present), + sizeof(((struct RICsubscriptionModificationRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_172, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_172, + asn_MAP_value_from_canonical_172, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_172 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_172, + 4, /* Elements count */ + &asn_SPC_value_specs_172 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRequired_IEs_169[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequired_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_170, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_169 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequired_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionModificationRequired_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_171, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_169 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequired_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_172, + select_RICsubscriptionModificationRequired_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_172, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_169 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationRequired_IEs_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationRequired_IEs_tag2el_169[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRequired_IEs_specs_169 = { + sizeof(struct RICsubscriptionModificationRequired_IEs), + offsetof(struct RICsubscriptionModificationRequired_IEs, _asn_ctx), + asn_MAP_RICsubscriptionModificationRequired_IEs_tag2el_169, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRequired_IEs = { + "RICsubscriptionModificationRequired-IEs", + "RICsubscriptionModificationRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationRequired_IEs_tags_169, + sizeof(asn_DEF_RICsubscriptionModificationRequired_IEs_tags_169) + /sizeof(asn_DEF_RICsubscriptionModificationRequired_IEs_tags_169[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationRequired_IEs_tags_169, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationRequired_IEs_tags_169) + /sizeof(asn_DEF_RICsubscriptionModificationRequired_IEs_tags_169[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationRequired_IEs_169, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionModificationRequired_IEs_specs_169 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_176[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm_IEs__value, choice.RICactions_ConfirmedForModification_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_ConfirmedForModification_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-ConfirmedForModification-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm_IEs__value, choice.RICactions_RefusedToBeModified_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_RefusedToBeModified_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-RefusedToBeModified-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm_IEs__value, choice.RICactions_ConfirmedForRemoval_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_ConfirmedForRemoval_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-ConfirmedForRemoval-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm_IEs__value, choice.RICactions_RefusedToBeRemoved_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICactions_RefusedToBeRemoved_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactions-RefusedToBeRemoved-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_176[] = { 1, 0, 2, 3, 4, 5 }; +static const unsigned asn_MAP_value_from_canonical_176[] = { 1, 0, 2, 3, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_176[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 4 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 3 }, /* RICactions-ConfirmedForModification-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 2 }, /* RICactions-RefusedToBeModified-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 1 }, /* RICactions-ConfirmedForRemoval-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -4, 0 } /* RICactions-RefusedToBeRemoved-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_176 = { + sizeof(struct RICsubscriptionModificationConfirm_IEs__value), + offsetof(struct RICsubscriptionModificationConfirm_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionModificationConfirm_IEs__value, present), + sizeof(((struct RICsubscriptionModificationConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_176, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_176, + asn_MAP_value_from_canonical_176, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_176 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_176, + 6, /* Elements count */ + &asn_SPC_value_specs_176 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationConfirm_IEs_173[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_174, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_173 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionModificationConfirm_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_175, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_173 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_176, + select_RICsubscriptionModificationConfirm_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_176, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_173 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationConfirm_IEs_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationConfirm_IEs_tag2el_173[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationConfirm_IEs_specs_173 = { + sizeof(struct RICsubscriptionModificationConfirm_IEs), + offsetof(struct RICsubscriptionModificationConfirm_IEs, _asn_ctx), + asn_MAP_RICsubscriptionModificationConfirm_IEs_tag2el_173, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationConfirm_IEs = { + "RICsubscriptionModificationConfirm-IEs", + "RICsubscriptionModificationConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationConfirm_IEs_tags_173, + sizeof(asn_DEF_RICsubscriptionModificationConfirm_IEs_tags_173) + /sizeof(asn_DEF_RICsubscriptionModificationConfirm_IEs_tags_173[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationConfirm_IEs_tags_173, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationConfirm_IEs_tags_173) + /sizeof(asn_DEF_RICsubscriptionModificationConfirm_IEs_tags_173[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationConfirm_IEs_173, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionModificationConfirm_IEs_specs_173 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_180[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRefuse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRefuse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRefuse_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRefuse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_180[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_180[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_180[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_180 = { + sizeof(struct RICsubscriptionModificationRefuse_IEs__value), + offsetof(struct RICsubscriptionModificationRefuse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionModificationRefuse_IEs__value, present), + sizeof(((struct RICsubscriptionModificationRefuse_IEs__value *)0)->present), + asn_MAP_value_tag2el_180, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_180, + asn_MAP_value_from_canonical_180, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_180 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_180, + 4, /* Elements count */ + &asn_SPC_value_specs_180 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRefuse_IEs_177[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRefuse_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_178, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_177 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRefuse_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICsubscriptionModificationRefuse_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_179, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_177 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRefuse_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_180, + select_RICsubscriptionModificationRefuse_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_180, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_177 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationRefuse_IEs_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationRefuse_IEs_tag2el_177[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRefuse_IEs_specs_177 = { + sizeof(struct RICsubscriptionModificationRefuse_IEs), + offsetof(struct RICsubscriptionModificationRefuse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionModificationRefuse_IEs_tag2el_177, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRefuse_IEs = { + "RICsubscriptionModificationRefuse-IEs", + "RICsubscriptionModificationRefuse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationRefuse_IEs_tags_177, + sizeof(asn_DEF_RICsubscriptionModificationRefuse_IEs_tags_177) + /sizeof(asn_DEF_RICsubscriptionModificationRefuse_IEs_tags_177[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationRefuse_IEs_tags_177, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationRefuse_IEs_tags_177) + /sizeof(asn_DEF_RICsubscriptionModificationRefuse_IEs_tags_177[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationRefuse_IEs_177, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionModificationRefuse_IEs_specs_177 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_184[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationSN), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICindicationSN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICindicationSN" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICindicationType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICindicationType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationHeader, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICindicationHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICindicationMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_184[] = { 1, 2, 3, 5, 6, 7, 4, 0 }; +static const unsigned asn_MAP_value_from_canonical_184[] = { 7, 0, 1, 2, 6, 3, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_184[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 2 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* RICactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* RICindicationSN */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 2 }, /* RICindicationHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* RICindicationMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* RICindicationType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_184 = { + sizeof(struct RICindication_IEs__value), + offsetof(struct RICindication_IEs__value, _asn_ctx), + offsetof(struct RICindication_IEs__value, present), + sizeof(((struct RICindication_IEs__value *)0)->present), + asn_MAP_value_tag2el_184, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_184, + asn_MAP_value_from_canonical_184, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_184 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_184, + 8, /* Elements count */ + &asn_SPC_value_specs_184 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICindication_IEs_181[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_182, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_181 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICindication_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_183, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_181 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_184, + select_RICindication_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_184, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_181 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_IEs_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_IEs_tag2el_181[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_181 = { + sizeof(struct RICindication_IEs), + offsetof(struct RICindication_IEs, _asn_ctx), + asn_MAP_RICindication_IEs_tag2el_181, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication_IEs = { + "RICindication-IEs", + "RICindication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_IEs_tags_181, + sizeof(asn_DEF_RICindication_IEs_tags_181) + /sizeof(asn_DEF_RICindication_IEs_tags_181[0]), /* 1 */ + asn_DEF_RICindication_IEs_tags_181, /* Same as above */ + sizeof(asn_DEF_RICindication_IEs_tags_181) + /sizeof(asn_DEF_RICindication_IEs_tags_181[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICindication_IEs_181, + 3, /* Elements count */ + &asn_SPC_RICindication_IEs_specs_181 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_188[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolHeader, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcontrolHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolMessage, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcontrolMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolAckRequest), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICcontrolAckRequest, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcontrolAckRequest" + }, +}; +static const unsigned asn_MAP_value_to_canonical_188[] = { 1, 2, 3, 4, 5, 0 }; +static const unsigned asn_MAP_value_from_canonical_188[] = { 5, 0, 1, 2, 3, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_188[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 2 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 1 }, /* RICcontrolHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -2, 0 }, /* RICcontrolMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* RICcontrolAckRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_188 = { + sizeof(struct RICcontrolRequest_IEs__value), + offsetof(struct RICcontrolRequest_IEs__value, _asn_ctx), + offsetof(struct RICcontrolRequest_IEs__value, present), + sizeof(((struct RICcontrolRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_188, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_188, + asn_MAP_value_from_canonical_188, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_188 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_188, + 6, /* Elements count */ + &asn_SPC_value_specs_188 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_185[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_186, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_185 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICcontrolRequest_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_187, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_185 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_188, + select_RICcontrolRequest_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_188, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_185 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_IEs_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_IEs_tag2el_185[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_185 = { + sizeof(struct RICcontrolRequest_IEs), + offsetof(struct RICcontrolRequest_IEs, _asn_ctx), + asn_MAP_RICcontrolRequest_IEs_tag2el_185, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs = { + "RICcontrolRequest-IEs", + "RICcontrolRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_IEs_tags_185, + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_185) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_185[0]), /* 1 */ + asn_DEF_RICcontrolRequest_IEs_tags_185, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_185) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_185[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICcontrolRequest_IEs_185, + 3, /* Elements count */ + &asn_SPC_RICcontrolRequest_IEs_specs_185 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_192[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolOutcome), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolOutcome, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcontrolOutcome" + }, +}; +static const unsigned asn_MAP_value_to_canonical_192[] = { 1, 2, 3, 0 }; +static const unsigned asn_MAP_value_from_canonical_192[] = { 3, 0, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_192[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 0 }, /* RICcontrolOutcome */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_192 = { + sizeof(struct RICcontrolAcknowledge_IEs__value), + offsetof(struct RICcontrolAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICcontrolAcknowledge_IEs__value, present), + sizeof(((struct RICcontrolAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_192, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_192, + asn_MAP_value_from_canonical_192, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_192 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_192, + 4, /* Elements count */ + &asn_SPC_value_specs_192 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_189[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_190, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_189 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICcontrolAcknowledge_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_191, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_189 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_192, + select_RICcontrolAcknowledge_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_192, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_189 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_IEs_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_IEs_tag2el_189[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_189 = { + sizeof(struct RICcontrolAcknowledge_IEs), + offsetof(struct RICcontrolAcknowledge_IEs, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_IEs_tag2el_189, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs = { + "RICcontrolAcknowledge-IEs", + "RICcontrolAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_IEs_tags_189, + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_189) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_189[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_IEs_tags_189, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_189) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_189[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICcontrolAcknowledge_IEs_189, + 3, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_IEs_specs_189 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_196[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcontrolOutcome), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolOutcome, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcontrolOutcome" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_196[] = { 1, 2, 4, 0, 5, 3 }; +static const unsigned asn_MAP_value_from_canonical_196[] = { 3, 0, 1, 5, 2, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_196[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICcontrolOutcome */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_196 = { + sizeof(struct RICcontrolFailure_IEs__value), + offsetof(struct RICcontrolFailure_IEs__value, _asn_ctx), + offsetof(struct RICcontrolFailure_IEs__value, present), + sizeof(((struct RICcontrolFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_196, + 11, /* Count of tags in the map */ + asn_MAP_value_to_canonical_196, + asn_MAP_value_from_canonical_196, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_196 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_196, + 6, /* Elements count */ + &asn_SPC_value_specs_196 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_193[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_194, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_193 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICcontrolFailure_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_195, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_193 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_196, + select_RICcontrolFailure_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_196, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_193 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_IEs_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_IEs_tag2el_193[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_193 = { + sizeof(struct RICcontrolFailure_IEs), + offsetof(struct RICcontrolFailure_IEs, _asn_ctx), + asn_MAP_RICcontrolFailure_IEs_tag2el_193, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs = { + "RICcontrolFailure-IEs", + "RICcontrolFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_IEs_tags_193, + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_193) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_193[0]), /* 1 */ + asn_DEF_RICcontrolFailure_IEs_tags_193, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_193) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_193[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICcontrolFailure_IEs_193, + 3, /* Elements count */ + &asn_SPC_RICcontrolFailure_IEs_specs_193 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_200[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICQueryRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryRequest_IEs__value, choice.RICqueryHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICqueryHeader, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICqueryHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryRequest_IEs__value, choice.RICqueryDefinition), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICqueryDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICqueryDefinition" + }, +}; +static const unsigned asn_MAP_value_to_canonical_200[] = { 1, 2, 3, 0 }; +static const unsigned asn_MAP_value_from_canonical_200[] = { 3, 0, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_200[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICqueryHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 0 }, /* RICqueryDefinition */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_200 = { + sizeof(struct RICQueryRequest_IEs__value), + offsetof(struct RICQueryRequest_IEs__value, _asn_ctx), + offsetof(struct RICQueryRequest_IEs__value, present), + sizeof(((struct RICQueryRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_200, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_200, + asn_MAP_value_from_canonical_200, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_200 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_200, + 4, /* Elements count */ + &asn_SPC_value_specs_200 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICQueryRequest_IEs_197[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICQueryRequest_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_198, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_197 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryRequest_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICQueryRequest_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_199, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_197 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICQueryRequest_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_200, + select_RICQueryRequest_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_200, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_197 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICQueryRequest_IEs_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICQueryRequest_IEs_tag2el_197[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICQueryRequest_IEs_specs_197 = { + sizeof(struct RICQueryRequest_IEs), + offsetof(struct RICQueryRequest_IEs, _asn_ctx), + asn_MAP_RICQueryRequest_IEs_tag2el_197, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICQueryRequest_IEs = { + "RICQueryRequest-IEs", + "RICQueryRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICQueryRequest_IEs_tags_197, + sizeof(asn_DEF_RICQueryRequest_IEs_tags_197) + /sizeof(asn_DEF_RICQueryRequest_IEs_tags_197[0]), /* 1 */ + asn_DEF_RICQueryRequest_IEs_tags_197, /* Same as above */ + sizeof(asn_DEF_RICQueryRequest_IEs_tags_197) + /sizeof(asn_DEF_RICQueryRequest_IEs_tags_197[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICQueryRequest_IEs_197, + 3, /* Elements count */ + &asn_SPC_RICQueryRequest_IEs_specs_197 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_204[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICQueryResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryResponse_IEs__value, choice.RICqueryOutcome), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICqueryOutcome, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICqueryOutcome" + }, +}; +static const unsigned asn_MAP_value_to_canonical_204[] = { 1, 2, 0 }; +static const unsigned asn_MAP_value_from_canonical_204[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_204[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* RICqueryOutcome */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_204 = { + sizeof(struct RICQueryResponse_IEs__value), + offsetof(struct RICQueryResponse_IEs__value, _asn_ctx), + offsetof(struct RICQueryResponse_IEs__value, present), + sizeof(((struct RICQueryResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_204, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_204, + asn_MAP_value_from_canonical_204, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_204 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_204, + 3, /* Elements count */ + &asn_SPC_value_specs_204 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICQueryResponse_IEs_201[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICQueryResponse_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_202, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_201 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryResponse_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICQueryResponse_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_203, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_201 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICQueryResponse_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_204, + select_RICQueryResponse_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_204, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_201 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICQueryResponse_IEs_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICQueryResponse_IEs_tag2el_201[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICQueryResponse_IEs_specs_201 = { + sizeof(struct RICQueryResponse_IEs), + offsetof(struct RICQueryResponse_IEs, _asn_ctx), + asn_MAP_RICQueryResponse_IEs_tag2el_201, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICQueryResponse_IEs = { + "RICQueryResponse-IEs", + "RICQueryResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICQueryResponse_IEs_tags_201, + sizeof(asn_DEF_RICQueryResponse_IEs_tags_201) + /sizeof(asn_DEF_RICQueryResponse_IEs_tags_201[0]), /* 1 */ + asn_DEF_RICQueryResponse_IEs_tags_201, /* Same as above */ + sizeof(asn_DEF_RICQueryResponse_IEs_tags_201) + /sizeof(asn_DEF_RICQueryResponse_IEs_tags_201[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICQueryResponse_IEs_201, + 3, /* Elements count */ + &asn_SPC_RICQueryResponse_IEs_specs_201 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_208[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICQueryFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_208[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_208[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_208[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_208 = { + sizeof(struct RICQueryFailure_IEs__value), + offsetof(struct RICQueryFailure_IEs__value, _asn_ctx), + offsetof(struct RICQueryFailure_IEs__value, present), + sizeof(((struct RICQueryFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_208, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_208, + asn_MAP_value_from_canonical_208, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_208 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_208, + 4, /* Elements count */ + &asn_SPC_value_specs_208 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICQueryFailure_IEs_205[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICQueryFailure_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_206, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_205 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICQueryFailure_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICQueryFailure_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_207, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_205 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICQueryFailure_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_208, + select_RICQueryFailure_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_208, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_205 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICQueryFailure_IEs_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICQueryFailure_IEs_tag2el_205[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICQueryFailure_IEs_specs_205 = { + sizeof(struct RICQueryFailure_IEs), + offsetof(struct RICQueryFailure_IEs, _asn_ctx), + asn_MAP_RICQueryFailure_IEs_tag2el_205, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICQueryFailure_IEs = { + "RICQueryFailure-IEs", + "RICQueryFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICQueryFailure_IEs_tags_205, + sizeof(asn_DEF_RICQueryFailure_IEs_tags_205) + /sizeof(asn_DEF_RICQueryFailure_IEs_tags_205[0]), /* 1 */ + asn_DEF_RICQueryFailure_IEs_tags_205, /* Same as above */ + sizeof(asn_DEF_RICQueryFailure_IEs_tags_205) + /sizeof(asn_DEF_RICQueryFailure_IEs_tags_205[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICQueryFailure_IEs_205, + 3, /* Elements count */ + &asn_SPC_RICQueryFailure_IEs_specs_205 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_212[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_212[] = { 0, 2, 1, 4, 3 }; +static const unsigned asn_MAP_value_from_canonical_212[] = { 0, 2, 1, 4, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_212[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_212 = { + sizeof(struct ErrorIndication_IEs__value), + offsetof(struct ErrorIndication_IEs__value, _asn_ctx), + offsetof(struct ErrorIndication_IEs__value, present), + sizeof(((struct ErrorIndication_IEs__value *)0)->present), + asn_MAP_value_tag2el_212, + 10, /* Count of tags in the map */ + asn_MAP_value_to_canonical_212, + asn_MAP_value_from_canonical_212, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_212 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_212, + 5, /* Elements count */ + &asn_SPC_value_specs_212 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_209[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_210, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_209 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_ErrorIndication_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_211, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_209 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_212, + select_ErrorIndication_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_212, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_209 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_IEs_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_IEs_tag2el_209[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_209 = { + sizeof(struct ErrorIndication_IEs), + offsetof(struct ErrorIndication_IEs, _asn_ctx), + asn_MAP_ErrorIndication_IEs_tag2el_209, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs = { + "ErrorIndication-IEs", + "ErrorIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_IEs_tags_209, + sizeof(asn_DEF_ErrorIndication_IEs_tags_209) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_209[0]), /* 1 */ + asn_DEF_ErrorIndication_IEs_tags_209, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_IEs_tags_209) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_209[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ErrorIndication_IEs_209, + 3, /* Elements count */ + &asn_SPC_ErrorIndication_IEs_specs_209 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_216[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.GlobalE2node_ID), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_GlobalE2node_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "GlobalE2node-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.RANfunctions_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctions_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctions-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.E2nodeComponentConfigAddition_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigAddition_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigAddition-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_216[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_216[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_216[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* RANfunctions-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* E2nodeComponentConfigAddition-List */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* gNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* ng-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* eNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_216 = { + sizeof(struct E2setupRequestIEs__value), + offsetof(struct E2setupRequestIEs__value, _asn_ctx), + offsetof(struct E2setupRequestIEs__value, present), + sizeof(((struct E2setupRequestIEs__value *)0)->present), + asn_MAP_value_tag2el_216, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_216, + asn_MAP_value_from_canonical_216, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_216 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_216, + 4, /* Elements count */ + &asn_SPC_value_specs_216 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2setupRequestIEs_213[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_214, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_213 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2setupRequestIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_215, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_213 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_216, + select_E2setupRequestIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_216, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_213 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupRequestIEs_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupRequestIEs_tag2el_213[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_213 = { + sizeof(struct E2setupRequestIEs), + offsetof(struct E2setupRequestIEs, _asn_ctx), + asn_MAP_E2setupRequestIEs_tag2el_213, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs = { + "E2setupRequestIEs", + "E2setupRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2setupRequestIEs_tags_213, + sizeof(asn_DEF_E2setupRequestIEs_tags_213) + /sizeof(asn_DEF_E2setupRequestIEs_tags_213[0]), /* 1 */ + asn_DEF_E2setupRequestIEs_tags_213, /* Same as above */ + sizeof(asn_DEF_E2setupRequestIEs_tags_213) + /sizeof(asn_DEF_E2setupRequestIEs_tags_213[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2setupRequestIEs_213, + 3, /* Elements count */ + &asn_SPC_E2setupRequestIEs_specs_213 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_220[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.GlobalRIC_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalRIC_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "GlobalRIC-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.E2nodeComponentConfigAdditionAck_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigAdditionAck_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigAdditionAck-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_220[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 3 }, /* GlobalRIC-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 2 }, /* RANfunctionsID-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 1 }, /* RANfunctionsIDcause-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 0 } /* E2nodeComponentConfigAdditionAck-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_220 = { + sizeof(struct E2setupResponseIEs__value), + offsetof(struct E2setupResponseIEs__value, _asn_ctx), + offsetof(struct E2setupResponseIEs__value, present), + sizeof(((struct E2setupResponseIEs__value *)0)->present), + asn_MAP_value_tag2el_220, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_220 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_220, + 5, /* Elements count */ + &asn_SPC_value_specs_220 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2setupResponseIEs_217[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_218, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_217 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2setupResponseIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_219, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_217 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_220, + select_E2setupResponseIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_220, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_217 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupResponseIEs_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupResponseIEs_tag2el_217[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_217 = { + sizeof(struct E2setupResponseIEs), + offsetof(struct E2setupResponseIEs, _asn_ctx), + asn_MAP_E2setupResponseIEs_tag2el_217, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs = { + "E2setupResponseIEs", + "E2setupResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2setupResponseIEs_tags_217, + sizeof(asn_DEF_E2setupResponseIEs_tags_217) + /sizeof(asn_DEF_E2setupResponseIEs_tags_217[0]), /* 1 */ + asn_DEF_E2setupResponseIEs_tags_217, /* Same as above */ + sizeof(asn_DEF_E2setupResponseIEs_tags_217) + /sizeof(asn_DEF_E2setupResponseIEs_tags_217[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2setupResponseIEs_217, + 3, /* Elements count */ + &asn_SPC_E2setupResponseIEs_specs_217 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_224[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TNLinformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TNLinformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TNLinformation" + }, +}; +static const unsigned asn_MAP_value_to_canonical_224[] = { 0, 2, 3, 4, 1 }; +static const unsigned asn_MAP_value_from_canonical_224[] = { 0, 4, 1, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_224[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 }, /* TNLinformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_224 = { + sizeof(struct E2setupFailureIEs__value), + offsetof(struct E2setupFailureIEs__value, _asn_ctx), + offsetof(struct E2setupFailureIEs__value, present), + sizeof(((struct E2setupFailureIEs__value *)0)->present), + asn_MAP_value_tag2el_224, + 10, /* Count of tags in the map */ + asn_MAP_value_to_canonical_224, + asn_MAP_value_from_canonical_224, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_224 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_224, + 5, /* Elements count */ + &asn_SPC_value_specs_224 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2setupFailureIEs_221[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_222, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_221 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2setupFailureIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_223, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_221 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_224, + select_E2setupFailureIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_224, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_221 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupFailureIEs_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupFailureIEs_tag2el_221[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_221 = { + sizeof(struct E2setupFailureIEs), + offsetof(struct E2setupFailureIEs, _asn_ctx), + asn_MAP_E2setupFailureIEs_tag2el_221, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs = { + "E2setupFailureIEs", + "E2setupFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2setupFailureIEs_tags_221, + sizeof(asn_DEF_E2setupFailureIEs_tags_221) + /sizeof(asn_DEF_E2setupFailureIEs_tags_221[0]), /* 1 */ + asn_DEF_E2setupFailureIEs_tags_221, /* Same as above */ + sizeof(asn_DEF_E2setupFailureIEs_tags_221) + /sizeof(asn_DEF_E2setupFailureIEs_tags_221[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2setupFailureIEs_221, + 3, /* Elements count */ + &asn_SPC_E2setupFailureIEs_specs_221 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_228[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.E2connectionUpdate_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdate_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionUpdate-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.E2connectionUpdateRemove_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdateRemove_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionUpdateRemove-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.E2connectionUpdate_List_1), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdate_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionUpdate-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_228[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* E2connectionUpdate-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* E2connectionUpdateRemove-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* E2connectionUpdate-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_228 = { + sizeof(struct E2connectionUpdate_IEs__value), + offsetof(struct E2connectionUpdate_IEs__value, _asn_ctx), + offsetof(struct E2connectionUpdate_IEs__value, present), + sizeof(((struct E2connectionUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_228, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_228 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_228, + 4, /* Elements count */ + &asn_SPC_value_specs_228 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2connectionUpdate_IEs_225[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_226, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_225 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2connectionUpdate_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_227, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_225 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_228, + select_E2connectionUpdate_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_228, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_225 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_IEs_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_IEs_tag2el_225[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_IEs_specs_225 = { + sizeof(struct E2connectionUpdate_IEs), + offsetof(struct E2connectionUpdate_IEs, _asn_ctx), + asn_MAP_E2connectionUpdate_IEs_tag2el_225, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_IEs = { + "E2connectionUpdate-IEs", + "E2connectionUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdate_IEs_tags_225, + sizeof(asn_DEF_E2connectionUpdate_IEs_tags_225) + /sizeof(asn_DEF_E2connectionUpdate_IEs_tags_225[0]), /* 1 */ + asn_DEF_E2connectionUpdate_IEs_tags_225, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdate_IEs_tags_225) + /sizeof(asn_DEF_E2connectionUpdate_IEs_tags_225[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdate_IEs_225, + 3, /* Elements count */ + &asn_SPC_E2connectionUpdate_IEs_specs_225 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_232[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs__value, choice.E2connectionUpdate_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdate_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionUpdate-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs__value, choice.E2connectionSetupFailed_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionSetupFailed_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionSetupFailed-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_232[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* E2connectionUpdate-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* E2connectionSetupFailed-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_232 = { + sizeof(struct E2connectionUpdateAck_IEs__value), + offsetof(struct E2connectionUpdateAck_IEs__value, _asn_ctx), + offsetof(struct E2connectionUpdateAck_IEs__value, present), + sizeof(((struct E2connectionUpdateAck_IEs__value *)0)->present), + asn_MAP_value_tag2el_232, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_232 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_232, + 3, /* Elements count */ + &asn_SPC_value_specs_232 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2connectionUpdateAck_IEs_229[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_230, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_229 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2connectionUpdateAck_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_231, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_229 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_232, + select_E2connectionUpdateAck_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_232, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_229 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdateAck_IEs_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateAck_IEs_tag2el_229[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAck_IEs_specs_229 = { + sizeof(struct E2connectionUpdateAck_IEs), + offsetof(struct E2connectionUpdateAck_IEs, _asn_ctx), + asn_MAP_E2connectionUpdateAck_IEs_tag2el_229, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAck_IEs = { + "E2connectionUpdateAck-IEs", + "E2connectionUpdateAck-IEs", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdateAck_IEs_tags_229, + sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_229) + /sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_229[0]), /* 1 */ + asn_DEF_E2connectionUpdateAck_IEs_tags_229, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_229) + /sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_229[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdateAck_IEs_229, + 3, /* Elements count */ + &asn_SPC_E2connectionUpdateAck_IEs_specs_229 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_236[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_236[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_236[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_236[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_236 = { + sizeof(struct E2connectionUpdateFailure_IEs__value), + offsetof(struct E2connectionUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct E2connectionUpdateFailure_IEs__value, present), + sizeof(((struct E2connectionUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_236, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_236, + asn_MAP_value_from_canonical_236, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_236 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_236, + 4, /* Elements count */ + &asn_SPC_value_specs_236 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_IEs_233[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_234, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_233 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2connectionUpdateFailure_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_235, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_233 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_236, + select_E2connectionUpdateFailure_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_236, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_233 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2connectionUpdateFailure_IEs_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateFailure_IEs_tag2el_233[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_IEs_specs_233 = { + sizeof(struct E2connectionUpdateFailure_IEs), + offsetof(struct E2connectionUpdateFailure_IEs, _asn_ctx), + asn_MAP_E2connectionUpdateFailure_IEs_tag2el_233, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure_IEs = { + "E2connectionUpdateFailure-IEs", + "E2connectionUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_E2connectionUpdateFailure_IEs_tags_233, + sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_233) + /sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_233[0]), /* 1 */ + asn_DEF_E2connectionUpdateFailure_IEs_tags_233, /* Same as above */ + sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_233) + /sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_233[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdateFailure_IEs_233, + 3, /* Elements count */ + &asn_SPC_E2connectionUpdateFailure_IEs_specs_233 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_240[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.GlobalE2node_ID), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_GlobalE2node_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "GlobalE2node-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeComponentConfigAddition_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigAddition_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigAddition-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeComponentConfigUpdate_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigUpdate_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigUpdate-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeComponentConfigRemoval_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigRemoval_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigRemoval-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeTNLassociationRemoval_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeTNLassociationRemoval_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeTNLassociationRemoval-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_240[] = { 0, 2, 3, 4, 5, 1 }; +static const unsigned asn_MAP_value_from_canonical_240[] = { 0, 5, 1, 2, 3, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_240[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 3 }, /* E2nodeComponentConfigAddition-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* E2nodeComponentConfigUpdate-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 1 }, /* E2nodeComponentConfigRemoval-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 0 }, /* E2nodeTNLassociationRemoval-List */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* gNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* ng-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* eNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_240 = { + sizeof(struct E2nodeConfigurationUpdate_IEs__value), + offsetof(struct E2nodeConfigurationUpdate_IEs__value, _asn_ctx), + offsetof(struct E2nodeConfigurationUpdate_IEs__value, present), + sizeof(((struct E2nodeConfigurationUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_240, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_240, + asn_MAP_value_from_canonical_240, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_240 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_240, + 6, /* Elements count */ + &asn_SPC_value_specs_240 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_IEs_237[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_238, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_237 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeConfigurationUpdate_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_239, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_237 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_240, + select_E2nodeConfigurationUpdate_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_240, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_237 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdate_IEs_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdate_IEs_tag2el_237[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_IEs_specs_237 = { + sizeof(struct E2nodeConfigurationUpdate_IEs), + offsetof(struct E2nodeConfigurationUpdate_IEs, _asn_ctx), + asn_MAP_E2nodeConfigurationUpdate_IEs_tag2el_237, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate_IEs = { + "E2nodeConfigurationUpdate-IEs", + "E2nodeConfigurationUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeConfigurationUpdate_IEs_tags_237, + sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_237) + /sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_237[0]), /* 1 */ + asn_DEF_E2nodeConfigurationUpdate_IEs_tags_237, /* Same as above */ + sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_237) + /sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_237[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeConfigurationUpdate_IEs_237, + 3, /* Elements count */ + &asn_SPC_E2nodeConfigurationUpdate_IEs_specs_237 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_244[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.E2nodeComponentConfigAdditionAck_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigAdditionAck_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigAdditionAck-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.E2nodeComponentConfigUpdateAck_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigUpdateAck_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigUpdateAck-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.E2nodeComponentConfigRemovalAck_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeComponentConfigRemovalAck_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeComponentConfigRemovalAck-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_244[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* E2nodeComponentConfigAdditionAck-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* E2nodeComponentConfigUpdateAck-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* E2nodeComponentConfigRemovalAck-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_244 = { + sizeof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value), + offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, present), + sizeof(((struct E2nodeConfigurationUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_244, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_244 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_244, + 4, /* Elements count */ + &asn_SPC_value_specs_244 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_IEs_241[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_242, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_241 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeConfigurationUpdateAcknowledge_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_243, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_241 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_244, + select_E2nodeConfigurationUpdateAcknowledge_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_244, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_241 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateAcknowledge_IEs_tag2el_241[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_IEs_specs_241 = { + sizeof(struct E2nodeConfigurationUpdateAcknowledge_IEs), + offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_E2nodeConfigurationUpdateAcknowledge_IEs_tag2el_241, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs = { + "E2nodeConfigurationUpdateAcknowledge-IEs", + "E2nodeConfigurationUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_241, + sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_241) + /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_241[0]), /* 1 */ + asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_241, /* Same as above */ + sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_241) + /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_241[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeConfigurationUpdateAcknowledge_IEs_241, + 3, /* Elements count */ + &asn_SPC_E2nodeConfigurationUpdateAcknowledge_IEs_specs_241 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_248[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_248[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_248[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_248[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_248 = { + sizeof(struct E2nodeConfigurationUpdateFailure_IEs__value), + offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, present), + sizeof(((struct E2nodeConfigurationUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_248, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_248, + asn_MAP_value_from_canonical_248, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_248 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_248, + 4, /* Elements count */ + &asn_SPC_value_specs_248 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_IEs_245[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_246, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_245 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2nodeConfigurationUpdateFailure_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_247, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_245 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_248, + select_E2nodeConfigurationUpdateFailure_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_248, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_245 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateFailure_IEs_tag2el_245[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_IEs_specs_245 = { + sizeof(struct E2nodeConfigurationUpdateFailure_IEs), + offsetof(struct E2nodeConfigurationUpdateFailure_IEs, _asn_ctx), + asn_MAP_E2nodeConfigurationUpdateFailure_IEs_tag2el_245, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure_IEs = { + "E2nodeConfigurationUpdateFailure-IEs", + "E2nodeConfigurationUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_245, + sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_245) + /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_245[0]), /* 1 */ + asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_245, /* Same as above */ + sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_245) + /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_245[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeConfigurationUpdateFailure_IEs_245, + 3, /* Elements count */ + &asn_SPC_E2nodeConfigurationUpdateFailure_IEs_specs_245 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_252[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_252[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_252 = { + sizeof(struct ResetRequestIEs__value), + offsetof(struct ResetRequestIEs__value, _asn_ctx), + offsetof(struct ResetRequestIEs__value, present), + sizeof(((struct ResetRequestIEs__value *)0)->present), + asn_MAP_value_tag2el_252, + 7, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_252 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_252, + 2, /* Elements count */ + &asn_SPC_value_specs_252 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetRequestIEs_249[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_250, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_249 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_ResetRequestIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_251, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_249 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_252, + select_ResetRequestIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_252, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_249 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequestIEs_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequestIEs_tag2el_249[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_249 = { + sizeof(struct ResetRequestIEs), + offsetof(struct ResetRequestIEs, _asn_ctx), + asn_MAP_ResetRequestIEs_tag2el_249, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs = { + "ResetRequestIEs", + "ResetRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequestIEs_tags_249, + sizeof(asn_DEF_ResetRequestIEs_tags_249) + /sizeof(asn_DEF_ResetRequestIEs_tags_249[0]), /* 1 */ + asn_DEF_ResetRequestIEs_tags_249, /* Same as above */ + sizeof(asn_DEF_ResetRequestIEs_tags_249) + /sizeof(asn_DEF_ResetRequestIEs_tags_249[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ResetRequestIEs_249, + 3, /* Elements count */ + &asn_SPC_ResetRequestIEs_specs_249 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_256[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_256[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_256 = { + sizeof(struct ResetResponseIEs__value), + offsetof(struct ResetResponseIEs__value, _asn_ctx), + offsetof(struct ResetResponseIEs__value, present), + sizeof(((struct ResetResponseIEs__value *)0)->present), + asn_MAP_value_tag2el_256, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_256 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_256, + 2, /* Elements count */ + &asn_SPC_value_specs_256 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetResponseIEs_253[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_254, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_253 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_ResetResponseIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_255, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_253 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_256, + select_ResetResponseIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_256, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_253 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponseIEs_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponseIEs_tag2el_253[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_253 = { + sizeof(struct ResetResponseIEs), + offsetof(struct ResetResponseIEs, _asn_ctx), + asn_MAP_ResetResponseIEs_tag2el_253, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs = { + "ResetResponseIEs", + "ResetResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponseIEs_tags_253, + sizeof(asn_DEF_ResetResponseIEs_tags_253) + /sizeof(asn_DEF_ResetResponseIEs_tags_253[0]), /* 1 */ + asn_DEF_ResetResponseIEs_tags_253, /* Same as above */ + sizeof(asn_DEF_ResetResponseIEs_tags_253) + /sizeof(asn_DEF_ResetResponseIEs_tags_253[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ResetResponseIEs_253, + 3, /* Elements count */ + &asn_SPC_ResetResponseIEs_specs_253 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_260[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctions_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctions_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctions-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctions_List_1), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctions_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctions-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_260[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* RANfunctions-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RANfunctions-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_260 = { + sizeof(struct RICserviceUpdate_IEs__value), + offsetof(struct RICserviceUpdate_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdate_IEs__value, present), + sizeof(((struct RICserviceUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_260, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_260 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_260, + 4, /* Elements count */ + &asn_SPC_value_specs_260 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_257[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_258, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_257 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICserviceUpdate_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_259, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_257 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_260, + select_RICserviceUpdate_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_260, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_257 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_IEs_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_IEs_tag2el_257[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_257 = { + sizeof(struct RICserviceUpdate_IEs), + offsetof(struct RICserviceUpdate_IEs, _asn_ctx), + asn_MAP_RICserviceUpdate_IEs_tag2el_257, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs = { + "RICserviceUpdate-IEs", + "RICserviceUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_IEs_tags_257, + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_257) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_257[0]), /* 1 */ + asn_DEF_RICserviceUpdate_IEs_tags_257, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_257) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_257[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICserviceUpdate_IEs_257, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdate_IEs_specs_257 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_264[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_264[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* RANfunctionsID-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RANfunctionsIDcause-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_264 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs__value), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, present), + sizeof(((struct RICserviceUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_264, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_264 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_264, + 3, /* Elements count */ + &asn_SPC_value_specs_264 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_261[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_262, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_261 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICserviceUpdateAcknowledge_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_263, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_261 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_264, + select_RICserviceUpdateAcknowledge_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_264, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_261 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_261[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_261 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs), + offsetof(struct RICserviceUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_261, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs = { + "RICserviceUpdateAcknowledge-IEs", + "RICserviceUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_261, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_261) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_261[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_261, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_261) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_261[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICserviceUpdateAcknowledge_IEs_261, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_261 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_268[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_268[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_268[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_268[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_268 = { + sizeof(struct RICserviceUpdateFailure_IEs__value), + offsetof(struct RICserviceUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateFailure_IEs__value, present), + sizeof(((struct RICserviceUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_268, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_268, + asn_MAP_value_from_canonical_268, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_268 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_268, + 4, /* Elements count */ + &asn_SPC_value_specs_268 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_265[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_266, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_265 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICserviceUpdateFailure_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_267, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_265 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_268, + select_RICserviceUpdateFailure_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_268, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_265 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_IEs_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_IEs_tag2el_265[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_265 = { + sizeof(struct RICserviceUpdateFailure_IEs), + offsetof(struct RICserviceUpdateFailure_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_IEs_tag2el_265, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs = { + "RICserviceUpdateFailure-IEs", + "RICserviceUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_IEs_tags_265, + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_265) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_265[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_IEs_tags_265, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_265) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_265[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICserviceUpdateFailure_IEs_265, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_IEs_specs_265 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_272[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_272[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_272 = { + sizeof(struct RICserviceQuery_IEs__value), + offsetof(struct RICserviceQuery_IEs__value, _asn_ctx), + offsetof(struct RICserviceQuery_IEs__value, present), + sizeof(((struct RICserviceQuery_IEs__value *)0)->present), + asn_MAP_value_tag2el_272, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_272 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_272, + 2, /* Elements count */ + &asn_SPC_value_specs_272 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_269[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_270, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_269 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RICserviceQuery_IEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_271, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_269 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_272, + select_RICserviceQuery_IEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_272, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_269 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_IEs_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_IEs_tag2el_269[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_269 = { + sizeof(struct RICserviceQuery_IEs), + offsetof(struct RICserviceQuery_IEs, _asn_ctx), + asn_MAP_RICserviceQuery_IEs_tag2el_269, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs = { + "RICserviceQuery-IEs", + "RICserviceQuery-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_IEs_tags_269, + sizeof(asn_DEF_RICserviceQuery_IEs_tags_269) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_269[0]), /* 1 */ + asn_DEF_RICserviceQuery_IEs_tags_269, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_IEs_tags_269) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_269[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICserviceQuery_IEs_269, + 3, /* Elements count */ + &asn_SPC_RICserviceQuery_IEs_specs_269 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_276[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalRequestIEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_276[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* TransactionID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_276 = { + sizeof(struct E2RemovalRequestIEs__value), + offsetof(struct E2RemovalRequestIEs__value, _asn_ctx), + offsetof(struct E2RemovalRequestIEs__value, present), + sizeof(((struct E2RemovalRequestIEs__value *)0)->present), + asn_MAP_value_tag2el_276, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_276 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_276, + 1, /* Elements count */ + &asn_SPC_value_specs_276 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2RemovalRequestIEs_273[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalRequestIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_274, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_273 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalRequestIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2RemovalRequestIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_275, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_273 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2RemovalRequestIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_276, + select_E2RemovalRequestIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_276, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_273 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2RemovalRequestIEs_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2RemovalRequestIEs_tag2el_273[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2RemovalRequestIEs_specs_273 = { + sizeof(struct E2RemovalRequestIEs), + offsetof(struct E2RemovalRequestIEs, _asn_ctx), + asn_MAP_E2RemovalRequestIEs_tag2el_273, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2RemovalRequestIEs = { + "E2RemovalRequestIEs", + "E2RemovalRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2RemovalRequestIEs_tags_273, + sizeof(asn_DEF_E2RemovalRequestIEs_tags_273) + /sizeof(asn_DEF_E2RemovalRequestIEs_tags_273[0]), /* 1 */ + asn_DEF_E2RemovalRequestIEs_tags_273, /* Same as above */ + sizeof(asn_DEF_E2RemovalRequestIEs_tags_273) + /sizeof(asn_DEF_E2RemovalRequestIEs_tags_273[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2RemovalRequestIEs_273, + 3, /* Elements count */ + &asn_SPC_E2RemovalRequestIEs_specs_273 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_280[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalResponseIEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_280[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_280 = { + sizeof(struct E2RemovalResponseIEs__value), + offsetof(struct E2RemovalResponseIEs__value, _asn_ctx), + offsetof(struct E2RemovalResponseIEs__value, present), + sizeof(((struct E2RemovalResponseIEs__value *)0)->present), + asn_MAP_value_tag2el_280, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_280 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_280, + 2, /* Elements count */ + &asn_SPC_value_specs_280 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2RemovalResponseIEs_277[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalResponseIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_278, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_277 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalResponseIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2RemovalResponseIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_279, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_277 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2RemovalResponseIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_280, + select_E2RemovalResponseIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_280, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_277 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2RemovalResponseIEs_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2RemovalResponseIEs_tag2el_277[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2RemovalResponseIEs_specs_277 = { + sizeof(struct E2RemovalResponseIEs), + offsetof(struct E2RemovalResponseIEs, _asn_ctx), + asn_MAP_E2RemovalResponseIEs_tag2el_277, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2RemovalResponseIEs = { + "E2RemovalResponseIEs", + "E2RemovalResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2RemovalResponseIEs_tags_277, + sizeof(asn_DEF_E2RemovalResponseIEs_tags_277) + /sizeof(asn_DEF_E2RemovalResponseIEs_tags_277[0]), /* 1 */ + asn_DEF_E2RemovalResponseIEs_tags_277, /* Same as above */ + sizeof(asn_DEF_E2RemovalResponseIEs_tags_277) + /sizeof(asn_DEF_E2RemovalResponseIEs_tags_277[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2RemovalResponseIEs_277, + 3, /* Elements count */ + &asn_SPC_E2RemovalResponseIEs_specs_277 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_284[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalFailureIEs__value, choice.TransactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_TransactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "TransactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_284[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_284[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_284[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_284 = { + sizeof(struct E2RemovalFailureIEs__value), + offsetof(struct E2RemovalFailureIEs__value, _asn_ctx), + offsetof(struct E2RemovalFailureIEs__value, present), + sizeof(((struct E2RemovalFailureIEs__value *)0)->present), + asn_MAP_value_tag2el_284, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_284, + asn_MAP_value_from_canonical_284, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_284 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_284, + 3, /* Elements count */ + &asn_SPC_value_specs_284 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2RemovalFailureIEs_281[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalFailureIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_id_constr_282, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_id_constraint_281 + }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2RemovalFailureIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E2RemovalFailureIEs_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_283, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_281 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2RemovalFailureIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_284, + select_E2RemovalFailureIEs_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_284, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_281 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2RemovalFailureIEs_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2RemovalFailureIEs_tag2el_281[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2RemovalFailureIEs_specs_281 = { + sizeof(struct E2RemovalFailureIEs), + offsetof(struct E2RemovalFailureIEs, _asn_ctx), + asn_MAP_E2RemovalFailureIEs_tag2el_281, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2RemovalFailureIEs = { + "E2RemovalFailureIEs", + "E2RemovalFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2RemovalFailureIEs_tags_281, + sizeof(asn_DEF_E2RemovalFailureIEs_tags_281) + /sizeof(asn_DEF_E2RemovalFailureIEs_tags_281[0]), /* 1 */ + asn_DEF_E2RemovalFailureIEs_tags_281, /* Same as above */ + sizeof(asn_DEF_E2RemovalFailureIEs_tags_281) + /sizeof(asn_DEF_E2RemovalFailureIEs_tags_281[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2RemovalFailureIEs_281, + 3, /* Elements count */ + &asn_SPC_E2RemovalFailureIEs_specs_281 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ProtocolIE-Field.h b/e2sim/asn1c/ProtocolIE-Field.h new file mode 100644 index 0000000..919eac0 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-Field.h @@ -0,0 +1,1994 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ProtocolIE_Field_H_ +#define _ProtocolIE_Field_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICaction-ToBeSetup-Item.h" +#include "Presence.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "RICaction-Admitted-Item.h" +#include "RICaction-NotAdmitted-Item.h" +#include "RICsubscription-withCause-Item.h" +#include "RICaction-ToBeRemovedForModification-Item.h" +#include "RICaction-ToBeModifiedForModification-Item.h" +#include "RICaction-ToBeAddedForModification-Item.h" +#include "RICaction-RemovedForModification-Item.h" +#include "RICaction-FailedToBeRemovedForModification-Item.h" +#include "RICaction-ModifiedForModification-Item.h" +#include "RICaction-FailedToBeModifiedForModification-Item.h" +#include "RICaction-AddedForModification-Item.h" +#include "RICaction-FailedToBeAddedForModification-Item.h" +#include "RICaction-RequiredToBeModified-Item.h" +#include "RICaction-RequiredToBeRemoved-Item.h" +#include "RICaction-ConfirmedForModification-Item.h" +#include "RICaction-RefusedToBeModified-Item.h" +#include "RICaction-ConfirmedForRemoval-Item.h" +#include "RICaction-RefusedToBeRemoved-Item.h" +#include "E2connectionUpdate-Item.h" +#include "E2connectionUpdateRemove-Item.h" +#include "E2connectionSetupFailed-Item.h" +#include "E2nodeComponentConfigAddition-Item.h" +#include "E2nodeComponentConfigUpdate-Item.h" +#include "E2nodeComponentConfigRemoval-Item.h" +#include "E2nodeTNLassociationRemoval-Item.h" +#include "E2nodeComponentConfigAdditionAck-Item.h" +#include "E2nodeComponentConfigUpdateAck-Item.h" +#include "E2nodeComponentConfigRemovalAck-Item.h" +#include "RANfunction-Item.h" +#include "RANfunctionID-Item.h" +#include "RANfunctionIDcause-Item.h" +#include "RICrequestID.h" +#include "RANfunctionID.h" +#include "RICsubscriptionDetails.h" +#include "RICsubscriptionTime.h" +#include "RICaction-Admitted-List.h" +#include "RICaction-NotAdmitted-List.h" +#include "Cause.h" +#include "CriticalityDiagnostics.h" +#include "RICsubscription-List-withCause.h" +#include "RICeventTriggerDefinition.h" +#include "RICactions-ToBeRemovedForModification-List.h" +#include "RICactions-ToBeModifiedForModification-List.h" +#include "RICactions-ToBeAddedForModification-List.h" +#include "RICactions-RemovedForModification-List.h" +#include "RICactions-FailedToBeRemovedForModification-List.h" +#include "RICactions-ModifiedForModification-List.h" +#include "RICactions-FailedToBeModifiedForModification-List.h" +#include "RICactions-AddedForModification-List.h" +#include "RICactions-FailedToBeAddedForModification-List.h" +#include "RICactions-RequiredToBeModified-List.h" +#include "RICactions-RequiredToBeRemoved-List.h" +#include "RICactions-ConfirmedForModification-List.h" +#include "RICactions-RefusedToBeModified-List.h" +#include "RICactions-ConfirmedForRemoval-List.h" +#include "RICactions-RefusedToBeRemoved-List.h" +#include "RICactionID.h" +#include "RICindicationSN.h" +#include "RICindicationType.h" +#include "RICindicationHeader.h" +#include "RICindicationMessage.h" +#include "RICcallProcessID.h" +#include "RICcontrolHeader.h" +#include "RICcontrolMessage.h" +#include "RICcontrolAckRequest.h" +#include "RICcontrolOutcome.h" +#include "RICqueryHeader.h" +#include "RICqueryDefinition.h" +#include "RICqueryOutcome.h" +#include "TransactionID.h" +#include "GlobalE2node-ID.h" +#include "RANfunctions-List.h" +#include "E2nodeComponentConfigAddition-List.h" +#include "GlobalRIC-ID.h" +#include "RANfunctionsID-List.h" +#include "RANfunctionsIDcause-List.h" +#include "E2nodeComponentConfigAdditionAck-List.h" +#include "TimeToWait.h" +#include "TNLinformation.h" +#include "E2connectionUpdate-List.h" +#include "E2connectionUpdateRemove-List.h" +#include "E2connectionSetupFailed-List.h" +#include "E2nodeComponentConfigUpdate-List.h" +#include "E2nodeComponentConfigRemoval-List.h" +#include "E2nodeTNLassociationRemoval-List.h" +#include "E2nodeComponentConfigUpdateAck-List.h" +#include "E2nodeComponentConfigRemovalAck-List.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICaction_ToBeSetup_ItemIEs__value_PR { + RICaction_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item +} RICaction_ToBeSetup_ItemIEs__value_PR; +typedef enum RICaction_Admitted_ItemIEs__value_PR { + RICaction_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item +} RICaction_Admitted_ItemIEs__value_PR; +typedef enum RICaction_NotAdmitted_ItemIEs__value_PR { + RICaction_NotAdmitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item +} RICaction_NotAdmitted_ItemIEs__value_PR; +typedef enum RICsubscription_withCause_ItemIEs__value_PR { + RICsubscription_withCause_ItemIEs__value_PR_NOTHING, /* No components present */ + RICsubscription_withCause_ItemIEs__value_PR_RICsubscription_withCause_Item +} RICsubscription_withCause_ItemIEs__value_PR; +typedef enum RICaction_ToBeRemovedForModification_ItemIEs__value_PR { + RICaction_ToBeRemovedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ToBeRemovedForModification_ItemIEs__value_PR_RICaction_ToBeRemovedForModification_Item +} RICaction_ToBeRemovedForModification_ItemIEs__value_PR; +typedef enum RICaction_ToBeModifiedForModification_ItemIEs__value_PR { + RICaction_ToBeModifiedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ToBeModifiedForModification_ItemIEs__value_PR_RICaction_ToBeModifiedForModification_Item +} RICaction_ToBeModifiedForModification_ItemIEs__value_PR; +typedef enum RICaction_ToBeAddedForModification_ItemIEs__value_PR { + RICaction_ToBeAddedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ToBeAddedForModification_ItemIEs__value_PR_RICaction_ToBeAddedForModification_Item +} RICaction_ToBeAddedForModification_ItemIEs__value_PR; +typedef enum RICaction_RemovedForModification_ItemIEs__value_PR { + RICaction_RemovedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_RemovedForModification_ItemIEs__value_PR_RICaction_RemovedForModification_Item +} RICaction_RemovedForModification_ItemIEs__value_PR; +typedef enum RICaction_FailedToBeRemovedForModification_ItemIEs__value_PR { + RICaction_FailedToBeRemovedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_FailedToBeRemovedForModification_ItemIEs__value_PR_RICaction_FailedToBeRemovedForModification_Item +} RICaction_FailedToBeRemovedForModification_ItemIEs__value_PR; +typedef enum RICaction_ModifiedForModification_ItemIEs__value_PR { + RICaction_ModifiedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ModifiedForModification_ItemIEs__value_PR_RICaction_ModifiedForModification_Item +} RICaction_ModifiedForModification_ItemIEs__value_PR; +typedef enum RICaction_FailedToBeModifiedForModification_ItemIEs__value_PR { + RICaction_FailedToBeModifiedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_FailedToBeModifiedForModification_ItemIEs__value_PR_RICaction_FailedToBeModifiedForModification_Item +} RICaction_FailedToBeModifiedForModification_ItemIEs__value_PR; +typedef enum RICaction_AddedForModification_ItemIEs__value_PR { + RICaction_AddedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_AddedForModification_ItemIEs__value_PR_RICaction_AddedForModification_Item +} RICaction_AddedForModification_ItemIEs__value_PR; +typedef enum RICaction_FailedToBeAddedForModification_ItemIEs__value_PR { + RICaction_FailedToBeAddedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_FailedToBeAddedForModification_ItemIEs__value_PR_RICaction_FailedToBeAddedForModification_Item +} RICaction_FailedToBeAddedForModification_ItemIEs__value_PR; +typedef enum RICaction_RequiredToBeModified_ItemIEs__value_PR { + RICaction_RequiredToBeModified_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_RequiredToBeModified_ItemIEs__value_PR_RICaction_RequiredToBeModified_Item +} RICaction_RequiredToBeModified_ItemIEs__value_PR; +typedef enum RICaction_RequiredToBeRemoved_ItemIEs__value_PR { + RICaction_RequiredToBeRemoved_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_RequiredToBeRemoved_ItemIEs__value_PR_RICaction_RequiredToBeRemoved_Item +} RICaction_RequiredToBeRemoved_ItemIEs__value_PR; +typedef enum RICaction_ConfirmedForModification_ItemIEs__value_PR { + RICaction_ConfirmedForModification_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ConfirmedForModification_ItemIEs__value_PR_RICaction_ConfirmedForModification_Item +} RICaction_ConfirmedForModification_ItemIEs__value_PR; +typedef enum RICaction_RefusedToBeModified_ItemIEs__value_PR { + RICaction_RefusedToBeModified_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_RefusedToBeModified_ItemIEs__value_PR_RICaction_RefusedToBeModified_Item +} RICaction_RefusedToBeModified_ItemIEs__value_PR; +typedef enum RICaction_ConfirmedForRemoval_ItemIEs__value_PR { + RICaction_ConfirmedForRemoval_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ConfirmedForRemoval_ItemIEs__value_PR_RICaction_ConfirmedForRemoval_Item +} RICaction_ConfirmedForRemoval_ItemIEs__value_PR; +typedef enum RICaction_RefusedToBeRemoved_ItemIEs__value_PR { + RICaction_RefusedToBeRemoved_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_RefusedToBeRemoved_ItemIEs__value_PR_RICaction_RefusedToBeRemoved_Item +} RICaction_RefusedToBeRemoved_ItemIEs__value_PR; +typedef enum E2connectionUpdate_ItemIEs__value_PR { + E2connectionUpdate_ItemIEs__value_PR_NOTHING, /* No components present */ + E2connectionUpdate_ItemIEs__value_PR_E2connectionUpdate_Item +} E2connectionUpdate_ItemIEs__value_PR; +typedef enum E2connectionUpdateRemove_ItemIEs__value_PR { + E2connectionUpdateRemove_ItemIEs__value_PR_NOTHING, /* No components present */ + E2connectionUpdateRemove_ItemIEs__value_PR_E2connectionUpdateRemove_Item +} E2connectionUpdateRemove_ItemIEs__value_PR; +typedef enum E2connectionSetupFailed_ItemIEs__value_PR { + E2connectionSetupFailed_ItemIEs__value_PR_NOTHING, /* No components present */ + E2connectionSetupFailed_ItemIEs__value_PR_E2connectionSetupFailed_Item +} E2connectionSetupFailed_ItemIEs__value_PR; +typedef enum E2nodeComponentConfigAddition_ItemIEs__value_PR { + E2nodeComponentConfigAddition_ItemIEs__value_PR_NOTHING, /* No components present */ + E2nodeComponentConfigAddition_ItemIEs__value_PR_E2nodeComponentConfigAddition_Item +} E2nodeComponentConfigAddition_ItemIEs__value_PR; +typedef enum E2nodeComponentConfigUpdate_ItemIEs__value_PR { + E2nodeComponentConfigUpdate_ItemIEs__value_PR_NOTHING, /* No components present */ + E2nodeComponentConfigUpdate_ItemIEs__value_PR_E2nodeComponentConfigUpdate_Item +} E2nodeComponentConfigUpdate_ItemIEs__value_PR; +typedef enum E2nodeComponentConfigRemoval_ItemIEs__value_PR { + E2nodeComponentConfigRemoval_ItemIEs__value_PR_NOTHING, /* No components present */ + E2nodeComponentConfigRemoval_ItemIEs__value_PR_E2nodeComponentConfigRemoval_Item +} E2nodeComponentConfigRemoval_ItemIEs__value_PR; +typedef enum E2nodeTNLassociationRemoval_ItemIEs__value_PR { + E2nodeTNLassociationRemoval_ItemIEs__value_PR_NOTHING, /* No components present */ + E2nodeTNLassociationRemoval_ItemIEs__value_PR_E2nodeTNLassociationRemoval_Item +} E2nodeTNLassociationRemoval_ItemIEs__value_PR; +typedef enum E2nodeComponentConfigAdditionAck_ItemIEs__value_PR { + E2nodeComponentConfigAdditionAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E2nodeComponentConfigAdditionAck_ItemIEs__value_PR_E2nodeComponentConfigAdditionAck_Item +} E2nodeComponentConfigAdditionAck_ItemIEs__value_PR; +typedef enum E2nodeComponentConfigUpdateAck_ItemIEs__value_PR { + E2nodeComponentConfigUpdateAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E2nodeComponentConfigUpdateAck_ItemIEs__value_PR_E2nodeComponentConfigUpdateAck_Item +} E2nodeComponentConfigUpdateAck_ItemIEs__value_PR; +typedef enum E2nodeComponentConfigRemovalAck_ItemIEs__value_PR { + E2nodeComponentConfigRemovalAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E2nodeComponentConfigRemovalAck_ItemIEs__value_PR_E2nodeComponentConfigRemovalAck_Item +} E2nodeComponentConfigRemovalAck_ItemIEs__value_PR; +typedef enum RANfunction_ItemIEs__value_PR { + RANfunction_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunction_ItemIEs__value_PR_RANfunction_Item +} RANfunction_ItemIEs__value_PR; +typedef enum RANfunctionID_ItemIEs__value_PR { + RANfunctionID_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item +} RANfunctionID_ItemIEs__value_PR; +typedef enum RANfunctionIDcause_ItemIEs__value_PR { + RANfunctionIDcause_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionIDcause_ItemIEs__value_PR_RANfunctionIDcause_Item +} RANfunctionIDcause_ItemIEs__value_PR; +typedef enum RICsubscriptionRequest_IEs__value_PR { + RICsubscriptionRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionRequest_IEs__value_PR_RICrequestID, + RICsubscriptionRequest_IEs__value_PR_RANfunctionID, + RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails, + RICsubscriptionRequest_IEs__value_PR_RICsubscriptionTime, + RICsubscriptionRequest_IEs__value_PR_RICsubscriptionTime_1 +} RICsubscriptionRequest_IEs__value_PR; +typedef enum RICsubscriptionResponse_IEs__value_PR { + RICsubscriptionResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionResponse_IEs__value_PR_RICrequestID, + RICsubscriptionResponse_IEs__value_PR_RANfunctionID, + RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List, + RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List +} RICsubscriptionResponse_IEs__value_PR; +typedef enum RICsubscriptionFailure_IEs__value_PR { + RICsubscriptionFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionFailure_IEs__value_PR_RICrequestID, + RICsubscriptionFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionFailure_IEs__value_PR_Cause, + RICsubscriptionFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionFailure_IEs__value_PR; +typedef enum RICsubscriptionDeleteRequest_IEs__value_PR { + RICsubscriptionDeleteRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteRequest_IEs__value_PR; +typedef enum RICsubscriptionDeleteResponse_IEs__value_PR { + RICsubscriptionDeleteResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteResponse_IEs__value_PR; +typedef enum RICsubscriptionDeleteFailure_IEs__value_PR { + RICsubscriptionDeleteFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionDeleteFailure_IEs__value_PR_Cause, + RICsubscriptionDeleteFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionDeleteFailure_IEs__value_PR; +typedef enum RICsubscriptionDeleteRequired_IEs__value_PR { + RICsubscriptionDeleteRequired_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteRequired_IEs__value_PR_RICsubscription_List_withCause +} RICsubscriptionDeleteRequired_IEs__value_PR; +typedef enum RICsubscriptionModificationRequest_IEs__value_PR { + RICsubscriptionModificationRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionModificationRequest_IEs__value_PR_RICrequestID, + RICsubscriptionModificationRequest_IEs__value_PR_RANfunctionID, + RICsubscriptionModificationRequest_IEs__value_PR_RICeventTriggerDefinition, + RICsubscriptionModificationRequest_IEs__value_PR_RICactions_ToBeRemovedForModification_List, + RICsubscriptionModificationRequest_IEs__value_PR_RICactions_ToBeModifiedForModification_List, + RICsubscriptionModificationRequest_IEs__value_PR_RICactions_ToBeAddedForModification_List +} RICsubscriptionModificationRequest_IEs__value_PR; +typedef enum RICsubscriptionModificationResponse_IEs__value_PR { + RICsubscriptionModificationResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionModificationResponse_IEs__value_PR_RICrequestID, + RICsubscriptionModificationResponse_IEs__value_PR_RANfunctionID, + RICsubscriptionModificationResponse_IEs__value_PR_RICactions_RemovedForModification_List, + RICsubscriptionModificationResponse_IEs__value_PR_RICactions_FailedToBeRemovedForModification_List, + RICsubscriptionModificationResponse_IEs__value_PR_RICactions_ModifiedForModification_List, + RICsubscriptionModificationResponse_IEs__value_PR_RICactions_FailedToBeModifiedForModification_List, + RICsubscriptionModificationResponse_IEs__value_PR_RICactions_AddedForModification_List, + RICsubscriptionModificationResponse_IEs__value_PR_RICactions_FailedToBeAddedForModification_List +} RICsubscriptionModificationResponse_IEs__value_PR; +typedef enum RICsubscriptionModificationFailure_IEs__value_PR { + RICsubscriptionModificationFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionModificationFailure_IEs__value_PR_RICrequestID, + RICsubscriptionModificationFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionModificationFailure_IEs__value_PR_Cause, + RICsubscriptionModificationFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionModificationFailure_IEs__value_PR; +typedef enum RICsubscriptionModificationRequired_IEs__value_PR { + RICsubscriptionModificationRequired_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionModificationRequired_IEs__value_PR_RICrequestID, + RICsubscriptionModificationRequired_IEs__value_PR_RANfunctionID, + RICsubscriptionModificationRequired_IEs__value_PR_RICactions_RequiredToBeModified_List, + RICsubscriptionModificationRequired_IEs__value_PR_RICactions_RequiredToBeRemoved_List +} RICsubscriptionModificationRequired_IEs__value_PR; +typedef enum RICsubscriptionModificationConfirm_IEs__value_PR { + RICsubscriptionModificationConfirm_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionModificationConfirm_IEs__value_PR_RICrequestID, + RICsubscriptionModificationConfirm_IEs__value_PR_RANfunctionID, + RICsubscriptionModificationConfirm_IEs__value_PR_RICactions_ConfirmedForModification_List, + RICsubscriptionModificationConfirm_IEs__value_PR_RICactions_RefusedToBeModified_List, + RICsubscriptionModificationConfirm_IEs__value_PR_RICactions_ConfirmedForRemoval_List, + RICsubscriptionModificationConfirm_IEs__value_PR_RICactions_RefusedToBeRemoved_List +} RICsubscriptionModificationConfirm_IEs__value_PR; +typedef enum RICsubscriptionModificationRefuse_IEs__value_PR { + RICsubscriptionModificationRefuse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionModificationRefuse_IEs__value_PR_RICrequestID, + RICsubscriptionModificationRefuse_IEs__value_PR_RANfunctionID, + RICsubscriptionModificationRefuse_IEs__value_PR_Cause, + RICsubscriptionModificationRefuse_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionModificationRefuse_IEs__value_PR; +typedef enum RICindication_IEs__value_PR { + RICindication_IEs__value_PR_NOTHING, /* No components present */ + RICindication_IEs__value_PR_RICrequestID, + RICindication_IEs__value_PR_RANfunctionID, + RICindication_IEs__value_PR_RICactionID, + RICindication_IEs__value_PR_RICindicationSN, + RICindication_IEs__value_PR_RICindicationType, + RICindication_IEs__value_PR_RICindicationHeader, + RICindication_IEs__value_PR_RICindicationMessage, + RICindication_IEs__value_PR_RICcallProcessID +} RICindication_IEs__value_PR; +typedef enum RICcontrolRequest_IEs__value_PR { + RICcontrolRequest_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolRequest_IEs__value_PR_RICrequestID, + RICcontrolRequest_IEs__value_PR_RANfunctionID, + RICcontrolRequest_IEs__value_PR_RICcallProcessID, + RICcontrolRequest_IEs__value_PR_RICcontrolHeader, + RICcontrolRequest_IEs__value_PR_RICcontrolMessage, + RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest +} RICcontrolRequest_IEs__value_PR; +typedef enum RICcontrolAcknowledge_IEs__value_PR { + RICcontrolAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolAcknowledge_IEs__value_PR_RICrequestID, + RICcontrolAcknowledge_IEs__value_PR_RANfunctionID, + RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID, + RICcontrolAcknowledge_IEs__value_PR_RICcontrolOutcome +} RICcontrolAcknowledge_IEs__value_PR; +typedef enum RICcontrolFailure_IEs__value_PR { + RICcontrolFailure_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolFailure_IEs__value_PR_RICrequestID, + RICcontrolFailure_IEs__value_PR_RANfunctionID, + RICcontrolFailure_IEs__value_PR_RICcallProcessID, + RICcontrolFailure_IEs__value_PR_Cause, + RICcontrolFailure_IEs__value_PR_RICcontrolOutcome, + RICcontrolFailure_IEs__value_PR_CriticalityDiagnostics +} RICcontrolFailure_IEs__value_PR; +typedef enum RICQueryRequest_IEs__value_PR { + RICQueryRequest_IEs__value_PR_NOTHING, /* No components present */ + RICQueryRequest_IEs__value_PR_RICrequestID, + RICQueryRequest_IEs__value_PR_RANfunctionID, + RICQueryRequest_IEs__value_PR_RICqueryHeader, + RICQueryRequest_IEs__value_PR_RICqueryDefinition +} RICQueryRequest_IEs__value_PR; +typedef enum RICQueryResponse_IEs__value_PR { + RICQueryResponse_IEs__value_PR_NOTHING, /* No components present */ + RICQueryResponse_IEs__value_PR_RICrequestID, + RICQueryResponse_IEs__value_PR_RANfunctionID, + RICQueryResponse_IEs__value_PR_RICqueryOutcome +} RICQueryResponse_IEs__value_PR; +typedef enum RICQueryFailure_IEs__value_PR { + RICQueryFailure_IEs__value_PR_NOTHING, /* No components present */ + RICQueryFailure_IEs__value_PR_RICrequestID, + RICQueryFailure_IEs__value_PR_RANfunctionID, + RICQueryFailure_IEs__value_PR_Cause, + RICQueryFailure_IEs__value_PR_CriticalityDiagnostics +} RICQueryFailure_IEs__value_PR; +typedef enum ErrorIndication_IEs__value_PR { + ErrorIndication_IEs__value_PR_NOTHING, /* No components present */ + ErrorIndication_IEs__value_PR_TransactionID, + ErrorIndication_IEs__value_PR_RICrequestID, + ErrorIndication_IEs__value_PR_RANfunctionID, + ErrorIndication_IEs__value_PR_Cause, + ErrorIndication_IEs__value_PR_CriticalityDiagnostics +} ErrorIndication_IEs__value_PR; +typedef enum E2setupRequestIEs__value_PR { + E2setupRequestIEs__value_PR_NOTHING, /* No components present */ + E2setupRequestIEs__value_PR_TransactionID, + E2setupRequestIEs__value_PR_GlobalE2node_ID, + E2setupRequestIEs__value_PR_RANfunctions_List, + E2setupRequestIEs__value_PR_E2nodeComponentConfigAddition_List +} E2setupRequestIEs__value_PR; +typedef enum E2setupResponseIEs__value_PR { + E2setupResponseIEs__value_PR_NOTHING, /* No components present */ + E2setupResponseIEs__value_PR_TransactionID, + E2setupResponseIEs__value_PR_GlobalRIC_ID, + E2setupResponseIEs__value_PR_RANfunctionsID_List, + E2setupResponseIEs__value_PR_RANfunctionsIDcause_List, + E2setupResponseIEs__value_PR_E2nodeComponentConfigAdditionAck_List +} E2setupResponseIEs__value_PR; +typedef enum E2setupFailureIEs__value_PR { + E2setupFailureIEs__value_PR_NOTHING, /* No components present */ + E2setupFailureIEs__value_PR_TransactionID, + E2setupFailureIEs__value_PR_Cause, + E2setupFailureIEs__value_PR_TimeToWait, + E2setupFailureIEs__value_PR_CriticalityDiagnostics, + E2setupFailureIEs__value_PR_TNLinformation +} E2setupFailureIEs__value_PR; +typedef enum E2connectionUpdate_IEs__value_PR { + E2connectionUpdate_IEs__value_PR_NOTHING, /* No components present */ + E2connectionUpdate_IEs__value_PR_TransactionID, + E2connectionUpdate_IEs__value_PR_E2connectionUpdate_List, + E2connectionUpdate_IEs__value_PR_E2connectionUpdateRemove_List, + E2connectionUpdate_IEs__value_PR_E2connectionUpdate_List_1 +} E2connectionUpdate_IEs__value_PR; +typedef enum E2connectionUpdateAck_IEs__value_PR { + E2connectionUpdateAck_IEs__value_PR_NOTHING, /* No components present */ + E2connectionUpdateAck_IEs__value_PR_TransactionID, + E2connectionUpdateAck_IEs__value_PR_E2connectionUpdate_List, + E2connectionUpdateAck_IEs__value_PR_E2connectionSetupFailed_List +} E2connectionUpdateAck_IEs__value_PR; +typedef enum E2connectionUpdateFailure_IEs__value_PR { + E2connectionUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + E2connectionUpdateFailure_IEs__value_PR_TransactionID, + E2connectionUpdateFailure_IEs__value_PR_Cause, + E2connectionUpdateFailure_IEs__value_PR_TimeToWait, + E2connectionUpdateFailure_IEs__value_PR_CriticalityDiagnostics +} E2connectionUpdateFailure_IEs__value_PR; +typedef enum E2nodeConfigurationUpdate_IEs__value_PR { + E2nodeConfigurationUpdate_IEs__value_PR_NOTHING, /* No components present */ + E2nodeConfigurationUpdate_IEs__value_PR_TransactionID, + E2nodeConfigurationUpdate_IEs__value_PR_GlobalE2node_ID, + E2nodeConfigurationUpdate_IEs__value_PR_E2nodeComponentConfigAddition_List, + E2nodeConfigurationUpdate_IEs__value_PR_E2nodeComponentConfigUpdate_List, + E2nodeConfigurationUpdate_IEs__value_PR_E2nodeComponentConfigRemoval_List, + E2nodeConfigurationUpdate_IEs__value_PR_E2nodeTNLassociationRemoval_List +} E2nodeConfigurationUpdate_IEs__value_PR; +typedef enum E2nodeConfigurationUpdateAcknowledge_IEs__value_PR { + E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_TransactionID, + E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_E2nodeComponentConfigAdditionAck_List, + E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_E2nodeComponentConfigUpdateAck_List, + E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_E2nodeComponentConfigRemovalAck_List +} E2nodeConfigurationUpdateAcknowledge_IEs__value_PR; +typedef enum E2nodeConfigurationUpdateFailure_IEs__value_PR { + E2nodeConfigurationUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + E2nodeConfigurationUpdateFailure_IEs__value_PR_TransactionID, + E2nodeConfigurationUpdateFailure_IEs__value_PR_Cause, + E2nodeConfigurationUpdateFailure_IEs__value_PR_TimeToWait, + E2nodeConfigurationUpdateFailure_IEs__value_PR_CriticalityDiagnostics +} E2nodeConfigurationUpdateFailure_IEs__value_PR; +typedef enum ResetRequestIEs__value_PR { + ResetRequestIEs__value_PR_NOTHING, /* No components present */ + ResetRequestIEs__value_PR_TransactionID, + ResetRequestIEs__value_PR_Cause +} ResetRequestIEs__value_PR; +typedef enum ResetResponseIEs__value_PR { + ResetResponseIEs__value_PR_NOTHING, /* No components present */ + ResetResponseIEs__value_PR_TransactionID, + ResetResponseIEs__value_PR_CriticalityDiagnostics +} ResetResponseIEs__value_PR; +typedef enum RICserviceUpdate_IEs__value_PR { + RICserviceUpdate_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdate_IEs__value_PR_TransactionID, + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctions_List_1, + RICserviceUpdate_IEs__value_PR_RANfunctionsID_List +} RICserviceUpdate_IEs__value_PR; +typedef enum RICserviceUpdateAcknowledge_IEs__value_PR { + RICserviceUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateAcknowledge_IEs__value_PR_TransactionID, + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsID_List, + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsIDcause_List +} RICserviceUpdateAcknowledge_IEs__value_PR; +typedef enum RICserviceUpdateFailure_IEs__value_PR { + RICserviceUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateFailure_IEs__value_PR_TransactionID, + RICserviceUpdateFailure_IEs__value_PR_Cause, + RICserviceUpdateFailure_IEs__value_PR_TimeToWait, + RICserviceUpdateFailure_IEs__value_PR_CriticalityDiagnostics +} RICserviceUpdateFailure_IEs__value_PR; +typedef enum RICserviceQuery_IEs__value_PR { + RICserviceQuery_IEs__value_PR_NOTHING, /* No components present */ + RICserviceQuery_IEs__value_PR_TransactionID, + RICserviceQuery_IEs__value_PR_RANfunctionsID_List +} RICserviceQuery_IEs__value_PR; +typedef enum E2RemovalRequestIEs__value_PR { + E2RemovalRequestIEs__value_PR_NOTHING, /* No components present */ + E2RemovalRequestIEs__value_PR_TransactionID +} E2RemovalRequestIEs__value_PR; +typedef enum E2RemovalResponseIEs__value_PR { + E2RemovalResponseIEs__value_PR_NOTHING, /* No components present */ + E2RemovalResponseIEs__value_PR_TransactionID, + E2RemovalResponseIEs__value_PR_CriticalityDiagnostics +} E2RemovalResponseIEs__value_PR; +typedef enum E2RemovalFailureIEs__value_PR { + E2RemovalFailureIEs__value_PR_NOTHING, /* No components present */ + E2RemovalFailureIEs__value_PR_TransactionID, + E2RemovalFailureIEs__value_PR_Cause, + E2RemovalFailureIEs__value_PR_CriticalityDiagnostics +} E2RemovalFailureIEs__value_PR; + +/* ProtocolIE-Field */ +typedef struct RICaction_ToBeSetup_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ToBeSetup_ItemIEs__value { + RICaction_ToBeSetup_ItemIEs__value_PR present; + union RICaction_ToBeSetup_ItemIEs__value_u { + RICaction_ToBeSetup_Item_t RICaction_ToBeSetup_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_ItemIEs_t; +typedef struct RICaction_Admitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_Admitted_ItemIEs__value { + RICaction_Admitted_ItemIEs__value_PR present; + union RICaction_Admitted_ItemIEs__value_u { + RICaction_Admitted_Item_t RICaction_Admitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_ItemIEs_t; +typedef struct RICaction_NotAdmitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_NotAdmitted_ItemIEs__value { + RICaction_NotAdmitted_ItemIEs__value_PR present; + union RICaction_NotAdmitted_ItemIEs__value_u { + RICaction_NotAdmitted_Item_t RICaction_NotAdmitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_ItemIEs_t; +typedef struct RICsubscription_withCause_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscription_withCause_ItemIEs__value { + RICsubscription_withCause_ItemIEs__value_PR present; + union RICsubscription_withCause_ItemIEs__value_u { + RICsubscription_withCause_Item_t RICsubscription_withCause_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscription_withCause_ItemIEs_t; +typedef struct RICaction_ToBeRemovedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ToBeRemovedForModification_ItemIEs__value { + RICaction_ToBeRemovedForModification_ItemIEs__value_PR present; + union RICaction_ToBeRemovedForModification_ItemIEs__value_u { + RICaction_ToBeRemovedForModification_Item_t RICaction_ToBeRemovedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeRemovedForModification_ItemIEs_t; +typedef struct RICaction_ToBeModifiedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ToBeModifiedForModification_ItemIEs__value { + RICaction_ToBeModifiedForModification_ItemIEs__value_PR present; + union RICaction_ToBeModifiedForModification_ItemIEs__value_u { + RICaction_ToBeModifiedForModification_Item_t RICaction_ToBeModifiedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeModifiedForModification_ItemIEs_t; +typedef struct RICaction_ToBeAddedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ToBeAddedForModification_ItemIEs__value { + RICaction_ToBeAddedForModification_ItemIEs__value_PR present; + union RICaction_ToBeAddedForModification_ItemIEs__value_u { + RICaction_ToBeAddedForModification_Item_t RICaction_ToBeAddedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeAddedForModification_ItemIEs_t; +typedef struct RICaction_RemovedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_RemovedForModification_ItemIEs__value { + RICaction_RemovedForModification_ItemIEs__value_PR present; + union RICaction_RemovedForModification_ItemIEs__value_u { + RICaction_RemovedForModification_Item_t RICaction_RemovedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RemovedForModification_ItemIEs_t; +typedef struct RICaction_FailedToBeRemovedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_FailedToBeRemovedForModification_ItemIEs__value { + RICaction_FailedToBeRemovedForModification_ItemIEs__value_PR present; + union RICaction_FailedToBeRemovedForModification_ItemIEs__value_u { + RICaction_FailedToBeRemovedForModification_Item_t RICaction_FailedToBeRemovedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_FailedToBeRemovedForModification_ItemIEs_t; +typedef struct RICaction_ModifiedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ModifiedForModification_ItemIEs__value { + RICaction_ModifiedForModification_ItemIEs__value_PR present; + union RICaction_ModifiedForModification_ItemIEs__value_u { + RICaction_ModifiedForModification_Item_t RICaction_ModifiedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ModifiedForModification_ItemIEs_t; +typedef struct RICaction_FailedToBeModifiedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_FailedToBeModifiedForModification_ItemIEs__value { + RICaction_FailedToBeModifiedForModification_ItemIEs__value_PR present; + union RICaction_FailedToBeModifiedForModification_ItemIEs__value_u { + RICaction_FailedToBeModifiedForModification_Item_t RICaction_FailedToBeModifiedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_FailedToBeModifiedForModification_ItemIEs_t; +typedef struct RICaction_AddedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_AddedForModification_ItemIEs__value { + RICaction_AddedForModification_ItemIEs__value_PR present; + union RICaction_AddedForModification_ItemIEs__value_u { + RICaction_AddedForModification_Item_t RICaction_AddedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_AddedForModification_ItemIEs_t; +typedef struct RICaction_FailedToBeAddedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_FailedToBeAddedForModification_ItemIEs__value { + RICaction_FailedToBeAddedForModification_ItemIEs__value_PR present; + union RICaction_FailedToBeAddedForModification_ItemIEs__value_u { + RICaction_FailedToBeAddedForModification_Item_t RICaction_FailedToBeAddedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_FailedToBeAddedForModification_ItemIEs_t; +typedef struct RICaction_RequiredToBeModified_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_RequiredToBeModified_ItemIEs__value { + RICaction_RequiredToBeModified_ItemIEs__value_PR present; + union RICaction_RequiredToBeModified_ItemIEs__value_u { + RICaction_RequiredToBeModified_Item_t RICaction_RequiredToBeModified_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RequiredToBeModified_ItemIEs_t; +typedef struct RICaction_RequiredToBeRemoved_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_RequiredToBeRemoved_ItemIEs__value { + RICaction_RequiredToBeRemoved_ItemIEs__value_PR present; + union RICaction_RequiredToBeRemoved_ItemIEs__value_u { + RICaction_RequiredToBeRemoved_Item_t RICaction_RequiredToBeRemoved_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RequiredToBeRemoved_ItemIEs_t; +typedef struct RICaction_ConfirmedForModification_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ConfirmedForModification_ItemIEs__value { + RICaction_ConfirmedForModification_ItemIEs__value_PR present; + union RICaction_ConfirmedForModification_ItemIEs__value_u { + RICaction_ConfirmedForModification_Item_t RICaction_ConfirmedForModification_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ConfirmedForModification_ItemIEs_t; +typedef struct RICaction_RefusedToBeModified_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_RefusedToBeModified_ItemIEs__value { + RICaction_RefusedToBeModified_ItemIEs__value_PR present; + union RICaction_RefusedToBeModified_ItemIEs__value_u { + RICaction_RefusedToBeModified_Item_t RICaction_RefusedToBeModified_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RefusedToBeModified_ItemIEs_t; +typedef struct RICaction_ConfirmedForRemoval_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ConfirmedForRemoval_ItemIEs__value { + RICaction_ConfirmedForRemoval_ItemIEs__value_PR present; + union RICaction_ConfirmedForRemoval_ItemIEs__value_u { + RICaction_ConfirmedForRemoval_Item_t RICaction_ConfirmedForRemoval_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ConfirmedForRemoval_ItemIEs_t; +typedef struct RICaction_RefusedToBeRemoved_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_RefusedToBeRemoved_ItemIEs__value { + RICaction_RefusedToBeRemoved_ItemIEs__value_PR present; + union RICaction_RefusedToBeRemoved_ItemIEs__value_u { + RICaction_RefusedToBeRemoved_Item_t RICaction_RefusedToBeRemoved_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RefusedToBeRemoved_ItemIEs_t; +typedef struct E2connectionUpdate_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2connectionUpdate_ItemIEs__value { + E2connectionUpdate_ItemIEs__value_PR present; + union E2connectionUpdate_ItemIEs__value_u { + E2connectionUpdate_Item_t E2connectionUpdate_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdate_ItemIEs_t; +typedef struct E2connectionUpdateRemove_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2connectionUpdateRemove_ItemIEs__value { + E2connectionUpdateRemove_ItemIEs__value_PR present; + union E2connectionUpdateRemove_ItemIEs__value_u { + E2connectionUpdateRemove_Item_t E2connectionUpdateRemove_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdateRemove_ItemIEs_t; +typedef struct E2connectionSetupFailed_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2connectionSetupFailed_ItemIEs__value { + E2connectionSetupFailed_ItemIEs__value_PR present; + union E2connectionSetupFailed_ItemIEs__value_u { + E2connectionSetupFailed_Item_t E2connectionSetupFailed_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionSetupFailed_ItemIEs_t; +typedef struct E2nodeComponentConfigAddition_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeComponentConfigAddition_ItemIEs__value { + E2nodeComponentConfigAddition_ItemIEs__value_PR present; + union E2nodeComponentConfigAddition_ItemIEs__value_u { + E2nodeComponentConfigAddition_Item_t E2nodeComponentConfigAddition_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigAddition_ItemIEs_t; +typedef struct E2nodeComponentConfigUpdate_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeComponentConfigUpdate_ItemIEs__value { + E2nodeComponentConfigUpdate_ItemIEs__value_PR present; + union E2nodeComponentConfigUpdate_ItemIEs__value_u { + E2nodeComponentConfigUpdate_Item_t E2nodeComponentConfigUpdate_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigUpdate_ItemIEs_t; +typedef struct E2nodeComponentConfigRemoval_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeComponentConfigRemoval_ItemIEs__value { + E2nodeComponentConfigRemoval_ItemIEs__value_PR present; + union E2nodeComponentConfigRemoval_ItemIEs__value_u { + E2nodeComponentConfigRemoval_Item_t E2nodeComponentConfigRemoval_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigRemoval_ItemIEs_t; +typedef struct E2nodeTNLassociationRemoval_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeTNLassociationRemoval_ItemIEs__value { + E2nodeTNLassociationRemoval_ItemIEs__value_PR present; + union E2nodeTNLassociationRemoval_ItemIEs__value_u { + E2nodeTNLassociationRemoval_Item_t E2nodeTNLassociationRemoval_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeTNLassociationRemoval_ItemIEs_t; +typedef struct E2nodeComponentConfigAdditionAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeComponentConfigAdditionAck_ItemIEs__value { + E2nodeComponentConfigAdditionAck_ItemIEs__value_PR present; + union E2nodeComponentConfigAdditionAck_ItemIEs__value_u { + E2nodeComponentConfigAdditionAck_Item_t E2nodeComponentConfigAdditionAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigAdditionAck_ItemIEs_t; +typedef struct E2nodeComponentConfigUpdateAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeComponentConfigUpdateAck_ItemIEs__value { + E2nodeComponentConfigUpdateAck_ItemIEs__value_PR present; + union E2nodeComponentConfigUpdateAck_ItemIEs__value_u { + E2nodeComponentConfigUpdateAck_Item_t E2nodeComponentConfigUpdateAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigUpdateAck_ItemIEs_t; +typedef struct E2nodeComponentConfigRemovalAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeComponentConfigRemovalAck_ItemIEs__value { + E2nodeComponentConfigRemovalAck_ItemIEs__value_PR present; + union E2nodeComponentConfigRemovalAck_ItemIEs__value_u { + E2nodeComponentConfigRemovalAck_Item_t E2nodeComponentConfigRemovalAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeComponentConfigRemovalAck_ItemIEs_t; +typedef struct RANfunction_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunction_ItemIEs__value { + RANfunction_ItemIEs__value_PR present; + union RANfunction_ItemIEs__value_u { + RANfunction_Item_t RANfunction_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_ItemIEs_t; +typedef struct RANfunctionID_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionID_ItemIEs__value { + RANfunctionID_ItemIEs__value_PR present; + union RANfunctionID_ItemIEs__value_u { + RANfunctionID_Item_t RANfunctionID_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_ItemIEs_t; +typedef struct RANfunctionIDcause_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionIDcause_ItemIEs__value { + RANfunctionIDcause_ItemIEs__value_PR present; + union RANfunctionIDcause_ItemIEs__value_u { + RANfunctionIDcause_Item_t RANfunctionIDcause_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_ItemIEs_t; +typedef struct RICsubscriptionRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionRequest_IEs__value { + RICsubscriptionRequest_IEs__value_PR present; + union RICsubscriptionRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICsubscriptionDetails_t RICsubscriptionDetails; + RICsubscriptionTime_t RICsubscriptionTime; + RICsubscriptionTime_t RICsubscriptionTime_1; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_IEs_t; +typedef struct RICsubscriptionResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionResponse_IEs__value { + RICsubscriptionResponse_IEs__value_PR present; + union RICsubscriptionResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICaction_Admitted_List_t RICaction_Admitted_List; + RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_IEs_t; +typedef struct RICsubscriptionFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionFailure_IEs__value { + RICsubscriptionFailure_IEs__value_PR present; + union RICsubscriptionFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_IEs_t; +typedef struct RICsubscriptionDeleteRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteRequest_IEs__value { + RICsubscriptionDeleteRequest_IEs__value_PR present; + union RICsubscriptionDeleteRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_IEs_t; +typedef struct RICsubscriptionDeleteResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteResponse_IEs__value { + RICsubscriptionDeleteResponse_IEs__value_PR present; + union RICsubscriptionDeleteResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_IEs_t; +typedef struct RICsubscriptionDeleteFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteFailure_IEs__value { + RICsubscriptionDeleteFailure_IEs__value_PR present; + union RICsubscriptionDeleteFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_IEs_t; +typedef struct RICsubscriptionDeleteRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteRequired_IEs__value { + RICsubscriptionDeleteRequired_IEs__value_PR present; + union RICsubscriptionDeleteRequired_IEs__value_u { + RICsubscription_List_withCause_t RICsubscription_List_withCause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequired_IEs_t; +typedef struct RICsubscriptionModificationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionModificationRequest_IEs__value { + RICsubscriptionModificationRequest_IEs__value_PR present; + union RICsubscriptionModificationRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICeventTriggerDefinition_t RICeventTriggerDefinition; + RICactions_ToBeRemovedForModification_List_t RICactions_ToBeRemovedForModification_List; + RICactions_ToBeModifiedForModification_List_t RICactions_ToBeModifiedForModification_List; + RICactions_ToBeAddedForModification_List_t RICactions_ToBeAddedForModification_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationRequest_IEs_t; +typedef struct RICsubscriptionModificationResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionModificationResponse_IEs__value { + RICsubscriptionModificationResponse_IEs__value_PR present; + union RICsubscriptionModificationResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICactions_RemovedForModification_List_t RICactions_RemovedForModification_List; + RICactions_FailedToBeRemovedForModification_List_t RICactions_FailedToBeRemovedForModification_List; + RICactions_ModifiedForModification_List_t RICactions_ModifiedForModification_List; + RICactions_FailedToBeModifiedForModification_List_t RICactions_FailedToBeModifiedForModification_List; + RICactions_AddedForModification_List_t RICactions_AddedForModification_List; + RICactions_FailedToBeAddedForModification_List_t RICactions_FailedToBeAddedForModification_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationResponse_IEs_t; +typedef struct RICsubscriptionModificationFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionModificationFailure_IEs__value { + RICsubscriptionModificationFailure_IEs__value_PR present; + union RICsubscriptionModificationFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationFailure_IEs_t; +typedef struct RICsubscriptionModificationRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionModificationRequired_IEs__value { + RICsubscriptionModificationRequired_IEs__value_PR present; + union RICsubscriptionModificationRequired_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICactions_RequiredToBeModified_List_t RICactions_RequiredToBeModified_List; + RICactions_RequiredToBeRemoved_List_t RICactions_RequiredToBeRemoved_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationRequired_IEs_t; +typedef struct RICsubscriptionModificationConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionModificationConfirm_IEs__value { + RICsubscriptionModificationConfirm_IEs__value_PR present; + union RICsubscriptionModificationConfirm_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICactions_ConfirmedForModification_List_t RICactions_ConfirmedForModification_List; + RICactions_RefusedToBeModified_List_t RICactions_RefusedToBeModified_List; + RICactions_ConfirmedForRemoval_List_t RICactions_ConfirmedForRemoval_List; + RICactions_RefusedToBeRemoved_List_t RICactions_RefusedToBeRemoved_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationConfirm_IEs_t; +typedef struct RICsubscriptionModificationRefuse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionModificationRefuse_IEs__value { + RICsubscriptionModificationRefuse_IEs__value_PR present; + union RICsubscriptionModificationRefuse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationRefuse_IEs_t; +typedef struct RICindication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICindication_IEs__value { + RICindication_IEs__value_PR present; + union RICindication_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICactionID_t RICactionID; + RICindicationSN_t RICindicationSN; + RICindicationType_t RICindicationType; + RICindicationHeader_t RICindicationHeader; + RICindicationMessage_t RICindicationMessage; + RICcallProcessID_t RICcallProcessID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_IEs_t; +typedef struct RICcontrolRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolRequest_IEs__value { + RICcontrolRequest_IEs__value_PR present; + union RICcontrolRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolHeader_t RICcontrolHeader; + RICcontrolMessage_t RICcontrolMessage; + RICcontrolAckRequest_t RICcontrolAckRequest; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_IEs_t; +typedef struct RICcontrolAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolAcknowledge_IEs__value { + RICcontrolAcknowledge_IEs__value_PR present; + union RICcontrolAcknowledge_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolOutcome_t RICcontrolOutcome; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_IEs_t; +typedef struct RICcontrolFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolFailure_IEs__value { + RICcontrolFailure_IEs__value_PR present; + union RICcontrolFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + Cause_t Cause; + RICcontrolOutcome_t RICcontrolOutcome; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_IEs_t; +typedef struct RICQueryRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICQueryRequest_IEs__value { + RICQueryRequest_IEs__value_PR present; + union RICQueryRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICqueryHeader_t RICqueryHeader; + RICqueryDefinition_t RICqueryDefinition; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICQueryRequest_IEs_t; +typedef struct RICQueryResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICQueryResponse_IEs__value { + RICQueryResponse_IEs__value_PR present; + union RICQueryResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICqueryOutcome_t RICqueryOutcome; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICQueryResponse_IEs_t; +typedef struct RICQueryFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICQueryFailure_IEs__value { + RICQueryFailure_IEs__value_PR present; + union RICQueryFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICQueryFailure_IEs_t; +typedef struct ErrorIndication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ErrorIndication_IEs__value { + ErrorIndication_IEs__value_PR present; + union ErrorIndication_IEs__value_u { + TransactionID_t TransactionID; + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_IEs_t; +typedef struct E2setupRequestIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2setupRequestIEs__value { + E2setupRequestIEs__value_PR present; + union E2setupRequestIEs__value_u { + TransactionID_t TransactionID; + GlobalE2node_ID_t GlobalE2node_ID; + RANfunctions_List_t RANfunctions_List; + E2nodeComponentConfigAddition_List_t E2nodeComponentConfigAddition_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupRequestIEs_t; +typedef struct E2setupResponseIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2setupResponseIEs__value { + E2setupResponseIEs__value_PR present; + union E2setupResponseIEs__value_u { + TransactionID_t TransactionID; + GlobalRIC_ID_t GlobalRIC_ID; + RANfunctionsID_List_t RANfunctionsID_List; + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + E2nodeComponentConfigAdditionAck_List_t E2nodeComponentConfigAdditionAck_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupResponseIEs_t; +typedef struct E2setupFailureIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2setupFailureIEs__value { + E2setupFailureIEs__value_PR present; + union E2setupFailureIEs__value_u { + TransactionID_t TransactionID; + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + TNLinformation_t TNLinformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupFailureIEs_t; +typedef struct E2connectionUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2connectionUpdate_IEs__value { + E2connectionUpdate_IEs__value_PR present; + union E2connectionUpdate_IEs__value_u { + TransactionID_t TransactionID; + E2connectionUpdate_List_t E2connectionUpdate_List; + E2connectionUpdateRemove_List_t E2connectionUpdateRemove_List; + E2connectionUpdate_List_t E2connectionUpdate_List_1; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdate_IEs_t; +typedef struct E2connectionUpdateAck_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2connectionUpdateAck_IEs__value { + E2connectionUpdateAck_IEs__value_PR present; + union E2connectionUpdateAck_IEs__value_u { + TransactionID_t TransactionID; + E2connectionUpdate_List_t E2connectionUpdate_List; + E2connectionSetupFailed_List_t E2connectionSetupFailed_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdateAck_IEs_t; +typedef struct E2connectionUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2connectionUpdateFailure_IEs__value { + E2connectionUpdateFailure_IEs__value_PR present; + union E2connectionUpdateFailure_IEs__value_u { + TransactionID_t TransactionID; + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2connectionUpdateFailure_IEs_t; +typedef struct E2nodeConfigurationUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeConfigurationUpdate_IEs__value { + E2nodeConfigurationUpdate_IEs__value_PR present; + union E2nodeConfigurationUpdate_IEs__value_u { + TransactionID_t TransactionID; + GlobalE2node_ID_t GlobalE2node_ID; + E2nodeComponentConfigAddition_List_t E2nodeComponentConfigAddition_List; + E2nodeComponentConfigUpdate_List_t E2nodeComponentConfigUpdate_List; + E2nodeComponentConfigRemoval_List_t E2nodeComponentConfigRemoval_List; + E2nodeTNLassociationRemoval_List_t E2nodeTNLassociationRemoval_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeConfigurationUpdate_IEs_t; +typedef struct E2nodeConfigurationUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeConfigurationUpdateAcknowledge_IEs__value { + E2nodeConfigurationUpdateAcknowledge_IEs__value_PR present; + union E2nodeConfigurationUpdateAcknowledge_IEs__value_u { + TransactionID_t TransactionID; + E2nodeComponentConfigAdditionAck_List_t E2nodeComponentConfigAdditionAck_List; + E2nodeComponentConfigUpdateAck_List_t E2nodeComponentConfigUpdateAck_List; + E2nodeComponentConfigRemovalAck_List_t E2nodeComponentConfigRemovalAck_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeConfigurationUpdateAcknowledge_IEs_t; +typedef struct E2nodeConfigurationUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2nodeConfigurationUpdateFailure_IEs__value { + E2nodeConfigurationUpdateFailure_IEs__value_PR present; + union E2nodeConfigurationUpdateFailure_IEs__value_u { + TransactionID_t TransactionID; + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2nodeConfigurationUpdateFailure_IEs_t; +typedef struct ResetRequestIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetRequestIEs__value { + ResetRequestIEs__value_PR present; + union ResetRequestIEs__value_u { + TransactionID_t TransactionID; + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequestIEs_t; +typedef struct ResetResponseIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetResponseIEs__value { + ResetResponseIEs__value_PR present; + union ResetResponseIEs__value_u { + TransactionID_t TransactionID; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponseIEs_t; +typedef struct RICserviceUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdate_IEs__value { + RICserviceUpdate_IEs__value_PR present; + union RICserviceUpdate_IEs__value_u { + TransactionID_t TransactionID; + RANfunctions_List_t RANfunctions_List; + RANfunctions_List_t RANfunctions_List_1; + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_IEs_t; +typedef struct RICserviceUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateAcknowledge_IEs__value { + RICserviceUpdateAcknowledge_IEs__value_PR present; + union RICserviceUpdateAcknowledge_IEs__value_u { + TransactionID_t TransactionID; + RANfunctionsID_List_t RANfunctionsID_List; + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_IEs_t; +typedef struct RICserviceUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateFailure_IEs__value { + RICserviceUpdateFailure_IEs__value_PR present; + union RICserviceUpdateFailure_IEs__value_u { + TransactionID_t TransactionID; + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_IEs_t; +typedef struct RICserviceQuery_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceQuery_IEs__value { + RICserviceQuery_IEs__value_PR present; + union RICserviceQuery_IEs__value_u { + TransactionID_t TransactionID; + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_IEs_t; +typedef struct E2RemovalRequestIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2RemovalRequestIEs__value { + E2RemovalRequestIEs__value_PR present; + union E2RemovalRequestIEs__value_u { + TransactionID_t TransactionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2RemovalRequestIEs_t; +typedef struct E2RemovalResponseIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2RemovalResponseIEs__value { + E2RemovalResponseIEs__value_PR present; + union E2RemovalResponseIEs__value_u { + TransactionID_t TransactionID; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2RemovalResponseIEs_t; +typedef struct E2RemovalFailureIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2RemovalFailureIEs__value { + E2RemovalFailureIEs__value_PR present; + union E2RemovalFailureIEs__value_u { + TransactionID_t TransactionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2RemovalFailureIEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5; +extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9; +extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_ItemIEs_specs_13; +extern asn_TYPE_member_t asn_MBR_RICsubscription_withCause_ItemIEs_13[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeRemovedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeRemovedForModification_ItemIEs_specs_17; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeRemovedForModification_ItemIEs_17[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeModifiedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeModifiedForModification_ItemIEs_specs_21; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeModifiedForModification_ItemIEs_21[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeAddedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeAddedForModification_ItemIEs_specs_25; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeAddedForModification_ItemIEs_25[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RemovedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RemovedForModification_ItemIEs_specs_29; +extern asn_TYPE_member_t asn_MBR_RICaction_RemovedForModification_ItemIEs_29[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeRemovedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeRemovedForModification_ItemIEs_specs_33; +extern asn_TYPE_member_t asn_MBR_RICaction_FailedToBeRemovedForModification_ItemIEs_33[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ModifiedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ModifiedForModification_ItemIEs_specs_37; +extern asn_TYPE_member_t asn_MBR_RICaction_ModifiedForModification_ItemIEs_37[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeModifiedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeModifiedForModification_ItemIEs_specs_41; +extern asn_TYPE_member_t asn_MBR_RICaction_FailedToBeModifiedForModification_ItemIEs_41[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_AddedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_AddedForModification_ItemIEs_specs_45; +extern asn_TYPE_member_t asn_MBR_RICaction_AddedForModification_ItemIEs_45[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeAddedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeAddedForModification_ItemIEs_specs_49; +extern asn_TYPE_member_t asn_MBR_RICaction_FailedToBeAddedForModification_ItemIEs_49[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RequiredToBeModified_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RequiredToBeModified_ItemIEs_specs_53; +extern asn_TYPE_member_t asn_MBR_RICaction_RequiredToBeModified_ItemIEs_53[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RequiredToBeRemoved_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RequiredToBeRemoved_ItemIEs_specs_57; +extern asn_TYPE_member_t asn_MBR_RICaction_RequiredToBeRemoved_ItemIEs_57[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ConfirmedForModification_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ConfirmedForModification_ItemIEs_specs_61; +extern asn_TYPE_member_t asn_MBR_RICaction_ConfirmedForModification_ItemIEs_61[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RefusedToBeModified_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RefusedToBeModified_ItemIEs_specs_65; +extern asn_TYPE_member_t asn_MBR_RICaction_RefusedToBeModified_ItemIEs_65[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ConfirmedForRemoval_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ConfirmedForRemoval_ItemIEs_specs_69; +extern asn_TYPE_member_t asn_MBR_RICaction_ConfirmedForRemoval_ItemIEs_69[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RefusedToBeRemoved_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RefusedToBeRemoved_ItemIEs_specs_73; +extern asn_TYPE_member_t asn_MBR_RICaction_RefusedToBeRemoved_ItemIEs_73[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_ItemIEs_specs_77; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_ItemIEs_77[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_81; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_ItemIEs_81[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_ItemIEs_specs_85; +extern asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_ItemIEs_85[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_89; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_ItemIEs_89[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_93; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_93[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_97; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_97[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_101; +extern asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_101[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_105; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_105[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_109; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_109[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_113; +extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_113[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_117; +extern asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_117[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_121; +extern asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_121[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_125; +extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_125[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_129; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_129[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_133; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_133[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_137; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_137[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_141; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_141[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_145; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_145[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_149; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_149[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_IEs_specs_153; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_IEs_153[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRequest_IEs_specs_157; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRequest_IEs_157[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationResponse_IEs_specs_161; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationResponse_IEs_161[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationFailure_IEs_specs_165; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationFailure_IEs_165[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRequired_IEs_specs_169; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRequired_IEs_169[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationConfirm_IEs_specs_173; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationConfirm_IEs_173[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRefuse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRefuse_IEs_specs_177; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRefuse_IEs_177[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICindication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_181; +extern asn_TYPE_member_t asn_MBR_RICindication_IEs_181[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_185; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_185[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_189; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_189[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_193; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_193[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICQueryRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICQueryRequest_IEs_specs_197; +extern asn_TYPE_member_t asn_MBR_RICQueryRequest_IEs_197[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICQueryResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICQueryResponse_IEs_specs_201; +extern asn_TYPE_member_t asn_MBR_RICQueryResponse_IEs_201[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICQueryFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICQueryFailure_IEs_specs_205; +extern asn_TYPE_member_t asn_MBR_RICQueryFailure_IEs_205[3]; +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_209; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_209[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_213; +extern asn_TYPE_member_t asn_MBR_E2setupRequestIEs_213[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_217; +extern asn_TYPE_member_t asn_MBR_E2setupResponseIEs_217[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_221; +extern asn_TYPE_member_t asn_MBR_E2setupFailureIEs_221[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_IEs_specs_225; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_IEs_225[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAck_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAck_IEs_specs_229; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdateAck_IEs_229[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_IEs_specs_233; +extern asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_IEs_233[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_IEs_specs_237; +extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_IEs_237[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_IEs_specs_241; +extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_IEs_241[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_IEs_specs_245; +extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_IEs_245[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_249; +extern asn_TYPE_member_t asn_MBR_ResetRequestIEs_249[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_253; +extern asn_TYPE_member_t asn_MBR_ResetResponseIEs_253[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_257; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_257[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_261; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_261[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_265; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_265[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_269; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_269[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2RemovalRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2RemovalRequestIEs_specs_273; +extern asn_TYPE_member_t asn_MBR_E2RemovalRequestIEs_273[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2RemovalResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2RemovalResponseIEs_specs_277; +extern asn_TYPE_member_t asn_MBR_E2RemovalResponseIEs_277[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2RemovalFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2RemovalFailureIEs_specs_281; +extern asn_TYPE_member_t asn_MBR_E2RemovalFailureIEs_281[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Field_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ProtocolIE-FieldPair.c b/e2sim/asn1c/ProtocolIE-FieldPair.c new file mode 100644 index 0000000..5243cc0 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-FieldPair.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ProtocolIE-FieldPair.h" + diff --git a/e2sim/asn1c/ProtocolIE-FieldPair.h b/e2sim/asn1c/ProtocolIE-FieldPair.h new file mode 100644 index 0000000..4427b64 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-FieldPair.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ProtocolIE_FieldPair_H_ +#define _ProtocolIE_FieldPair_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_FieldPair_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ProtocolIE-ID.c b/e2sim/asn1c/ProtocolIE-ID.c new file mode 100644 index 0000000..5ad53a0 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-ID.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ProtocolIE-ID.h" + +int +ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = { + "ProtocolIE-ID", + "ProtocolIE-ID", + &asn_OP_NativeInteger, + asn_DEF_ProtocolIE_ID_tags_1, + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtocolIE_ID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ProtocolIE_ID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/ProtocolIE-ID.h b/e2sim/asn1c/ProtocolIE-ID.h new file mode 100644 index 0000000..e11b2d7 --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-ID.h @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ProtocolIE_ID_H_ +#define _ProtocolIE_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-ID */ +typedef long ProtocolIE_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID; +asn_struct_free_f ProtocolIE_ID_free; +asn_struct_print_f ProtocolIE_ID_print; +asn_constr_check_f ProtocolIE_ID_constraint; +ber_type_decoder_f ProtocolIE_ID_decode_ber; +der_type_encoder_f ProtocolIE_ID_encode_der; +xer_type_decoder_f ProtocolIE_ID_decode_xer; +xer_type_encoder_f ProtocolIE_ID_encode_xer; +jer_type_encoder_f ProtocolIE_ID_encode_jer; +per_type_decoder_f ProtocolIE_ID_decode_uper; +per_type_encoder_f ProtocolIE_ID_encode_uper; +per_type_decoder_f ProtocolIE_ID_decode_aper; +per_type_encoder_f ProtocolIE_ID_encode_aper; +#define ProtocolIE_ID_id_Cause ((ProtocolIE_ID_t)1) +#define ProtocolIE_ID_id_CriticalityDiagnostics ((ProtocolIE_ID_t)2) +#define ProtocolIE_ID_id_GlobalE2node_ID ((ProtocolIE_ID_t)3) +#define ProtocolIE_ID_id_GlobalRIC_ID ((ProtocolIE_ID_t)4) +#define ProtocolIE_ID_id_RANfunctionID ((ProtocolIE_ID_t)5) +#define ProtocolIE_ID_id_RANfunctionID_Item ((ProtocolIE_ID_t)6) +#define ProtocolIE_ID_id_RANfunctionIEcause_Item ((ProtocolIE_ID_t)7) +#define ProtocolIE_ID_id_RANfunction_Item ((ProtocolIE_ID_t)8) +#define ProtocolIE_ID_id_RANfunctionsAccepted ((ProtocolIE_ID_t)9) +#define ProtocolIE_ID_id_RANfunctionsAdded ((ProtocolIE_ID_t)10) +#define ProtocolIE_ID_id_RANfunctionsDeleted ((ProtocolIE_ID_t)11) +#define ProtocolIE_ID_id_RANfunctionsModified ((ProtocolIE_ID_t)12) +#define ProtocolIE_ID_id_RANfunctionsRejected ((ProtocolIE_ID_t)13) +#define ProtocolIE_ID_id_RICaction_Admitted_Item ((ProtocolIE_ID_t)14) +#define ProtocolIE_ID_id_RICactionID ((ProtocolIE_ID_t)15) +#define ProtocolIE_ID_id_RICaction_NotAdmitted_Item ((ProtocolIE_ID_t)16) +#define ProtocolIE_ID_id_RICactions_Admitted ((ProtocolIE_ID_t)17) +#define ProtocolIE_ID_id_RICactions_NotAdmitted ((ProtocolIE_ID_t)18) +#define ProtocolIE_ID_id_RICaction_ToBeSetup_Item ((ProtocolIE_ID_t)19) +#define ProtocolIE_ID_id_RICcallProcessID ((ProtocolIE_ID_t)20) +#define ProtocolIE_ID_id_RICcontrolAckRequest ((ProtocolIE_ID_t)21) +#define ProtocolIE_ID_id_RICcontrolHeader ((ProtocolIE_ID_t)22) +#define ProtocolIE_ID_id_RICcontrolMessage ((ProtocolIE_ID_t)23) +#define ProtocolIE_ID_id_RICcontrolStatus ((ProtocolIE_ID_t)24) +#define ProtocolIE_ID_id_RICindicationHeader ((ProtocolIE_ID_t)25) +#define ProtocolIE_ID_id_RICindicationMessage ((ProtocolIE_ID_t)26) +#define ProtocolIE_ID_id_RICindicationSN ((ProtocolIE_ID_t)27) +#define ProtocolIE_ID_id_RICindicationType ((ProtocolIE_ID_t)28) +#define ProtocolIE_ID_id_RICrequestID ((ProtocolIE_ID_t)29) +#define ProtocolIE_ID_id_RICsubscriptionDetails ((ProtocolIE_ID_t)30) +#define ProtocolIE_ID_id_TimeToWait ((ProtocolIE_ID_t)31) +#define ProtocolIE_ID_id_RICcontrolOutcome ((ProtocolIE_ID_t)32) +#define ProtocolIE_ID_id_E2nodeComponentConfigUpdate ((ProtocolIE_ID_t)33) +#define ProtocolIE_ID_id_E2nodeComponentConfigUpdate_Item ((ProtocolIE_ID_t)34) +#define ProtocolIE_ID_id_E2nodeComponentConfigUpdateAck ((ProtocolIE_ID_t)35) +#define ProtocolIE_ID_id_E2nodeComponentConfigUpdateAck_Item ((ProtocolIE_ID_t)36) +#define ProtocolIE_ID_id_E2connectionSetup ((ProtocolIE_ID_t)39) +#define ProtocolIE_ID_id_E2connectionSetupFailed ((ProtocolIE_ID_t)40) +#define ProtocolIE_ID_id_E2connectionSetupFailed_Item ((ProtocolIE_ID_t)41) +#define ProtocolIE_ID_id_E2connectionFailed_Item ((ProtocolIE_ID_t)42) +#define ProtocolIE_ID_id_E2connectionUpdate_Item ((ProtocolIE_ID_t)43) +#define ProtocolIE_ID_id_E2connectionUpdateAdd ((ProtocolIE_ID_t)44) +#define ProtocolIE_ID_id_E2connectionUpdateModify ((ProtocolIE_ID_t)45) +#define ProtocolIE_ID_id_E2connectionUpdateRemove ((ProtocolIE_ID_t)46) +#define ProtocolIE_ID_id_E2connectionUpdateRemove_Item ((ProtocolIE_ID_t)47) +#define ProtocolIE_ID_id_TNLinformation ((ProtocolIE_ID_t)48) +#define ProtocolIE_ID_id_TransactionID ((ProtocolIE_ID_t)49) +#define ProtocolIE_ID_id_E2nodeComponentConfigAddition ((ProtocolIE_ID_t)50) +#define ProtocolIE_ID_id_E2nodeComponentConfigAddition_Item ((ProtocolIE_ID_t)51) +#define ProtocolIE_ID_id_E2nodeComponentConfigAdditionAck ((ProtocolIE_ID_t)52) +#define ProtocolIE_ID_id_E2nodeComponentConfigAdditionAck_Item ((ProtocolIE_ID_t)53) +#define ProtocolIE_ID_id_E2nodeComponentConfigRemoval ((ProtocolIE_ID_t)54) +#define ProtocolIE_ID_id_E2nodeComponentConfigRemoval_Item ((ProtocolIE_ID_t)55) +#define ProtocolIE_ID_id_E2nodeComponentConfigRemovalAck ((ProtocolIE_ID_t)56) +#define ProtocolIE_ID_id_E2nodeComponentConfigRemovalAck_Item ((ProtocolIE_ID_t)57) +#define ProtocolIE_ID_id_E2nodeTNLassociationRemoval ((ProtocolIE_ID_t)58) +#define ProtocolIE_ID_id_E2nodeTNLassociationRemoval_Item ((ProtocolIE_ID_t)59) +#define ProtocolIE_ID_id_RICsubscriptionToBeRemoved ((ProtocolIE_ID_t)60) +#define ProtocolIE_ID_id_RICsubscription_withCause_Item ((ProtocolIE_ID_t)61) +#define ProtocolIE_ID_id_RICsubscriptionStartTime ((ProtocolIE_ID_t)62) +#define ProtocolIE_ID_id_RICsubscriptionEndTime ((ProtocolIE_ID_t)63) +#define ProtocolIE_ID_id_RICeventTriggerDefinitionToBeModified ((ProtocolIE_ID_t)64) +#define ProtocolIE_ID_id_RICactionsToBeRemovedForModification_List ((ProtocolIE_ID_t)65) +#define ProtocolIE_ID_id_RICaction_ToBeRemovedForModification_Item ((ProtocolIE_ID_t)66) +#define ProtocolIE_ID_id_RICactionsToBeModifiedForModification_List ((ProtocolIE_ID_t)67) +#define ProtocolIE_ID_id_RICaction_ToBeModifiedForModification_Item ((ProtocolIE_ID_t)68) +#define ProtocolIE_ID_id_RICactionsToBeAddedForModification_List ((ProtocolIE_ID_t)69) +#define ProtocolIE_ID_id_RICaction_ToBeAddedForModification_Item ((ProtocolIE_ID_t)70) +#define ProtocolIE_ID_id_RICactionsRemovedForModification_List ((ProtocolIE_ID_t)71) +#define ProtocolIE_ID_id_RICaction_RemovedForModification_Item ((ProtocolIE_ID_t)72) +#define ProtocolIE_ID_id_RICactionsFailedToBeRemovedForModification_List ((ProtocolIE_ID_t)73) +#define ProtocolIE_ID_id_RICaction_FailedToBeRemovedForModification_Item ((ProtocolIE_ID_t)74) +#define ProtocolIE_ID_id_RICactionsModifiedForModification_List ((ProtocolIE_ID_t)75) +#define ProtocolIE_ID_id_RICaction_ModifiedForModification_Item ((ProtocolIE_ID_t)76) +#define ProtocolIE_ID_id_RICactionsFailedToBeModifiedForModification_List ((ProtocolIE_ID_t)77) +#define ProtocolIE_ID_id_RICaction_FailedToBeModifiedForModification_Item ((ProtocolIE_ID_t)78) +#define ProtocolIE_ID_id_RICactionsAddedForModification_List ((ProtocolIE_ID_t)79) +#define ProtocolIE_ID_id_RICaction_AddedForModification_Item ((ProtocolIE_ID_t)80) +#define ProtocolIE_ID_id_RICactionsFailedToBeAddedForModification_List ((ProtocolIE_ID_t)81) +#define ProtocolIE_ID_id_RICaction_FailedToBeAddedForModification_Item ((ProtocolIE_ID_t)82) +#define ProtocolIE_ID_id_RICactionsRequiredToBeModified_List ((ProtocolIE_ID_t)83) +#define ProtocolIE_ID_id_RICaction_RequiredToBeModified_Item ((ProtocolIE_ID_t)84) +#define ProtocolIE_ID_id_RICactionsRequiredToBeRemoved_List ((ProtocolIE_ID_t)85) +#define ProtocolIE_ID_id_RICaction_RequiredToBeRemoved_Item ((ProtocolIE_ID_t)86) +#define ProtocolIE_ID_id_RICactionsConfirmedForModification_List ((ProtocolIE_ID_t)87) +#define ProtocolIE_ID_id_RICaction_ConfirmedForModification_Item ((ProtocolIE_ID_t)88) +#define ProtocolIE_ID_id_RICactionsRefusedToBeModified_List ((ProtocolIE_ID_t)89) +#define ProtocolIE_ID_id_RICaction_RefusedToBeModified_Item ((ProtocolIE_ID_t)90) +#define ProtocolIE_ID_id_RICactionsConfirmedForRemoval_List ((ProtocolIE_ID_t)91) +#define ProtocolIE_ID_id_RICaction_ConfirmedForRemoval_Item ((ProtocolIE_ID_t)92) +#define ProtocolIE_ID_id_RICactionsRefusedToBeRemoved_List ((ProtocolIE_ID_t)93) +#define ProtocolIE_ID_id_RICaction_RefusedToBeRemoved_Item ((ProtocolIE_ID_t)94) +#define ProtocolIE_ID_id_RICqueryHeader ((ProtocolIE_ID_t)95) +#define ProtocolIE_ID_id_RICqueryDefinition ((ProtocolIE_ID_t)96) +#define ProtocolIE_ID_id_RICqueryOutcome ((ProtocolIE_ID_t)97) + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ProtocolIE-SingleContainer.c b/e2sim/asn1c/ProtocolIE-SingleContainer.c new file mode 100644 index 0000000..c38c36d --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-SingleContainer.c @@ -0,0 +1,1001 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ProtocolIE-SingleContainer.h" + +/* + * This type is implemented using RICaction_ToBeSetup_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_Admitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_NotAdmitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICsubscription_withCause_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_ToBeRemovedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_ToBeModifiedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_ToBeAddedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_RemovedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_FailedToBeRemovedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_ModifiedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_FailedToBeModifiedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_AddedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_FailedToBeAddedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_RequiredToBeModified_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_RequiredToBeRemoved_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_ConfirmedForModification_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_RefusedToBeModified_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_ConfirmedForRemoval_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_RefusedToBeRemoved_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2connectionUpdate_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2connectionUpdateRemove_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2connectionSetupFailed_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2nodeComponentConfigAddition_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2nodeComponentConfigUpdate_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2nodeComponentConfigRemoval_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2nodeTNLassociationRemoval_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2nodeComponentConfigAdditionAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2nodeComponentConfigUpdateAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E2nodeComponentConfigRemovalAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunction_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionID_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionIDcause_ItemIEs, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P0 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P0_tags_1, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P0_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P1_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P1 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P1_tags_2, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P1_tags_2[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P1_tags_2, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P1_tags_2[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P2_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P2 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P2_tags_3, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P2_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P2_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P2_tags_3[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P3_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P3 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P3_tags_4, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P3_tags_4[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P3_tags_4, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P3_tags_4[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscription_withCause_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RICsubscription_withCause_ItemIEs_specs_13 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P4_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P4 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P4_tags_5, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P4_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P4_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P4_tags_5[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeRemovedForModification_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeRemovedForModification_ItemIEs_specs_17 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P5_tags_6[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P5 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P5_tags_6, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P5_tags_6[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P5_tags_6, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P5_tags_6[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeModifiedForModification_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeModifiedForModification_ItemIEs_specs_21 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P6_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P6 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P6_tags_7, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P6_tags_7) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P6_tags_7[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P6_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P6_tags_7) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P6_tags_7[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeAddedForModification_ItemIEs_25, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeAddedForModification_ItemIEs_specs_25 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P7_tags_8[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P7 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P7_tags_8, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P7_tags_8) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P7_tags_8[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P7_tags_8, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P7_tags_8) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P7_tags_8[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RemovedForModification_ItemIEs_29, + 3, /* Elements count */ + &asn_SPC_RICaction_RemovedForModification_ItemIEs_specs_29 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P8_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P8 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P8_tags_9, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P8_tags_9) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P8_tags_9[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P8_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P8_tags_9) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P8_tags_9[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_FailedToBeRemovedForModification_ItemIEs_33, + 3, /* Elements count */ + &asn_SPC_RICaction_FailedToBeRemovedForModification_ItemIEs_specs_33 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P9_tags_10[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P9 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P9_tags_10, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P9_tags_10) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P9_tags_10[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P9_tags_10, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P9_tags_10) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P9_tags_10[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ModifiedForModification_ItemIEs_37, + 3, /* Elements count */ + &asn_SPC_RICaction_ModifiedForModification_ItemIEs_specs_37 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P10_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P10 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P10_tags_11, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P10_tags_11) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P10_tags_11[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P10_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P10_tags_11) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P10_tags_11[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_FailedToBeModifiedForModification_ItemIEs_41, + 3, /* Elements count */ + &asn_SPC_RICaction_FailedToBeModifiedForModification_ItemIEs_specs_41 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P11_tags_12[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P11 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P11_tags_12, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P11_tags_12) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P11_tags_12[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P11_tags_12, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P11_tags_12) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P11_tags_12[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_AddedForModification_ItemIEs_45, + 3, /* Elements count */ + &asn_SPC_RICaction_AddedForModification_ItemIEs_specs_45 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P12_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P12 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P12_tags_13, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P12_tags_13) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P12_tags_13[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P12_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P12_tags_13) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P12_tags_13[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_FailedToBeAddedForModification_ItemIEs_49, + 3, /* Elements count */ + &asn_SPC_RICaction_FailedToBeAddedForModification_ItemIEs_specs_49 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P13_tags_14[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P13 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P13_tags_14, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P13_tags_14) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P13_tags_14[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P13_tags_14, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P13_tags_14) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P13_tags_14[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RequiredToBeModified_ItemIEs_53, + 3, /* Elements count */ + &asn_SPC_RICaction_RequiredToBeModified_ItemIEs_specs_53 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P14_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P14 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P14_tags_15, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P14_tags_15) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P14_tags_15[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P14_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P14_tags_15) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P14_tags_15[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RequiredToBeRemoved_ItemIEs_57, + 3, /* Elements count */ + &asn_SPC_RICaction_RequiredToBeRemoved_ItemIEs_specs_57 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P15_tags_16[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P15 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P15_tags_16, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P15_tags_16) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P15_tags_16[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P15_tags_16, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P15_tags_16) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P15_tags_16[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ConfirmedForModification_ItemIEs_61, + 3, /* Elements count */ + &asn_SPC_RICaction_ConfirmedForModification_ItemIEs_specs_61 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P16_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P16 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P16_tags_17, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P16_tags_17) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P16_tags_17[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P16_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P16_tags_17) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P16_tags_17[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RefusedToBeModified_ItemIEs_65, + 3, /* Elements count */ + &asn_SPC_RICaction_RefusedToBeModified_ItemIEs_specs_65 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P17_tags_18[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P17 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P17_tags_18, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P17_tags_18) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P17_tags_18[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P17_tags_18, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P17_tags_18) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P17_tags_18[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ConfirmedForRemoval_ItemIEs_69, + 3, /* Elements count */ + &asn_SPC_RICaction_ConfirmedForRemoval_ItemIEs_specs_69 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P18_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P18 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P18_tags_19, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P18_tags_19) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P18_tags_19[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P18_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P18_tags_19) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P18_tags_19[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RefusedToBeRemoved_ItemIEs_73, + 3, /* Elements count */ + &asn_SPC_RICaction_RefusedToBeRemoved_ItemIEs_specs_73 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P19_tags_20[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P19 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P19_tags_20, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P19_tags_20) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P19_tags_20[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P19_tags_20, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P19_tags_20) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P19_tags_20[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdate_ItemIEs_77, + 3, /* Elements count */ + &asn_SPC_E2connectionUpdate_ItemIEs_specs_77 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P20_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P20 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P20_tags_21, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P20_tags_21) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P20_tags_21[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P20_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P20_tags_21) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P20_tags_21[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionUpdateRemove_ItemIEs_81, + 3, /* Elements count */ + &asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_81 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P21_tags_22[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P21 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P21_tags_22, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P21_tags_22) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P21_tags_22[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P21_tags_22, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P21_tags_22) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P21_tags_22[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2connectionSetupFailed_ItemIEs_85, + 3, /* Elements count */ + &asn_SPC_E2connectionSetupFailed_ItemIEs_specs_85 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P22_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P22 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P22_tags_23, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P22_tags_23) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P22_tags_23[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P22_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P22_tags_23) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P22_tags_23[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigAddition_ItemIEs_89, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_89 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P23_tags_24[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P23 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P23_tags_24, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P23_tags_24) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P23_tags_24[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P23_tags_24, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P23_tags_24) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P23_tags_24[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_93, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_93 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P24_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P24 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P24_tags_25, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P24_tags_25) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P24_tags_25[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P24_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P24_tags_25) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P24_tags_25[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_97, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_97 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P25_tags_26[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P25 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P25_tags_26, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P25_tags_26) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P25_tags_26[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P25_tags_26, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P25_tags_26) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P25_tags_26[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_101, + 3, /* Elements count */ + &asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_101 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P26_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P26 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P26_tags_27, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P26_tags_27) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P26_tags_27[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P26_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P26_tags_27) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P26_tags_27[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_105, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_105 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P27_tags_28[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P27 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P27_tags_28, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P27_tags_28) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P27_tags_28[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P27_tags_28, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P27_tags_28) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P27_tags_28[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_109, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_109 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P28_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P28 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P28_tags_29, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P28_tags_29) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P28_tags_29[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P28_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P28_tags_29) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P28_tags_29[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_113, + 3, /* Elements count */ + &asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_113 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P29_tags_30[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P29 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P29_tags_30, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P29_tags_30) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P29_tags_30[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P29_tags_30, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P29_tags_30) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P29_tags_30[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunction_ItemIEs_117, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_117 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P30_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P30 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P30_tags_31, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P30_tags_31) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P30_tags_31[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P30_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P30_tags_31) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P30_tags_31[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunctionID_ItemIEs_121, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_121 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_88P31_tags_32[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P31 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_88P31_tags_32, + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P31_tags_32) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P31_tags_32[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_88P31_tags_32, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_88P31_tags_32) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_88P31_tags_32[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunctionIDcause_ItemIEs_125, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_125 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ProtocolIE-SingleContainer.h b/e2sim/asn1c/ProtocolIE-SingleContainer.h new file mode 100644 index 0000000..3840d5a --- /dev/null +++ b/e2sim/asn1c/ProtocolIE-SingleContainer.h @@ -0,0 +1,478 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "e2ap-container-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ProtocolIE_SingleContainer_H_ +#define _ProtocolIE_SingleContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Field.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-SingleContainer */ +typedef RICaction_ToBeSetup_ItemIEs_t ProtocolIE_SingleContainer_88P0_t; +typedef RICaction_Admitted_ItemIEs_t ProtocolIE_SingleContainer_88P1_t; +typedef RICaction_NotAdmitted_ItemIEs_t ProtocolIE_SingleContainer_88P2_t; +typedef RICsubscription_withCause_ItemIEs_t ProtocolIE_SingleContainer_88P3_t; +typedef RICaction_ToBeRemovedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P4_t; +typedef RICaction_ToBeModifiedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P5_t; +typedef RICaction_ToBeAddedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P6_t; +typedef RICaction_RemovedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P7_t; +typedef RICaction_FailedToBeRemovedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P8_t; +typedef RICaction_ModifiedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P9_t; +typedef RICaction_FailedToBeModifiedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P10_t; +typedef RICaction_AddedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P11_t; +typedef RICaction_FailedToBeAddedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P12_t; +typedef RICaction_RequiredToBeModified_ItemIEs_t ProtocolIE_SingleContainer_88P13_t; +typedef RICaction_RequiredToBeRemoved_ItemIEs_t ProtocolIE_SingleContainer_88P14_t; +typedef RICaction_ConfirmedForModification_ItemIEs_t ProtocolIE_SingleContainer_88P15_t; +typedef RICaction_RefusedToBeModified_ItemIEs_t ProtocolIE_SingleContainer_88P16_t; +typedef RICaction_ConfirmedForRemoval_ItemIEs_t ProtocolIE_SingleContainer_88P17_t; +typedef RICaction_RefusedToBeRemoved_ItemIEs_t ProtocolIE_SingleContainer_88P18_t; +typedef E2connectionUpdate_ItemIEs_t ProtocolIE_SingleContainer_88P19_t; +typedef E2connectionUpdateRemove_ItemIEs_t ProtocolIE_SingleContainer_88P20_t; +typedef E2connectionSetupFailed_ItemIEs_t ProtocolIE_SingleContainer_88P21_t; +typedef E2nodeComponentConfigAddition_ItemIEs_t ProtocolIE_SingleContainer_88P22_t; +typedef E2nodeComponentConfigUpdate_ItemIEs_t ProtocolIE_SingleContainer_88P23_t; +typedef E2nodeComponentConfigRemoval_ItemIEs_t ProtocolIE_SingleContainer_88P24_t; +typedef E2nodeTNLassociationRemoval_ItemIEs_t ProtocolIE_SingleContainer_88P25_t; +typedef E2nodeComponentConfigAdditionAck_ItemIEs_t ProtocolIE_SingleContainer_88P26_t; +typedef E2nodeComponentConfigUpdateAck_ItemIEs_t ProtocolIE_SingleContainer_88P27_t; +typedef E2nodeComponentConfigRemovalAck_ItemIEs_t ProtocolIE_SingleContainer_88P28_t; +typedef RANfunction_ItemIEs_t ProtocolIE_SingleContainer_88P29_t; +typedef RANfunctionID_ItemIEs_t ProtocolIE_SingleContainer_88P30_t; +typedef RANfunctionIDcause_ItemIEs_t ProtocolIE_SingleContainer_88P31_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P0; +asn_struct_free_f ProtocolIE_SingleContainer_88P0_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P0_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P0_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P0_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P0_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P0_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P0_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P0_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P0_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P0_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P0_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P0_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P1; +asn_struct_free_f ProtocolIE_SingleContainer_88P1_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P1_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P1_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P1_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P1_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P1_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P1_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P1_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P1_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P1_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P1_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P1_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P2; +asn_struct_free_f ProtocolIE_SingleContainer_88P2_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P2_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P2_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P2_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P2_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P2_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P2_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P2_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P2_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P2_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P2_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P2_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P3; +asn_struct_free_f ProtocolIE_SingleContainer_88P3_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P3_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P3_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P3_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P3_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P3_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P3_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P3_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P3_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P3_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P3_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P3_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P4; +asn_struct_free_f ProtocolIE_SingleContainer_88P4_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P4_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P4_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P4_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P4_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P4_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P4_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P4_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P4_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P4_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P4_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P4_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P5; +asn_struct_free_f ProtocolIE_SingleContainer_88P5_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P5_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P5_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P5_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P5_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P5_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P5_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P5_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P5_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P5_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P5_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P5_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P6; +asn_struct_free_f ProtocolIE_SingleContainer_88P6_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P6_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P6_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P6_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P6_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P6_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P6_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P6_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P6_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P6_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P6_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P6_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P7; +asn_struct_free_f ProtocolIE_SingleContainer_88P7_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P7_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P7_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P7_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P7_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P7_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P7_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P7_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P7_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P7_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P7_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P7_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P8; +asn_struct_free_f ProtocolIE_SingleContainer_88P8_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P8_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P8_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P8_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P8_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P8_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P8_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P8_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P8_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P8_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P8_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P8_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P9; +asn_struct_free_f ProtocolIE_SingleContainer_88P9_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P9_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P9_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P9_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P9_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P9_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P9_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P9_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P9_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P9_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P9_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P9_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P10; +asn_struct_free_f ProtocolIE_SingleContainer_88P10_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P10_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P10_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P10_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P10_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P10_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P10_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P10_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P10_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P10_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P10_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P10_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P11; +asn_struct_free_f ProtocolIE_SingleContainer_88P11_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P11_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P11_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P11_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P11_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P11_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P11_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P11_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P11_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P11_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P11_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P11_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P12; +asn_struct_free_f ProtocolIE_SingleContainer_88P12_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P12_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P12_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P12_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P12_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P12_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P12_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P12_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P12_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P12_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P12_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P12_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P13; +asn_struct_free_f ProtocolIE_SingleContainer_88P13_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P13_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P13_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P13_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P13_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P13_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P13_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P13_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P13_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P13_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P13_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P13_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P14; +asn_struct_free_f ProtocolIE_SingleContainer_88P14_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P14_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P14_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P14_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P14_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P14_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P14_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P14_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P14_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P14_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P14_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P14_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P15; +asn_struct_free_f ProtocolIE_SingleContainer_88P15_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P15_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P15_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P15_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P15_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P15_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P15_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P15_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P15_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P15_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P15_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P15_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P16; +asn_struct_free_f ProtocolIE_SingleContainer_88P16_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P16_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P16_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P16_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P16_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P16_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P16_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P16_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P16_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P16_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P16_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P16_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P17; +asn_struct_free_f ProtocolIE_SingleContainer_88P17_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P17_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P17_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P17_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P17_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P17_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P17_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P17_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P17_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P17_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P17_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P17_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P18; +asn_struct_free_f ProtocolIE_SingleContainer_88P18_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P18_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P18_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P18_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P18_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P18_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P18_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P18_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P18_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P18_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P18_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P18_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P19; +asn_struct_free_f ProtocolIE_SingleContainer_88P19_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P19_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P19_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P19_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P19_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P19_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P19_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P19_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P19_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P19_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P19_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P19_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P20; +asn_struct_free_f ProtocolIE_SingleContainer_88P20_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P20_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P20_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P20_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P20_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P20_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P20_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P20_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P20_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P20_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P20_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P20_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P21; +asn_struct_free_f ProtocolIE_SingleContainer_88P21_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P21_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P21_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P21_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P21_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P21_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P21_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P21_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P21_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P21_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P21_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P21_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P22; +asn_struct_free_f ProtocolIE_SingleContainer_88P22_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P22_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P22_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P22_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P22_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P22_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P22_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P22_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P22_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P22_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P22_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P22_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P23; +asn_struct_free_f ProtocolIE_SingleContainer_88P23_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P23_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P23_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P23_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P23_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P23_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P23_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P23_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P23_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P23_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P23_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P23_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P24; +asn_struct_free_f ProtocolIE_SingleContainer_88P24_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P24_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P24_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P24_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P24_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P24_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P24_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P24_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P24_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P24_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P24_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P24_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P25; +asn_struct_free_f ProtocolIE_SingleContainer_88P25_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P25_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P25_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P25_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P25_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P25_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P25_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P25_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P25_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P25_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P25_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P25_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P26; +asn_struct_free_f ProtocolIE_SingleContainer_88P26_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P26_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P26_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P26_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P26_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P26_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P26_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P26_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P26_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P26_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P26_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P26_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P27; +asn_struct_free_f ProtocolIE_SingleContainer_88P27_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P27_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P27_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P27_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P27_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P27_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P27_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P27_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P27_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P27_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P27_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P27_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P28; +asn_struct_free_f ProtocolIE_SingleContainer_88P28_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P28_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P28_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P28_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P28_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P28_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P28_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P28_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P28_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P28_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P28_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P28_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P29; +asn_struct_free_f ProtocolIE_SingleContainer_88P29_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P29_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P29_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P29_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P29_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P29_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P29_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P29_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P29_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P29_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P29_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P29_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P30; +asn_struct_free_f ProtocolIE_SingleContainer_88P30_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P30_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P30_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P30_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P30_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P30_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P30_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P30_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P30_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P30_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P30_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P30_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_88P31; +asn_struct_free_f ProtocolIE_SingleContainer_88P31_free; +asn_struct_print_f ProtocolIE_SingleContainer_88P31_print; +asn_constr_check_f ProtocolIE_SingleContainer_88P31_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_88P31_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_88P31_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_88P31_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_88P31_encode_xer; +jer_type_encoder_f ProtocolIE_SingleContainer_88P31_encode_jer; +per_type_decoder_f ProtocolIE_SingleContainer_88P31_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_88P31_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_88P31_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_88P31_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_SingleContainer_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/QCI.c b/e2sim/asn1c/QCI.c new file mode 100644 index 0000000..cd94330 --- /dev/null +++ b/e2sim/asn1c/QCI.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "QCI.h" + +int +QCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_QCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_QCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_QCI = { + "QCI", + "QCI", + &asn_OP_NativeInteger, + asn_DEF_QCI_tags_1, + sizeof(asn_DEF_QCI_tags_1) + /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */ + asn_DEF_QCI_tags_1, /* Same as above */ + sizeof(asn_DEF_QCI_tags_1) + /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_QCI_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + QCI_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/QCI.h b/e2sim/asn1c/QCI.h new file mode 100644 index 0000000..af0c8af --- /dev/null +++ b/e2sim/asn1c/QCI.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _QCI_H_ +#define _QCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* QCI */ +typedef long QCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_QCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_QCI; +asn_struct_free_f QCI_free; +asn_struct_print_f QCI_print; +asn_constr_check_f QCI_constraint; +ber_type_decoder_f QCI_decode_ber; +der_type_encoder_f QCI_encode_der; +xer_type_decoder_f QCI_decode_xer; +xer_type_encoder_f QCI_encode_xer; +jer_type_encoder_f QCI_encode_jer; +per_type_decoder_f QCI_decode_uper; +per_type_encoder_f QCI_encode_uper; +per_type_decoder_f QCI_decode_aper; +per_type_encoder_f QCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _QCI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/QoSID.c b/e2sim/asn1c/QoSID.c new file mode 100644 index 0000000..4e7c94e --- /dev/null +++ b/e2sim/asn1c/QoSID.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "QoSID.h" + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_QoSID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_QoSID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct QoSID, choice.fiveGC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FiveQI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "fiveGC" + }, + { ATF_NOFLAGS, 0, offsetof(struct QoSID, choice.ePC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_QCI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ePC" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_QoSID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveGC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ePC */ +}; +static asn_CHOICE_specifics_t asn_SPC_QoSID_specs_1 = { + sizeof(struct QoSID), + offsetof(struct QoSID, _asn_ctx), + offsetof(struct QoSID, present), + sizeof(((struct QoSID *)0)->present), + asn_MAP_QoSID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_QoSID = { + "QoSID", + "QoSID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_QoSID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_QoSID_1, + 2, /* Elements count */ + &asn_SPC_QoSID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/QoSID.h b/e2sim/asn1c/QoSID.h new file mode 100644 index 0000000..baec99f --- /dev/null +++ b/e2sim/asn1c/QoSID.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _QoSID_H_ +#define _QoSID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "FiveQI.h" +#include "QCI.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum QoSID_PR { + QoSID_PR_NOTHING, /* No components present */ + QoSID_PR_fiveGC, + QoSID_PR_ePC + /* Extensions may appear below */ + +} QoSID_PR; + +/* QoSID */ +typedef struct QoSID { + QoSID_PR present; + union QoSID_u { + FiveQI_t fiveGC; + QCI_t ePC; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} QoSID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_QoSID; + +#ifdef __cplusplus +} +#endif + +#endif /* _QoSID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/QosFlowIdentifier.c b/e2sim/asn1c/QosFlowIdentifier.c new file mode 100644 index 0000000..0071aa4 --- /dev/null +++ b/e2sim/asn1c/QosFlowIdentifier.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "QosFlowIdentifier.h" + +int +QosFlowIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 63L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_QosFlowIdentifier_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 0, 63 } /* (0..63,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_QosFlowIdentifier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_QosFlowIdentifier = { + "QosFlowIdentifier", + "QosFlowIdentifier", + &asn_OP_NativeInteger, + asn_DEF_QosFlowIdentifier_tags_1, + sizeof(asn_DEF_QosFlowIdentifier_tags_1) + /sizeof(asn_DEF_QosFlowIdentifier_tags_1[0]), /* 1 */ + asn_DEF_QosFlowIdentifier_tags_1, /* Same as above */ + sizeof(asn_DEF_QosFlowIdentifier_tags_1) + /sizeof(asn_DEF_QosFlowIdentifier_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_QosFlowIdentifier_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + QosFlowIdentifier_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/QosFlowIdentifier.h b/e2sim/asn1c/QosFlowIdentifier.h new file mode 100644 index 0000000..baeb6d9 --- /dev/null +++ b/e2sim/asn1c/QosFlowIdentifier.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _QosFlowIdentifier_H_ +#define _QosFlowIdentifier_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* QosFlowIdentifier */ +typedef long QosFlowIdentifier_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_QosFlowIdentifier_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_QosFlowIdentifier; +asn_struct_free_f QosFlowIdentifier_free; +asn_struct_print_f QosFlowIdentifier_print; +asn_constr_check_f QosFlowIdentifier_constraint; +ber_type_decoder_f QosFlowIdentifier_decode_ber; +der_type_encoder_f QosFlowIdentifier_encode_der; +xer_type_decoder_f QosFlowIdentifier_decode_xer; +xer_type_encoder_f QosFlowIdentifier_encode_xer; +jer_type_encoder_f QosFlowIdentifier_encode_jer; +per_type_decoder_f QosFlowIdentifier_decode_uper; +per_type_encoder_f QosFlowIdentifier_encode_uper; +per_type_decoder_f QosFlowIdentifier_decode_aper; +per_type_encoder_f QosFlowIdentifier_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _QosFlowIdentifier_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANUEID.c b/e2sim/asn1c/RANUEID.c new file mode 100644 index 0000000..bcc28d3 --- /dev/null +++ b/e2sim/asn1c/RANUEID.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANUEID.h" + +int +RANUEID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RANUEID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RANUEID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANUEID = { + "RANUEID", + "RANUEID", + &asn_OP_OCTET_STRING, + asn_DEF_RANUEID_tags_1, + sizeof(asn_DEF_RANUEID_tags_1) + /sizeof(asn_DEF_RANUEID_tags_1[0]), /* 1 */ + asn_DEF_RANUEID_tags_1, /* Same as above */ + sizeof(asn_DEF_RANUEID_tags_1) + /sizeof(asn_DEF_RANUEID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RANUEID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RANUEID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RANUEID.h b/e2sim/asn1c/RANUEID.h new file mode 100644 index 0000000..7596587 --- /dev/null +++ b/e2sim/asn1c/RANUEID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANUEID_H_ +#define _RANUEID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANUEID */ +typedef OCTET_STRING_t RANUEID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANUEID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANUEID; +asn_struct_free_f RANUEID_free; +asn_struct_print_f RANUEID_print; +asn_constr_check_f RANUEID_constraint; +ber_type_decoder_f RANUEID_decode_ber; +der_type_encoder_f RANUEID_encode_der; +xer_type_decoder_f RANUEID_decode_xer; +xer_type_encoder_f RANUEID_encode_xer; +jer_type_encoder_f RANUEID_encode_jer; +per_type_decoder_f RANUEID_decode_uper; +per_type_encoder_f RANUEID_encode_uper; +per_type_decoder_f RANUEID_decode_aper; +per_type_encoder_f RANUEID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANUEID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunction-Item.c b/e2sim/asn1c/RANfunction-Item.c new file mode 100644 index 0000000..d8966ca --- /dev/null +++ b/e2sim/asn1c/RANfunction-Item.c @@ -0,0 +1,120 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunction-Item.h" + +asn_TYPE_member_t asn_MBR_RANfunction_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionDefinition), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunctionDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionRevision), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionRevision, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunctionRevision" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionOID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionOID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunctionOID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunctionRevision */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunctionOID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Item_specs_1 = { + sizeof(struct RANfunction_Item), + offsetof(struct RANfunction_Item, _asn_ctx), + asn_MAP_RANfunction_Item_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_Item = { + "RANfunction-Item", + "RANfunction-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_Item_tags_1, + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunction_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunction_Item_1, + 4, /* Elements count */ + &asn_SPC_RANfunction_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RANfunction-Item.h b/e2sim/asn1c/RANfunction-Item.h new file mode 100644 index 0000000..f08c40b --- /dev/null +++ b/e2sim/asn1c/RANfunction-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunction_Item_H_ +#define _RANfunction_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RANfunctionDefinition.h" +#include "RANfunctionRevision.h" +#include "RANfunctionOID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunction-Item */ +typedef struct RANfunction_Item { + RANfunctionID_t ranFunctionID; + RANfunctionDefinition_t ranFunctionDefinition; + RANfunctionRevision_t ranFunctionRevision; + RANfunctionOID_t ranFunctionOID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RANfunction_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunction_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunction-Name.c b/e2sim/asn1c/RANfunction-Name.c new file mode 100644 index 0000000..f0e7a9a --- /dev/null +++ b/e2sim/asn1c/RANfunction-Name.c @@ -0,0 +1,353 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunction-Name.h" + +static const int permitted_alphabet_table_2[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_2[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_2(const void *sptr) { + const int *table = permitted_alphabet_table_2; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static const int permitted_alphabet_table_3[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_3[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_3(const void *sptr) { + const int *table = permitted_alphabet_table_3; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static const int permitted_alphabet_table_4[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_4[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_4(const void *sptr) { + const int *table = permitted_alphabet_table_4; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static int +memb_ranFunction_ShortName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 150UL) + && !check_permitted_alphabet_2(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_ranFunction_ShortName_2_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_2)/sizeof(permitted_alphabet_table_2[0])) + return -1; + return permitted_alphabet_table_2[value] - 1; +} +static int asn_PER_MAP_ranFunction_ShortName_2_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_2)/sizeof(permitted_alphabet_code2value_2[0])) + return -1; + return permitted_alphabet_code2value_2[code]; +} +static int +memb_ranFunction_E2SM_OID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 1000UL) + && !check_permitted_alphabet_3(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_ranFunction_E2SM_OID_3_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0])) + return -1; + return permitted_alphabet_table_3[value] - 1; +} +static int asn_PER_MAP_ranFunction_E2SM_OID_3_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0])) + return -1; + return permitted_alphabet_code2value_3[code]; +} +static int +memb_ranFunction_Description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 150UL) + && !check_permitted_alphabet_4(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_ranFunction_Description_4_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0])) + return -1; + return permitted_alphabet_table_4[value] - 1; +} +static int asn_PER_MAP_ranFunction_Description_4_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0])) + return -1; + return permitted_alphabet_code2value_4[code]; +} +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_ranFunction_ShortName_2_v2c, /* Value to PER code map */ + asn_PER_MAP_ranFunction_ShortName_2_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */, + asn_PER_MAP_ranFunction_E2SM_OID_3_v2c, /* Value to PER code map */ + asn_PER_MAP_ranFunction_E2SM_OID_3_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ranFunction_Description_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_ranFunction_Description_4_v2c, /* Value to PER code map */ + asn_PER_MAP_ranFunction_Description_4_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RANfunction_Name_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_ShortName), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ranFunction_ShortName_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ranFunction_ShortName_constraint_1 + }, + 0, 0, /* No default value */ + "ranFunction-ShortName" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_E2SM_OID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ranFunction_E2SM_OID_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ranFunction_E2SM_OID_constraint_1 + }, + 0, 0, /* No default value */ + "ranFunction-E2SM-OID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_Description), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ranFunction_Description_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ranFunction_Description_constraint_1 + }, + 0, 0, /* No default value */ + "ranFunction-Description" + }, + { ATF_POINTER, 1, offsetof(struct RANfunction_Name, ranFunction_Instance), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunction-Instance" + }, +}; +static const int asn_MAP_RANfunction_Name_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_RANfunction_Name_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Name_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-ShortName */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunction-E2SM-OID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunction-Description */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunction-Instance */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1 = { + sizeof(struct RANfunction_Name), + offsetof(struct RANfunction_Name, _asn_ctx), + asn_MAP_RANfunction_Name_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_RANfunction_Name_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_Name = { + "RANfunction-Name", + "RANfunction-Name", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_Name_tags_1, + sizeof(asn_DEF_RANfunction_Name_tags_1) + /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */ + asn_DEF_RANfunction_Name_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunction_Name_tags_1) + /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunction_Name_1, + 4, /* Elements count */ + &asn_SPC_RANfunction_Name_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RANfunction-Name.h b/e2sim/asn1c/RANfunction-Name.h new file mode 100644 index 0000000..eddc95b --- /dev/null +++ b/e2sim/asn1c/RANfunction-Name.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunction_Name_H_ +#define _RANfunction_Name_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrintableString.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunction-Name */ +typedef struct RANfunction_Name { + PrintableString_t ranFunction_ShortName; + PrintableString_t ranFunction_E2SM_OID; + PrintableString_t ranFunction_Description; + long *ranFunction_Instance; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_Name_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Name; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1; +extern asn_TYPE_member_t asn_MBR_RANfunction_Name_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunction_Name_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunctionDefinition.c b/e2sim/asn1c/RANfunctionDefinition.c new file mode 100644 index 0000000..ce0e16a --- /dev/null +++ b/e2sim/asn1c/RANfunctionDefinition.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunctionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RANfunctionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition = { + "RANfunctionDefinition", + "RANfunctionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RANfunctionDefinition_tags_1, + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RANfunctionDefinition.h b/e2sim/asn1c/RANfunctionDefinition.h new file mode 100644 index 0000000..ac6ed38 --- /dev/null +++ b/e2sim/asn1c/RANfunctionDefinition.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunctionDefinition_H_ +#define _RANfunctionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionDefinition */ +typedef OCTET_STRING_t RANfunctionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition; +asn_struct_free_f RANfunctionDefinition_free; +asn_struct_print_f RANfunctionDefinition_print; +asn_constr_check_f RANfunctionDefinition_constraint; +ber_type_decoder_f RANfunctionDefinition_decode_ber; +der_type_encoder_f RANfunctionDefinition_encode_der; +xer_type_decoder_f RANfunctionDefinition_decode_xer; +xer_type_encoder_f RANfunctionDefinition_encode_xer; +jer_type_encoder_f RANfunctionDefinition_encode_jer; +per_type_decoder_f RANfunctionDefinition_decode_uper; +per_type_encoder_f RANfunctionDefinition_encode_uper; +per_type_decoder_f RANfunctionDefinition_decode_aper; +per_type_encoder_f RANfunctionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionDefinition_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunctionID-Item.c b/e2sim/asn1c/RANfunctionID-Item.c new file mode 100644 index 0000000..86e1843 --- /dev/null +++ b/e2sim/asn1c/RANfunctionID-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunctionID-Item.h" + +asn_TYPE_member_t asn_MBR_RANfunctionID_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionRevision), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionRevision, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunctionRevision" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranFunctionRevision */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_Item_specs_1 = { + sizeof(struct RANfunctionID_Item), + offsetof(struct RANfunctionID_Item, _asn_ctx), + asn_MAP_RANfunctionID_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item = { + "RANfunctionID-Item", + "RANfunctionID-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_Item_tags_1, + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunctionID_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunctionID_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RANfunctionID-Item.h b/e2sim/asn1c/RANfunctionID-Item.h new file mode 100644 index 0000000..1932dd8 --- /dev/null +++ b/e2sim/asn1c/RANfunctionID-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunctionID_Item_H_ +#define _RANfunctionID_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RANfunctionRevision.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID-Item */ +typedef struct RANfunctionID_Item { + RANfunctionID_t ranFunctionID; + RANfunctionRevision_t ranFunctionRevision; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RANfunctionID_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunctionID.c b/e2sim/asn1c/RANfunctionID.c new file mode 100644 index 0000000..e862d77 --- /dev/null +++ b/e2sim/asn1c/RANfunctionID.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunctionID.h" + +int +RANfunctionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 4095L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RANfunctionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID = { + "RANfunctionID", + "RANfunctionID", + &asn_OP_NativeInteger, + asn_DEF_RANfunctionID_tags_1, + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RANfunctionID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RANfunctionID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/RANfunctionID.h b/e2sim/asn1c/RANfunctionID.h new file mode 100644 index 0000000..8949d24 --- /dev/null +++ b/e2sim/asn1c/RANfunctionID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunctionID_H_ +#define _RANfunctionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID */ +typedef long RANfunctionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID; +asn_struct_free_f RANfunctionID_free; +asn_struct_print_f RANfunctionID_print; +asn_constr_check_f RANfunctionID_constraint; +ber_type_decoder_f RANfunctionID_decode_ber; +der_type_encoder_f RANfunctionID_encode_der; +xer_type_decoder_f RANfunctionID_decode_xer; +xer_type_encoder_f RANfunctionID_encode_xer; +jer_type_encoder_f RANfunctionID_encode_jer; +per_type_decoder_f RANfunctionID_decode_uper; +per_type_encoder_f RANfunctionID_encode_uper; +per_type_decoder_f RANfunctionID_decode_aper; +per_type_encoder_f RANfunctionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunctionIDcause-Item.c b/e2sim/asn1c/RANfunctionIDcause-Item.c new file mode 100644 index 0000000..55a8ff3 --- /dev/null +++ b/e2sim/asn1c/RANfunctionIDcause-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunctionIDcause-Item.h" + +asn_TYPE_member_t asn_MBR_RANfunctionIDcause_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_Item_specs_1 = { + sizeof(struct RANfunctionIDcause_Item), + offsetof(struct RANfunctionIDcause_Item, _asn_ctx), + asn_MAP_RANfunctionIDcause_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item = { + "RANfunctionIDcause-Item", + "RANfunctionIDcause-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_Item_tags_1, + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RANfunctionIDcause_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunctionIDcause_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RANfunctionIDcause-Item.h b/e2sim/asn1c/RANfunctionIDcause-Item.h new file mode 100644 index 0000000..aabb1d4 --- /dev/null +++ b/e2sim/asn1c/RANfunctionIDcause-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunctionIDcause_Item_H_ +#define _RANfunctionIDcause_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionIDcause-Item */ +typedef struct RANfunctionIDcause_Item { + RANfunctionID_t ranFunctionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionIDcause_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunctionOID.c b/e2sim/asn1c/RANfunctionOID.c new file mode 100644 index 0000000..4e4f0f7 --- /dev/null +++ b/e2sim/asn1c/RANfunctionOID.c @@ -0,0 +1,116 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunctionOID.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_1[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +RANfunctionOID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 1000UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_RANfunctionOID_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_RANfunctionOID_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using PrintableString, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RANfunctionOID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */, + asn_PER_MAP_RANfunctionOID_1_v2c, /* Value to PER code map */ + asn_PER_MAP_RANfunctionOID_1_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RANfunctionOID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionOID = { + "RANfunctionOID", + "RANfunctionOID", + &asn_OP_PrintableString, + asn_DEF_RANfunctionOID_tags_1, + sizeof(asn_DEF_RANfunctionOID_tags_1) + /sizeof(asn_DEF_RANfunctionOID_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionOID_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionOID_tags_1) + /sizeof(asn_DEF_RANfunctionOID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RANfunctionOID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RANfunctionOID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/RANfunctionOID.h b/e2sim/asn1c/RANfunctionOID.h new file mode 100644 index 0000000..720438c --- /dev/null +++ b/e2sim/asn1c/RANfunctionOID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunctionOID_H_ +#define _RANfunctionOID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrintableString.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionOID */ +typedef PrintableString_t RANfunctionOID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANfunctionOID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionOID; +asn_struct_free_f RANfunctionOID_free; +asn_struct_print_f RANfunctionOID_print; +asn_constr_check_f RANfunctionOID_constraint; +ber_type_decoder_f RANfunctionOID_decode_ber; +der_type_encoder_f RANfunctionOID_encode_der; +xer_type_decoder_f RANfunctionOID_decode_xer; +xer_type_encoder_f RANfunctionOID_encode_xer; +jer_type_encoder_f RANfunctionOID_encode_jer; +per_type_decoder_f RANfunctionOID_decode_uper; +per_type_encoder_f RANfunctionOID_encode_uper; +per_type_decoder_f RANfunctionOID_decode_aper; +per_type_encoder_f RANfunctionOID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionOID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunctionRevision.c b/e2sim/asn1c/RANfunctionRevision.c new file mode 100644 index 0000000..ff79e4d --- /dev/null +++ b/e2sim/asn1c/RANfunctionRevision.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunctionRevision.h" + +int +RANfunctionRevision_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 4095L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RANfunctionRevision_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision = { + "RANfunctionRevision", + "RANfunctionRevision", + &asn_OP_NativeInteger, + asn_DEF_RANfunctionRevision_tags_1, + sizeof(asn_DEF_RANfunctionRevision_tags_1) + /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionRevision_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionRevision_tags_1) + /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RANfunctionRevision_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RANfunctionRevision_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/RANfunctionRevision.h b/e2sim/asn1c/RANfunctionRevision.h new file mode 100644 index 0000000..b630314 --- /dev/null +++ b/e2sim/asn1c/RANfunctionRevision.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunctionRevision_H_ +#define _RANfunctionRevision_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionRevision */ +typedef long RANfunctionRevision_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision; +asn_struct_free_f RANfunctionRevision_free; +asn_struct_print_f RANfunctionRevision_print; +asn_constr_check_f RANfunctionRevision_constraint; +ber_type_decoder_f RANfunctionRevision_decode_ber; +der_type_encoder_f RANfunctionRevision_encode_der; +xer_type_decoder_f RANfunctionRevision_decode_xer; +xer_type_encoder_f RANfunctionRevision_encode_xer; +jer_type_encoder_f RANfunctionRevision_encode_jer; +per_type_decoder_f RANfunctionRevision_decode_uper; +per_type_encoder_f RANfunctionRevision_encode_uper; +per_type_decoder_f RANfunctionRevision_decode_aper; +per_type_encoder_f RANfunctionRevision_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionRevision_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunctions-List.c b/e2sim/asn1c/RANfunctions-List.c new file mode 100644 index 0000000..b09b682 --- /dev/null +++ b/e2sim/asn1c/RANfunctions-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunctions-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RANfunctions_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RANfunctions_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P29, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctions_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RANfunctions_List_specs_1 = { + sizeof(struct RANfunctions_List), + offsetof(struct RANfunctions_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctions_List = { + "RANfunctions-List", + "RANfunctions-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctions_List_tags_1, + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctions_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RANfunctions_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RANfunctions_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctions_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RANfunctions-List.h b/e2sim/asn1c/RANfunctions-List.h new file mode 100644 index 0000000..66f13ed --- /dev/null +++ b/e2sim/asn1c/RANfunctions-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunctions_List_H_ +#define _RANfunctions_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RANfunctions-List */ +typedef struct RANfunctions_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctions_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctions_List; +extern asn_SET_OF_specifics_t asn_SPC_RANfunctions_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RANfunctions_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RANfunctions_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctions_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunctionsID-List.c b/e2sim/asn1c/RANfunctionsID-List.c new file mode 100644 index 0000000..cb1015e --- /dev/null +++ b/e2sim/asn1c/RANfunctionsID-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunctionsID-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RANfunctionsID_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RANfunctionsID_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P30, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsID_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RANfunctionsID_List_specs_1 = { + sizeof(struct RANfunctionsID_List), + offsetof(struct RANfunctionsID_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List = { + "RANfunctionsID-List", + "RANfunctionsID-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsID_List_tags_1, + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsID_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RANfunctionsID_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RANfunctionsID_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsID_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RANfunctionsID-List.h b/e2sim/asn1c/RANfunctionsID-List.h new file mode 100644 index 0000000..d70941a --- /dev/null +++ b/e2sim/asn1c/RANfunctionsID-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunctionsID_List_H_ +#define _RANfunctionsID_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RANfunctionsID-List */ +typedef struct RANfunctionsID_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsID_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List; +extern asn_SET_OF_specifics_t asn_SPC_RANfunctionsID_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RANfunctionsID_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RANfunctionsID_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsID_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RANfunctionsIDcause-List.c b/e2sim/asn1c/RANfunctionsIDcause-List.c new file mode 100644 index 0000000..42e6285 --- /dev/null +++ b/e2sim/asn1c/RANfunctionsIDcause-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RANfunctionsIDcause-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RANfunctionsIDcause_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RANfunctionsIDcause_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P31, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsIDcause_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RANfunctionsIDcause_List_specs_1 = { + sizeof(struct RANfunctionsIDcause_List), + offsetof(struct RANfunctionsIDcause_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List = { + "RANfunctionsIDcause-List", + "RANfunctionsIDcause-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsIDcause_List_tags_1, + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsIDcause_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RANfunctionsIDcause_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RANfunctionsIDcause_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsIDcause_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RANfunctionsIDcause-List.h b/e2sim/asn1c/RANfunctionsIDcause-List.h new file mode 100644 index 0000000..f588f98 --- /dev/null +++ b/e2sim/asn1c/RANfunctionsIDcause-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RANfunctionsIDcause_List_H_ +#define _RANfunctionsIDcause_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RANfunctionsIDcause-List */ +typedef struct RANfunctionsIDcause_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsIDcause_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List; +extern asn_SET_OF_specifics_t asn_SPC_RANfunctionsIDcause_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RANfunctionsIDcause_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RANfunctionsIDcause_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsIDcause_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/REAL.c b/e2sim/asn1c/REAL.c new file mode 100644 index 0000000..a551fe5 --- /dev/null +++ b/e2sim/asn1c/REAL.c @@ -0,0 +1,734 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include /* for strtod(3) */ +#include +#include + +#undef INT_MAX +#define INT_MAX ((int)(((unsigned int)-1) >> 1)) + +struct specialRealValue_s specialRealValue[] = { +#define SRV_SET(foo, val) { (char *)foo, sizeof(foo) - 1, val } + SRV_SET("", 0), + SRV_SET("", -1), + SRV_SET("", 1), +#undef SRV_SET +}; + +#if defined(__clang__) +/* + * isnan() is defined using generic selections and won't compile in + * strict C89 mode because of too fancy system's standard library. + * However, prior to C11 the math had a perfectly working isnan() + * in the math library. + * Disable generic selection warning so we can test C89 mode with newer libc. + */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc11-extensions" +static int asn_isnan(double d) { + return isnan(d); +} +static int asn_isfinite(double d) { +#ifdef isfinite + return isfinite(d); /* ISO C99 */ +#else + return finite(d); /* Deprecated on Mac OS X 10.9 */ +#endif +} +#pragma clang diagnostic pop +#else /* !clang */ +#define asn_isnan(v) isnan(v) +#ifdef isfinite +#define asn_isfinite(d) isfinite(d) /* ISO C99 */ +#else +#define asn_isfinite(d) finite(d) /* Deprecated on Mac OS X 10.9 */ +#endif +#endif /* clang */ + +/* + * REAL basic type description. + */ +static const ber_tlv_tag_t asn_DEF_REAL_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (9 << 2)) +}; +asn_TYPE_operation_t asn_OP_REAL = { + ASN__PRIMITIVE_TYPE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + REAL_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + REAL_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + ber_decode_primitive, + der_encode_primitive, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + REAL_decode_xer, + REAL_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + REAL_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + REAL_decode_oer, + REAL_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + REAL_decode_uper, + REAL_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + REAL_decode_aper, + REAL_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + REAL_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_REAL = { + "REAL", + "REAL", + &asn_OP_REAL, + asn_DEF_REAL_tags, + sizeof(asn_DEF_REAL_tags) / sizeof(asn_DEF_REAL_tags[0]), + asn_DEF_REAL_tags, /* Same as above */ + sizeof(asn_DEF_REAL_tags) / sizeof(asn_DEF_REAL_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +ssize_t +REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key) { + char local_buf[64]; + char *buf = local_buf; + ssize_t buflen = sizeof(local_buf); + ssize_t ret; + + /* + * Check whether it is a special value. + */ + /* fpclassify(3) is not portable yet */ + if(asn_isnan(d)) { + buf = specialRealValue[SRV__NOT_A_NUMBER].string; + buflen = specialRealValue[SRV__NOT_A_NUMBER].length; + return (cb(buf, buflen, app_key) < 0) ? -1 : buflen; + } else if(!asn_isfinite(d)) { + if(copysign(1.0, d) < 0.0) { + buf = specialRealValue[SRV__MINUS_INFINITY].string; + buflen = specialRealValue[SRV__MINUS_INFINITY].length; + } else { + buf = specialRealValue[SRV__PLUS_INFINITY].string; + buflen = specialRealValue[SRV__PLUS_INFINITY].length; + } + return (cb(buf, buflen, app_key) < 0) ? -1 : buflen; + } else if(ilogb(d) <= -INT_MAX) { + if(copysign(1.0, d) < 0.0) { + buf = "-0"; + buflen = 2; + } else { + buf = "0"; + buflen = 1; + } + return (cb(buf, buflen, app_key) < 0) ? -1 : buflen; + } + + /* + * Use the libc's double printing, hopefully they got it right. + */ + do { + ret = snprintf(buf, + buflen, + canonical ? "%.17E" /* Precise */ : "%.15f" /* Pleasant*/, + d); + if(ret < 0) { + /* There are some old broken APIs. */ + buflen <<= 1; + if(buflen > 4096) { + /* Should be plenty. */ + if(buf != local_buf) FREEMEM(buf); + return -1; + } + } else if(ret >= buflen) { + buflen = ret + 1; + } else { + buflen = ret; + break; + } + if(buf != local_buf) FREEMEM(buf); + buf = (char *)MALLOC(buflen); + if(!buf) return -1; + } while(1); + + if(canonical) { + /* + * Transform the "[-]d.dddE+-dd" output into "[-]d.dddE[-]d" + * Check that snprintf() constructed the output correctly. + */ + char *dot; + char *end = buf + buflen; + char *last_zero; + char *first_zero_in_run; + char *s; + + enum { + LZSTATE_NOTHING, + LZSTATE_ZEROES + } lz_state = LZSTATE_NOTHING; + + dot = (buf[0] == 0x2d /* '-' */) ? (buf + 2) : (buf + 1); + if(*dot >= 0x30) { + if(buf != local_buf) FREEMEM(buf); + errno = EINVAL; + return -1; /* Not a dot, really */ + } + *dot = 0x2e; /* Replace possible comma */ + + for(first_zero_in_run = last_zero = s = dot + 2; s < end; s++) { + switch(*s) { + case 0x45: /* 'E' */ + if(lz_state == LZSTATE_ZEROES) last_zero = first_zero_in_run; + break; + case 0x30: /* '0' */ + if(lz_state == LZSTATE_NOTHING) first_zero_in_run = s; + lz_state = LZSTATE_ZEROES; + continue; + default: + lz_state = LZSTATE_NOTHING; + continue; + } + break; + } + + if(s == end) { + if(buf != local_buf) FREEMEM(buf); + errno = EINVAL; + return -1; /* No promised E */ + } + + assert(*s == 0x45); + { + int sign; + char *E = s; + char *expptr = ++E; + + s = expptr; + + if(*expptr == 0x2b /* '+' */) { + /* Skip the "+" */ + buflen -= 1; + sign = 0; + } else { + sign = 1; + s++; + } + expptr++; + if(expptr > end) { + if(buf != local_buf) FREEMEM(buf); + errno = EINVAL; + return -1; + } + if(*expptr == 0x30) { + buflen--; + expptr++; + } + if(lz_state == LZSTATE_ZEROES) { + *last_zero = 0x45; /* E */ + buflen -= s - (last_zero + 1); + s = last_zero + 1; + if(sign) { + *s++ = 0x2d /* '-' */; + buflen++; + } + } + for(; expptr <= end; s++, expptr++) + *s = *expptr; + } + } else { + /* + * Remove trailing zeros. + */ + char *end = buf + buflen; + char *last_zero = end; + int stoplooking = 0; + char *z; + for(z = end - 1; z > buf; z--) { + switch(*z) { + case 0x30: + if(!stoplooking) + last_zero = z; + continue; + case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + stoplooking = 1; + continue; + default: /* Catch dot and other separators */ + /* + * Replace possible comma (which may even + * be not a comma at all: locale-defined). + */ + *z = 0x2e; + if(last_zero == z + 1) { /* leave x.0 */ + last_zero++; + } + buflen = last_zero - buf; + *last_zero = '\0'; + break; + } + break; + } + } + + ret = cb(buf, buflen, app_key); + if(buf != local_buf) FREEMEM(buf); + return (ret < 0) ? -1 : buflen; +} + +int +REAL_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const REAL_t *a = aptr; + const REAL_t *b = bptr; + + (void)td; + + if(a && b) { + double adbl, bdbl; + int ra, rb; + ra = asn_REAL2double(a, &adbl); + rb = asn_REAL2double(b, &bdbl); + if(ra == 0 && rb == 0) { + if(asn_isnan(adbl)) { + if(asn_isnan(bdbl)) { + return 0; + } else { + return -1; + } + } else if(asn_isnan(bdbl)) { + return 1; + } + /* Value comparison. */ + if(adbl < bdbl) { + return -1; + } else if(adbl > bdbl) { + return 1; + } else { + return 0; + } + } else if(ra) { + return -1; + } else { + return 1; + } + } else if(!a) { + return -1; + } else { + return 1; + } +} + +int +asn_REAL2double(const REAL_t *st, double *dbl_value) { + unsigned int octv; + + if(!st || !st->buf) { + errno = EINVAL; + return -1; + } + + if(st->size == 0) { + *dbl_value = 0; + return 0; + } + + octv = st->buf[0]; /* unsigned byte */ + + switch(octv & 0xC0) { + case 0x40: /* X.690: 8.5.6 a) => 8.5.9 */ + /* "SpecialRealValue" */ + + /* Be liberal in what you accept... + * http://en.wikipedia.org/wiki/Robustness_principle + if(st->size != 1) ... + */ + + switch(st->buf[0]) { + case 0x40: /* 01000000: PLUS-INFINITY */ + *dbl_value = INFINITY; + return 0; + case 0x41: /* 01000001: MINUS-INFINITY */ + *dbl_value = - INFINITY; + return 0; + case 0x42: /* 01000010: NOT-A-NUMBER */ + *dbl_value = NAN; + return 0; + case 0x43: /* 01000011: minus zero */ + *dbl_value = -0.0; + return 0; + } + + errno = EINVAL; + return -1; + case 0x00: { /* X.690: 8.5.7 */ + /* + * Decimal. NR{1,2,3} format from ISO 6093. + * NR1: [ ]*[+-]?[0-9]+ + * NR2: [ ]*[+-]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+) + * NR3: [ ]*[+-]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)[Ee][+-]?[0-9]+ + */ + double d; + char *source = 0; + char *endptr; + int used_malloc = 0; + + if(octv == 0 || (octv & 0x3C)) { + /* Remaining values of bits 6 to 1 are Reserved. */ + errno = EINVAL; + return -1; + } + + /* 1. By contract, an input buffer should be '\0'-terminated. + * OCTET STRING decoder ensures that, as is asn_double2REAL(). + * 2. ISO 6093 specifies COMMA as a possible decimal separator. + * However, strtod() can't always deal with COMMA. + * So her we fix both by reallocating, copying and fixing. + */ + if(st->buf[st->size] != '\0' || memchr(st->buf, ',', st->size)) { + const uint8_t *p, *end; + char *b; + + b = source = (char *)MALLOC(st->size + 1); + if(!source) return -1; + used_malloc = 1; + + /* Copy without the first byte and with 0-termination */ + for(p = st->buf + 1, end = st->buf + st->size; + p < end; b++, p++) + *b = (*p == ',') ? '.' : *p; + *b = '\0'; + } else { + source = (char *)&st->buf[1]; + } + + endptr = source; + d = strtod(source, &endptr); + if(*endptr != '\0') { + /* Format is not consistent with ISO 6093 */ + if(used_malloc) FREEMEM(source); + errno = EINVAL; + return -1; + } + if(used_malloc) FREEMEM(source); + if(asn_isfinite(d)) { + *dbl_value = d; + return 0; + } else { + errno = ERANGE; + return -1; + } + } + } + + /* + * Binary representation. + */ + { + double m; + int32_t expval; /* exponent value */ + unsigned int elen; /* exponent value length, in octets */ + int scaleF; + int baseF; + uint8_t *ptr; + uint8_t *end; + int sign; + + switch((octv & 0x30) >> 4) { + case 0x00: baseF = 1; break; /* base 2 */ + case 0x01: baseF = 3; break; /* base 8 */ + case 0x02: baseF = 4; break; /* base 16 */ + default: + /* Reserved field, can't parse now. */ + errno = EINVAL; + return -1; + } + + sign = (octv & 0x40); /* bit 7 */ + scaleF = (octv & 0x0C) >> 2; /* bits 4 to 3 */ + + if(st->size <= 1 + (octv & 0x03)) { + errno = EINVAL; + return -1; + } + + elen = (octv & 0x03); /* bits 2 to 1; 8.5.6.4 */ + if(elen == 0x03) { /* bits 2 to 1 = 11; 8.5.6.4, case d) */ + elen = st->buf[1]; /* unsigned binary number */ + if(elen == 0 || st->size <= (2 + elen)) { + errno = EINVAL; + return -1; + } + /* FIXME: verify constraints of case d) */ + ptr = &st->buf[2]; + } else { + ptr = &st->buf[1]; + } + + /* Fetch the multibyte exponent */ + expval = (int)(*(int8_t *)ptr); + if(elen >= sizeof(expval)-1) { + errno = ERANGE; + return -1; + } + end = ptr + elen + 1; + for(ptr++; ptr < end; ptr++) + expval = (expval * 256) + *ptr; + + m = 0.0; /* Initial mantissa value */ + + /* Okay, the exponent is here. Now, what about mantissa? */ + end = st->buf + st->size; + for(; ptr < end; ptr++) + m = ldexp(m, 8) + *ptr; + + if(0) + ASN_DEBUG("m=%.10f, scF=%d, bF=%d, expval=%d, ldexp()=%f, ldexp()=%f\n", + m, scaleF, baseF, expval, + ldexp(m, expval * baseF + scaleF), + ldexp(m, scaleF) * pow(pow(2, baseF), expval) + ); + + /* + * (S * N * 2^F) * B^E + * Essentially: + m = ldexp(m, scaleF) * pow(pow(2, baseF), expval); + */ + m = ldexp(m, expval * baseF + scaleF); + if(asn_isfinite(m)) { + *dbl_value = sign ? -m : m; + } else { + errno = ERANGE; + return -1; + } + + } /* if(binary_format) */ + + return 0; +} + +/* + * Assume IEEE 754 floating point: standard 64 bit double. + * [1 bit sign] [11 bits exponent] [52 bits mantissa] + */ +int +asn_double2REAL(REAL_t *st, double dbl_value) { + double test = -0.0; + int float_big_endian = *(const char *)&test != 0; + uint8_t buf[16]; /* More than enough for 8-byte dbl_value */ + uint8_t dscr[sizeof(dbl_value)]; /* double value scratch pad */ + /* Assertion guards: won't even compile, if unexpected double size */ + char assertion_buffer1[9 - sizeof(dbl_value)] CC_NOTUSED; + char assertion_buffer2[sizeof(dbl_value) - 7] CC_NOTUSED; + uint8_t *ptr = buf; + uint8_t *mstop; /* Last byte of mantissa */ + unsigned int mval; /* Value of the last byte of mantissa */ + unsigned int bmsign; /* binary mask with sign */ + unsigned int buflen; + unsigned int accum; + int expval; + + if(!st) { + errno = EINVAL; + return -1; + } + + /* + * ilogb(+-0) returns -INT_MAX or INT_MIN (platform-dependent) + * ilogb(+-inf) returns INT_MAX, logb(+-inf) returns +inf + * ilogb(NaN) returns INT_MIN or INT_MAX (platform-dependent) + */ + expval = ilogb(dbl_value); + if(expval <= -INT_MAX /* Also catches +-0 and maybe isnan() */ + || expval == INT_MAX /* catches isfin() and maybe isnan() */ + ) { + if(!st->buf || st->size < 2) { + ptr = (uint8_t *)MALLOC(2); + if(!ptr) return -1; + if(st->buf) FREEMEM(st->buf); + st->buf = ptr; + } + /* fpclassify(3) is not portable yet */ + if(asn_isnan(dbl_value)) { + st->buf[0] = 0x42; /* NaN */ + st->buf[1] = 0; + st->size = 1; + } else if(!asn_isfinite(dbl_value)) { + if(copysign(1.0, dbl_value) < 0.0) { + st->buf[0] = 0x41; /* MINUS-INFINITY */ + } else { + st->buf[0] = 0x40; /* PLUS-INFINITY */ + } + st->buf[1] = 0; + st->size = 1; + } else { + if(copysign(1.0, dbl_value) >= 0.0) { + /* no content octets: positive zero */ + st->buf[0] = 0; /* JIC */ + st->size = 0; + } else { + /* Negative zero. #8.5.3, 8.5.9 */ + st->buf[0] = 0x43; + st->buf[1] = 0; + st->size = 1; + } + } + return 0; + } + + if(float_big_endian) { + uint8_t *s = ((uint8_t *)&dbl_value) + 1; + uint8_t *end = ((uint8_t *)&dbl_value) + sizeof(double); + uint8_t *d; + + bmsign = 0x80 | ((s[-1] >> 1) & 0x40); /* binary mask & - */ + for(mstop = d = dscr; s < end; d++, s++) { + *d = *s; + if(*d) mstop = d; + } + } else { + uint8_t *s = ((uint8_t *)&dbl_value) + sizeof(dbl_value) - 2; + uint8_t *start = ((uint8_t *)&dbl_value); + uint8_t *d; + + bmsign = 0x80 | ((s[1] >> 1) & 0x40); /* binary mask & - */ + for(mstop = d = dscr; s >= start; d++, s--) { + *d = *s; + if(*d) mstop = d; + } + } + + /* Remove parts of the exponent, leave mantissa and explicit 1. */ + dscr[0] = 0x10 | (dscr[0] & 0x0f); + + /* Adjust exponent in a very unobvious way */ + expval -= 8 * ((mstop - dscr) + 1) - 4; + + /* This loop ensures DER conformance by forcing mantissa odd: 11.3.1 */ + mval = *mstop; + if(mval && !(mval & 1)) { + int shift_count = 1; + int ishift; + uint8_t *mptr; + + /* + * Figure out what needs to be done to make mantissa odd. + */ + if(!(mval & 0x0f)) /* Speed-up a little */ + shift_count = 4; + while(((mval >> shift_count) & 1) == 0) + shift_count++; + + ishift = 8 - shift_count; + accum = 0; + + /* Go over the buffer, shifting it shift_count bits right. */ + for(mptr = dscr; mptr <= mstop; mptr++) { + mval = *mptr; + *mptr = accum | (mval >> shift_count); + accum = mval << ishift; + } + + /* Adjust exponent appropriately. */ + expval += shift_count; + } + + if(expval < 0) { + if((expval >> 7) == -1) { + *ptr++ = bmsign | 0x00; + *ptr++ = expval; + } else if((expval >> 15) == -1) { + *ptr++ = bmsign | 0x01; + *ptr++ = expval >> 8; + *ptr++ = expval; + } else { + *ptr++ = bmsign | 0x02; + *ptr++ = expval >> 16; + *ptr++ = expval >> 8; + *ptr++ = expval; + } + } else if(expval <= 0x7f) { + *ptr++ = bmsign | 0x00; + *ptr++ = expval; + } else if(expval <= 0x7fff) { + *ptr++ = bmsign | 0x01; + *ptr++ = expval >> 8; + *ptr++ = expval; + } else { + assert(expval <= 0x7fffff); + *ptr++ = bmsign | 0x02; + *ptr++ = expval >> 16; + *ptr++ = expval >> 8; + *ptr++ = expval; + } + + buflen = (mstop - dscr) + 1; + memcpy(ptr, dscr, buflen); + ptr += buflen; + buflen = ptr - buf; + + ptr = (uint8_t *)MALLOC(buflen + 1); + if(!ptr) return -1; + + memcpy(ptr, buf, buflen); + buf[buflen] = 0; /* JIC */ + + if(st->buf) FREEMEM(st->buf); + st->buf = ptr; + st->size = buflen; + + return 0; +} + +int CC_ATTR_NO_SANITIZE("float-cast-overflow") +asn_double2float(double d, float *outcome) { + float f = d; + + *outcome = f; + + if(asn_isfinite(d) == asn_isfinite(f)) { + return 0; + } else { + return -1; + } +} diff --git a/e2sim/asn1c/REAL.h b/e2sim/asn1c/REAL.h new file mode 100644 index 0000000..2f8bf47 --- /dev/null +++ b/e2sim/asn1c/REAL.h @@ -0,0 +1,122 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_REAL_H +#define ASN_TYPE_REAL_H + +#include +#include + +#define _ISOC99_SOURCE /* For ilogb() and quiet NAN */ +#ifndef _BSD_SOURCE +#define _BSD_SOURCE /* To reintroduce finite(3) */ +#endif +#if defined(__alpha) +#include /* For INFINITY */ +#endif +#include + +#if !(defined(NAN) || defined(INFINITY)) +static volatile double real_zero CC_NOTUSED = 0.0; +#endif +#ifndef NAN +#define NAN (0.0/0.0) +#endif +#ifndef INFINITY +#define INFINITY (1.0/0.0) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum specialRealValue { + SRV__NOT_A_NUMBER, + SRV__MINUS_INFINITY, + SRV__PLUS_INFINITY +} specialRealValue_e; +extern struct specialRealValue_s { + char *string; + size_t length; + long dv; +} specialRealValue[3]; + +typedef ASN__PRIMITIVE_TYPE_t REAL_t; + +extern asn_TYPE_descriptor_t asn_DEF_REAL; +extern asn_TYPE_operation_t asn_OP_REAL; + +#define REAL_free ASN__PRIMITIVE_TYPE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f REAL_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f REAL_compare; + +#define REAL_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define REAL_decode_ber ber_decode_primitive +#define REAL_encode_der der_encode_primitive +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f REAL_decode_xer; +xer_type_encoder_f REAL_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f REAL_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f REAL_decode_oer; +oer_type_encoder_f REAL_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f REAL_decode_uper; +per_type_encoder_f REAL_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f REAL_decode_aper; +per_type_encoder_f REAL_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f REAL_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +ssize_t REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key); + +/* + * Convert between native double type and REAL representation (DER). + * RETURN VALUES: + * 0: Value converted successfully + * -1: An error occurred while converting the value: invalid format. + */ +int asn_REAL2double(const REAL_t *real_ptr, double *d); +int asn_double2REAL(REAL_t *real_ptr, double d); + +/* + * Downcast double to float while checking that no overflow occurs. + * This allows stricter control of the input data. + * RETURN VALUES: + * 0: The conversion was successful (perhaps with a loss of precision) + * -1: The conversion created overflow into infinities. + * The (outcome) is ALWAYS set to a value you'd expect from the + * standard silent float to double conversion behavior. + */ +int asn_double2float(double d, float *outcome); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_REAL_H */ diff --git a/e2sim/asn1c/REAL_aper.c b/e2sim/asn1c/REAL_aper.c new file mode 100644 index 0000000..9881275 --- /dev/null +++ b/e2sim/asn1c/REAL_aper.c @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +REAL_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) { + (void)constraints; /* No PER visible constraints */ + return OCTET_STRING_decode_aper(opt_codec_ctx, td, 0, sptr, pd); +} + +asn_enc_rval_t +REAL_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + (void)constraints; /* No PER visible constraints */ + return OCTET_STRING_encode_aper(td, 0, sptr, po); +} diff --git a/e2sim/asn1c/REAL_jer.c b/e2sim/asn1c/REAL_jer.c new file mode 100644 index 0000000..c524e4b --- /dev/null +++ b/e2sim/asn1c/REAL_jer.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +REAL_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const REAL_t *st = (const REAL_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + double d; + + (void)ilevel; + + if(!st || !st->buf || asn_REAL2double(st, &d)) + ASN__ENCODE_FAILED; + + er.encoded = REAL__dump(d, flags, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/REAL_print.c b/e2sim/asn1c/REAL_print.c new file mode 100644 index 0000000..01daa97 --- /dev/null +++ b/e2sim/asn1c/REAL_print.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +REAL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const REAL_t *st = (const REAL_t *)sptr; + ssize_t ret; + double d; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(!st || !st->buf) + ret = cb("", 8, app_key); + else if(asn_REAL2double(st, &d)) + ret = cb("", 7, app_key); + else + ret = REAL__dump(d, 0, cb, app_key); + + return (ret < 0) ? -1 : 0; +} diff --git a/e2sim/asn1c/REAL_rfill.c b/e2sim/asn1c/REAL_rfill.c new file mode 100644 index 0000000..733aafd --- /dev/null +++ b/e2sim/asn1c/REAL_rfill.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_random_fill_result_t +REAL_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}; + static const double values[] = { + 0, -0.0, -1, 1, -M_E, M_E, -3.14, 3.14, -M_PI, M_PI, -255, 255, + /* 2^51 */ + -2251799813685248.0, 2251799813685248.0, + /* 2^52 */ + -4503599627370496.0, 4503599627370496.0, + /* 2^100 */ + -1267650600228229401496703205376.0, 1267650600228229401496703205376.0, + -FLT_MIN, FLT_MIN, + -FLT_MAX, FLT_MAX, + -DBL_MIN, DBL_MIN, + -DBL_MAX, DBL_MAX, +#ifdef FLT_TRUE_MIN + -FLT_TRUE_MIN, FLT_TRUE_MIN, +#endif +#ifdef DBL_TRUE_MIN + -DBL_TRUE_MIN, DBL_TRUE_MIN, +#endif + INFINITY, -INFINITY, NAN}; + REAL_t *st; + double d; + + (void)constraints; + + if(max_length == 0) return result_skipped; + + d = values[asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1)]; + + if(*sptr) { + st = *sptr; + } else { + st = (REAL_t*)(*sptr = CALLOC(1, sizeof(REAL_t))); + if(!st) { + return result_failed; + } + } + + if(asn_double2REAL(st, d)) { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } + + result_ok.length = st->size; + return result_ok; +} diff --git a/e2sim/asn1c/REAL_uper.c b/e2sim/asn1c/REAL_uper.c new file mode 100644 index 0000000..d55da9f --- /dev/null +++ b/e2sim/asn1c/REAL_uper.c @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +REAL_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) { + (void)constraints; /* No PER visible constraints */ + return OCTET_STRING_decode_uper(opt_codec_ctx, td, 0, sptr, pd); +} + +asn_enc_rval_t +REAL_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + (void)constraints; /* No PER visible constraints */ + return OCTET_STRING_encode_uper(td, 0, sptr, po); +} diff --git a/e2sim/asn1c/REAL_xer.c b/e2sim/asn1c/REAL_xer.c new file mode 100644 index 0000000..8342ec2 --- /dev/null +++ b/e2sim/asn1c/REAL_xer.c @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +REAL_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 REAL_t *st = (const REAL_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + double d; + + (void)ilevel; + + if(!st || !st->buf || asn_REAL2double(st, &d)) + ASN__ENCODE_FAILED; + + er.encoded = REAL__dump(d, flags & XER_F_CANONICAL, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +/* + * Decode the chunk of XML text encoding REAL. + */ +static enum xer_pbd_rval +REAL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + REAL_t *st = (REAL_t *)sptr; + double value; + const char *xerdata = (const char *)chunk_buf; + char *endptr = 0; + char *b; + + (void)td; + + if(!chunk_size) return XPBD_BROKEN_ENCODING; + + /* + * Decode an XMLSpecialRealValue: , etc. + */ + if(xerdata[0] == 0x3c /* '<' */) { + size_t i; + for(i = 0; i < sizeof(specialRealValue) / sizeof(specialRealValue[0]); i++) { + struct specialRealValue_s *srv = &specialRealValue[i]; + double dv; + + if(srv->length != chunk_size + || memcmp(srv->string, chunk_buf, chunk_size)) + continue; + + /* + * It could've been done using + * (double)srv->dv / real_zero, + * but it summons fp exception on some platforms. + */ + switch(srv->dv) { + case -1: dv = - INFINITY; break; + case 0: dv = NAN; break; + case 1: dv = INFINITY; break; + default: return XPBD_SYSTEM_FAILURE; + } + + if(asn_double2REAL(st, dv)) + return XPBD_SYSTEM_FAILURE; + + return XPBD_BODY_CONSUMED; + } + ASN_DEBUG("Unknown XMLSpecialRealValue"); + return XPBD_BROKEN_ENCODING; + } + + /* + * Copy chunk into the nul-terminated string, and run strtod. + */ + b = (char *)MALLOC(chunk_size + 1); + if(!b) return XPBD_SYSTEM_FAILURE; + memcpy(b, chunk_buf, chunk_size); + b[chunk_size] = 0; /* nul-terminate */ + + value = strtod(b, &endptr); + FREEMEM(b); + if(endptr == b) return XPBD_BROKEN_ENCODING; + + if(asn_double2REAL(st, value)) + return XPBD_SYSTEM_FAILURE; + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +REAL_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(REAL_t), opt_mname, + buf_ptr, size, REAL__xer_body_decode); +} diff --git a/e2sim/asn1c/RIC-EventTriggerStyle-Item.c b/e2sim/asn1c/RIC-EventTriggerStyle-Item.c new file mode 100644 index 0000000..87bcc67 --- /dev/null +++ b/e2sim/asn1c/RIC-EventTriggerStyle-Item.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RIC-EventTriggerStyle-Item.h" + +asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerStyle_Type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Type, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ric-EventTriggerStyle-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerStyle_Name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Name, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ric-EventTriggerStyle-Name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ric-EventTriggerFormat-Type" + }, +}; +static const ber_tlv_tag_t asn_DEF_RIC_EventTriggerStyle_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RIC_EventTriggerStyle_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_Item_specs_1 = { + sizeof(struct RIC_EventTriggerStyle_Item), + offsetof(struct RIC_EventTriggerStyle_Item, _asn_ctx), + asn_MAP_RIC_EventTriggerStyle_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_Item = { + "RIC-EventTriggerStyle-Item", + "RIC-EventTriggerStyle-Item", + &asn_OP_SEQUENCE, + asn_DEF_RIC_EventTriggerStyle_Item_tags_1, + sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1) + /sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1[0]), /* 1 */ + asn_DEF_RIC_EventTriggerStyle_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1) + /sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RIC_EventTriggerStyle_Item_1, + 3, /* Elements count */ + &asn_SPC_RIC_EventTriggerStyle_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RIC-EventTriggerStyle-Item.h b/e2sim/asn1c/RIC-EventTriggerStyle-Item.h new file mode 100644 index 0000000..d0a0a51 --- /dev/null +++ b/e2sim/asn1c/RIC-EventTriggerStyle-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RIC_EventTriggerStyle_Item_H_ +#define _RIC_EventTriggerStyle_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "RIC-Style-Name.h" +#include "RIC-Format-Type.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-EventTriggerStyle-Item */ +typedef struct RIC_EventTriggerStyle_Item { + RIC_Style_Type_t ric_EventTriggerStyle_Type; + RIC_Style_Name_t ric_EventTriggerStyle_Name; + RIC_Format_Type_t ric_EventTriggerFormat_Type; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RIC_EventTriggerStyle_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_EventTriggerStyle_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RIC-Format-Type.c b/e2sim/asn1c/RIC-Format-Type.c new file mode 100644 index 0000000..82b3db9 --- /dev/null +++ b/e2sim/asn1c/RIC-Format-Type.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RIC-Format-Type.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RIC_Format_Type_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type = { + "RIC-Format-Type", + "RIC-Format-Type", + &asn_OP_NativeInteger, + asn_DEF_RIC_Format_Type_tags_1, + sizeof(asn_DEF_RIC_Format_Type_tags_1) + /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */ + asn_DEF_RIC_Format_Type_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_Format_Type_tags_1) + /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeInteger_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/RIC-Format-Type.h b/e2sim/asn1c/RIC-Format-Type.h new file mode 100644 index 0000000..3784f59 --- /dev/null +++ b/e2sim/asn1c/RIC-Format-Type.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RIC_Format_Type_H_ +#define _RIC_Format_Type_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-Format-Type */ +typedef long RIC_Format_Type_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type; +asn_struct_free_f RIC_Format_Type_free; +asn_struct_print_f RIC_Format_Type_print; +asn_constr_check_f RIC_Format_Type_constraint; +ber_type_decoder_f RIC_Format_Type_decode_ber; +der_type_encoder_f RIC_Format_Type_encode_der; +xer_type_decoder_f RIC_Format_Type_decode_xer; +xer_type_encoder_f RIC_Format_Type_encode_xer; +jer_type_encoder_f RIC_Format_Type_encode_jer; +per_type_decoder_f RIC_Format_Type_decode_uper; +per_type_encoder_f RIC_Format_Type_encode_uper; +per_type_decoder_f RIC_Format_Type_decode_aper; +per_type_encoder_f RIC_Format_Type_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_Format_Type_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RIC-ReportStyle-Item.c b/e2sim/asn1c/RIC-ReportStyle-Item.c new file mode 100644 index 0000000..71ca2a1 --- /dev/null +++ b/e2sim/asn1c/RIC-ReportStyle-Item.c @@ -0,0 +1,156 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RIC-ReportStyle-Item.h" + +asn_TYPE_member_t asn_MBR_RIC_ReportStyle_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportStyle_Type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Type, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ric-ReportStyle-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportStyle_Name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Name, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ric-ReportStyle-Name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ActionFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ric-ActionFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, measInfo_Action_List), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementInfo_Action_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measInfo-Action-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_IndicationHeaderFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ric-IndicationHeaderFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_IndicationMessageFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ric-IndicationMessageFormat-Type" + }, +}; +static const ber_tlv_tag_t asn_DEF_RIC_ReportStyle_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RIC_ReportStyle_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ActionFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* measInfo-Action-List */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ric-IndicationMessageFormat-Type */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_Item_specs_1 = { + sizeof(struct RIC_ReportStyle_Item), + offsetof(struct RIC_ReportStyle_Item, _asn_ctx), + asn_MAP_RIC_ReportStyle_Item_tag2el_1, + 6, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_Item = { + "RIC-ReportStyle-Item", + "RIC-ReportStyle-Item", + &asn_OP_SEQUENCE, + asn_DEF_RIC_ReportStyle_Item_tags_1, + sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1) + /sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1[0]), /* 1 */ + asn_DEF_RIC_ReportStyle_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1) + /sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RIC_ReportStyle_Item_1, + 6, /* Elements count */ + &asn_SPC_RIC_ReportStyle_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RIC-ReportStyle-Item.h b/e2sim/asn1c/RIC-ReportStyle-Item.h new file mode 100644 index 0000000..c2ab6c8 --- /dev/null +++ b/e2sim/asn1c/RIC-ReportStyle-Item.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RIC_ReportStyle_Item_H_ +#define _RIC_ReportStyle_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "RIC-Style-Name.h" +#include "RIC-Format-Type.h" +#include "MeasurementInfo-Action-List.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-ReportStyle-Item */ +typedef struct RIC_ReportStyle_Item { + RIC_Style_Type_t ric_ReportStyle_Type; + RIC_Style_Name_t ric_ReportStyle_Name; + RIC_Format_Type_t ric_ActionFormat_Type; + MeasurementInfo_Action_List_t measInfo_Action_List; + RIC_Format_Type_t ric_IndicationHeaderFormat_Type; + RIC_Format_Type_t ric_IndicationMessageFormat_Type; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RIC_ReportStyle_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RIC_ReportStyle_Item_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_ReportStyle_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RIC-Style-Name.c b/e2sim/asn1c/RIC-Style-Name.c new file mode 100644 index 0000000..c9fa59d --- /dev/null +++ b/e2sim/asn1c/RIC-Style-Name.c @@ -0,0 +1,116 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RIC-Style-Name.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_1[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +RIC_Style_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1UL && size <= 150UL) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_RIC_Style_Name_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_RIC_Style_Name_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using PrintableString, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_RIC_Style_Name_1_v2c, /* Value to PER code map */ + asn_PER_MAP_RIC_Style_Name_1_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RIC_Style_Name_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name = { + "RIC-Style-Name", + "RIC-Style-Name", + &asn_OP_PrintableString, + asn_DEF_RIC_Style_Name_tags_1, + sizeof(asn_DEF_RIC_Style_Name_tags_1) + /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */ + asn_DEF_RIC_Style_Name_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_Style_Name_tags_1) + /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RIC_Style_Name_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RIC_Style_Name_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/RIC-Style-Name.h b/e2sim/asn1c/RIC-Style-Name.h new file mode 100644 index 0000000..beeace8 --- /dev/null +++ b/e2sim/asn1c/RIC-Style-Name.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RIC_Style_Name_H_ +#define _RIC_Style_Name_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrintableString.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-Style-Name */ +typedef PrintableString_t RIC_Style_Name_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name; +asn_struct_free_f RIC_Style_Name_free; +asn_struct_print_f RIC_Style_Name_print; +asn_constr_check_f RIC_Style_Name_constraint; +ber_type_decoder_f RIC_Style_Name_decode_ber; +der_type_encoder_f RIC_Style_Name_encode_der; +xer_type_decoder_f RIC_Style_Name_decode_xer; +xer_type_encoder_f RIC_Style_Name_encode_xer; +jer_type_encoder_f RIC_Style_Name_encode_jer; +per_type_decoder_f RIC_Style_Name_decode_uper; +per_type_encoder_f RIC_Style_Name_encode_uper; +per_type_decoder_f RIC_Style_Name_decode_aper; +per_type_encoder_f RIC_Style_Name_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_Style_Name_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RIC-Style-Type.c b/e2sim/asn1c/RIC-Style-Type.c new file mode 100644 index 0000000..03996d0 --- /dev/null +++ b/e2sim/asn1c/RIC-Style-Type.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RIC-Style-Type.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RIC_Style_Type_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type = { + "RIC-Style-Type", + "RIC-Style-Type", + &asn_OP_NativeInteger, + asn_DEF_RIC_Style_Type_tags_1, + sizeof(asn_DEF_RIC_Style_Type_tags_1) + /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */ + asn_DEF_RIC_Style_Type_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_Style_Type_tags_1) + /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeInteger_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/RIC-Style-Type.h b/e2sim/asn1c/RIC-Style-Type.h new file mode 100644 index 0000000..9b71816 --- /dev/null +++ b/e2sim/asn1c/RIC-Style-Type.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RIC_Style_Type_H_ +#define _RIC_Style_Type_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-Style-Type */ +typedef long RIC_Style_Type_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type; +asn_struct_free_f RIC_Style_Type_free; +asn_struct_print_f RIC_Style_Type_print; +asn_constr_check_f RIC_Style_Type_constraint; +ber_type_decoder_f RIC_Style_Type_decode_ber; +der_type_encoder_f RIC_Style_Type_encode_der; +xer_type_decoder_f RIC_Style_Type_decode_xer; +xer_type_encoder_f RIC_Style_Type_encode_xer; +jer_type_encoder_f RIC_Style_Type_encode_jer; +per_type_decoder_f RIC_Style_Type_decode_uper; +per_type_encoder_f RIC_Style_Type_encode_uper; +per_type_decoder_f RIC_Style_Type_decode_aper; +per_type_encoder_f RIC_Style_Type_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_Style_Type_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICQueryFailure.c b/e2sim/asn1c/RICQueryFailure.c new file mode 100644 index 0000000..28e0582 --- /dev/null +++ b/e2sim/asn1c/RICQueryFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICQueryFailure.h" + +asn_TYPE_member_t asn_MBR_RICQueryFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICQueryFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P19, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICQueryFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICQueryFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICQueryFailure_specs_1 = { + sizeof(struct RICQueryFailure), + offsetof(struct RICQueryFailure, _asn_ctx), + asn_MAP_RICQueryFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICQueryFailure = { + "RICQueryFailure", + "RICQueryFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICQueryFailure_tags_1, + sizeof(asn_DEF_RICQueryFailure_tags_1) + /sizeof(asn_DEF_RICQueryFailure_tags_1[0]), /* 1 */ + asn_DEF_RICQueryFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICQueryFailure_tags_1) + /sizeof(asn_DEF_RICQueryFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICQueryFailure_1, + 1, /* Elements count */ + &asn_SPC_RICQueryFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICQueryFailure.h b/e2sim/asn1c/RICQueryFailure.h new file mode 100644 index 0000000..592ca37 --- /dev/null +++ b/e2sim/asn1c/RICQueryFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICQueryFailure_H_ +#define _RICQueryFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICQueryFailure */ +typedef struct RICQueryFailure { + ProtocolIE_Container_85P19_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICQueryFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICQueryFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICQueryFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICQueryFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICQueryFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICQueryRequest.c b/e2sim/asn1c/RICQueryRequest.c new file mode 100644 index 0000000..2a304b7 --- /dev/null +++ b/e2sim/asn1c/RICQueryRequest.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICQueryRequest.h" + +asn_TYPE_member_t asn_MBR_RICQueryRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICQueryRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P17, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICQueryRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICQueryRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICQueryRequest_specs_1 = { + sizeof(struct RICQueryRequest), + offsetof(struct RICQueryRequest, _asn_ctx), + asn_MAP_RICQueryRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICQueryRequest = { + "RICQueryRequest", + "RICQueryRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICQueryRequest_tags_1, + sizeof(asn_DEF_RICQueryRequest_tags_1) + /sizeof(asn_DEF_RICQueryRequest_tags_1[0]), /* 1 */ + asn_DEF_RICQueryRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICQueryRequest_tags_1) + /sizeof(asn_DEF_RICQueryRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICQueryRequest_1, + 1, /* Elements count */ + &asn_SPC_RICQueryRequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICQueryRequest.h b/e2sim/asn1c/RICQueryRequest.h new file mode 100644 index 0000000..3f15fd6 --- /dev/null +++ b/e2sim/asn1c/RICQueryRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICQueryRequest_H_ +#define _RICQueryRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICQueryRequest */ +typedef struct RICQueryRequest { + ProtocolIE_Container_85P17_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICQueryRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICQueryRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICQueryRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICQueryRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICQueryRequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICQueryResponse.c b/e2sim/asn1c/RICQueryResponse.c new file mode 100644 index 0000000..c5d9458 --- /dev/null +++ b/e2sim/asn1c/RICQueryResponse.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICQueryResponse.h" + +asn_TYPE_member_t asn_MBR_RICQueryResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICQueryResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P18, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICQueryResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICQueryResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICQueryResponse_specs_1 = { + sizeof(struct RICQueryResponse), + offsetof(struct RICQueryResponse, _asn_ctx), + asn_MAP_RICQueryResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICQueryResponse = { + "RICQueryResponse", + "RICQueryResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICQueryResponse_tags_1, + sizeof(asn_DEF_RICQueryResponse_tags_1) + /sizeof(asn_DEF_RICQueryResponse_tags_1[0]), /* 1 */ + asn_DEF_RICQueryResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICQueryResponse_tags_1) + /sizeof(asn_DEF_RICQueryResponse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICQueryResponse_1, + 1, /* Elements count */ + &asn_SPC_RICQueryResponse_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICQueryResponse.h b/e2sim/asn1c/RICQueryResponse.h new file mode 100644 index 0000000..8f09912 --- /dev/null +++ b/e2sim/asn1c/RICQueryResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICQueryResponse_H_ +#define _RICQueryResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICQueryResponse */ +typedef struct RICQueryResponse { + ProtocolIE_Container_85P18_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICQueryResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICQueryResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICQueryResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICQueryResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICQueryResponse_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-AddedForModification-Item.c b/e2sim/asn1c/RICaction-AddedForModification-Item.c new file mode 100644 index 0000000..5336810 --- /dev/null +++ b/e2sim/asn1c/RICaction-AddedForModification-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-AddedForModification-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_AddedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_AddedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_AddedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_AddedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_AddedForModification_Item_specs_1 = { + sizeof(struct RICaction_AddedForModification_Item), + offsetof(struct RICaction_AddedForModification_Item, _asn_ctx), + asn_MAP_RICaction_AddedForModification_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_AddedForModification_Item = { + "RICaction-AddedForModification-Item", + "RICaction-AddedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_AddedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_AddedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_AddedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_AddedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_AddedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_AddedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_AddedForModification_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_AddedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-AddedForModification-Item.h b/e2sim/asn1c/RICaction-AddedForModification-Item.h new file mode 100644 index 0000000..ade9c58 --- /dev/null +++ b/e2sim/asn1c/RICaction-AddedForModification-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_AddedForModification_Item_H_ +#define _RICaction_AddedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-AddedForModification-Item */ +typedef struct RICaction_AddedForModification_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_AddedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_AddedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_AddedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_AddedForModification_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_AddedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-Admitted-Item.c b/e2sim/asn1c/RICaction-Admitted-Item.c new file mode 100644 index 0000000..99a88a6 --- /dev/null +++ b/e2sim/asn1c/RICaction-Admitted-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-Admitted-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1 = { + sizeof(struct RICaction_Admitted_Item), + offsetof(struct RICaction_Admitted_Item, _asn_ctx), + asn_MAP_RICaction_Admitted_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item = { + "RICaction-Admitted-Item", + "RICaction-Admitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_Item_tags_1, + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_Admitted_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_Admitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-Admitted-Item.h b/e2sim/asn1c/RICaction-Admitted-Item.h new file mode 100644 index 0000000..0ecb70a --- /dev/null +++ b/e2sim/asn1c/RICaction-Admitted-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_Admitted_Item_H_ +#define _RICaction_Admitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-Admitted-Item */ +typedef struct RICaction_Admitted_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-Admitted-List.c b/e2sim/asn1c/RICaction-Admitted-List.c new file mode 100644 index 0000000..52a72ac --- /dev/null +++ b/e2sim/asn1c/RICaction-Admitted-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-Admitted-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICaction_Admitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICaction_Admitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICaction_Admitted_List_specs_1 = { + sizeof(struct RICaction_Admitted_List), + offsetof(struct RICaction_Admitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List = { + "RICaction-Admitted-List", + "RICaction-Admitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_Admitted_List_tags_1, + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICaction_Admitted_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICaction_Admitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_Admitted_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-Admitted-List.h b/e2sim/asn1c/RICaction-Admitted-List.h new file mode 100644 index 0000000..ff3f161 --- /dev/null +++ b/e2sim/asn1c/RICaction-Admitted-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_Admitted_List_H_ +#define _RICaction_Admitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICaction-Admitted-List */ +typedef struct RICaction_Admitted_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List; +extern asn_SET_OF_specifics_t asn_SPC_RICaction_Admitted_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICaction_Admitted_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-ConfirmedForModification-Item.c b/e2sim/asn1c/RICaction-ConfirmedForModification-Item.c new file mode 100644 index 0000000..e662439 --- /dev/null +++ b/e2sim/asn1c/RICaction-ConfirmedForModification-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-ConfirmedForModification-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_ConfirmedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ConfirmedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ConfirmedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ConfirmedForModification_Item_specs_1 = { + sizeof(struct RICaction_ConfirmedForModification_Item), + offsetof(struct RICaction_ConfirmedForModification_Item, _asn_ctx), + asn_MAP_RICaction_ConfirmedForModification_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ConfirmedForModification_Item = { + "RICaction-ConfirmedForModification-Item", + "RICaction-ConfirmedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ConfirmedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_ConfirmedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ConfirmedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ConfirmedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ConfirmedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ConfirmedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ConfirmedForModification_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_ConfirmedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-ConfirmedForModification-Item.h b/e2sim/asn1c/RICaction-ConfirmedForModification-Item.h new file mode 100644 index 0000000..00b2f56 --- /dev/null +++ b/e2sim/asn1c/RICaction-ConfirmedForModification-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_ConfirmedForModification_Item_H_ +#define _RICaction_ConfirmedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-ConfirmedForModification-Item */ +typedef struct RICaction_ConfirmedForModification_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ConfirmedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ConfirmedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ConfirmedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ConfirmedForModification_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ConfirmedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.c b/e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.c new file mode 100644 index 0000000..4220b9f --- /dev/null +++ b/e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-ConfirmedForRemoval-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_ConfirmedForRemoval_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ConfirmedForRemoval_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ConfirmedForRemoval_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ConfirmedForRemoval_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ConfirmedForRemoval_Item_specs_1 = { + sizeof(struct RICaction_ConfirmedForRemoval_Item), + offsetof(struct RICaction_ConfirmedForRemoval_Item, _asn_ctx), + asn_MAP_RICaction_ConfirmedForRemoval_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ConfirmedForRemoval_Item = { + "RICaction-ConfirmedForRemoval-Item", + "RICaction-ConfirmedForRemoval-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ConfirmedForRemoval_Item_tags_1, + sizeof(asn_DEF_RICaction_ConfirmedForRemoval_Item_tags_1) + /sizeof(asn_DEF_RICaction_ConfirmedForRemoval_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ConfirmedForRemoval_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ConfirmedForRemoval_Item_tags_1) + /sizeof(asn_DEF_RICaction_ConfirmedForRemoval_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ConfirmedForRemoval_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_ConfirmedForRemoval_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.h b/e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.h new file mode 100644 index 0000000..1910b2e --- /dev/null +++ b/e2sim/asn1c/RICaction-ConfirmedForRemoval-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_ConfirmedForRemoval_Item_H_ +#define _RICaction_ConfirmedForRemoval_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-ConfirmedForRemoval-Item */ +typedef struct RICaction_ConfirmedForRemoval_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ConfirmedForRemoval_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ConfirmedForRemoval_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ConfirmedForRemoval_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ConfirmedForRemoval_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ConfirmedForRemoval_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.c b/e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.c new file mode 100644 index 0000000..f445b84 --- /dev/null +++ b/e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-FailedToBeAddedForModification-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_FailedToBeAddedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeAddedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeAddedForModification_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_FailedToBeAddedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_FailedToBeAddedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeAddedForModification_Item_specs_1 = { + sizeof(struct RICaction_FailedToBeAddedForModification_Item), + offsetof(struct RICaction_FailedToBeAddedForModification_Item, _asn_ctx), + asn_MAP_RICaction_FailedToBeAddedForModification_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeAddedForModification_Item = { + "RICaction-FailedToBeAddedForModification-Item", + "RICaction-FailedToBeAddedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_FailedToBeAddedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_FailedToBeAddedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_FailedToBeAddedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_FailedToBeAddedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_FailedToBeAddedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_FailedToBeAddedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_FailedToBeAddedForModification_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_FailedToBeAddedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.h b/e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.h new file mode 100644 index 0000000..96113a2 --- /dev/null +++ b/e2sim/asn1c/RICaction-FailedToBeAddedForModification-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_FailedToBeAddedForModification_Item_H_ +#define _RICaction_FailedToBeAddedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-FailedToBeAddedForModification-Item */ +typedef struct RICaction_FailedToBeAddedForModification_Item { + RICactionID_t ricActionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_FailedToBeAddedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeAddedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeAddedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_FailedToBeAddedForModification_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_FailedToBeAddedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.c b/e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.c new file mode 100644 index 0000000..0018f1b --- /dev/null +++ b/e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-FailedToBeModifiedForModification-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_FailedToBeModifiedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeModifiedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeModifiedForModification_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_FailedToBeModifiedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_FailedToBeModifiedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeModifiedForModification_Item_specs_1 = { + sizeof(struct RICaction_FailedToBeModifiedForModification_Item), + offsetof(struct RICaction_FailedToBeModifiedForModification_Item, _asn_ctx), + asn_MAP_RICaction_FailedToBeModifiedForModification_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeModifiedForModification_Item = { + "RICaction-FailedToBeModifiedForModification-Item", + "RICaction-FailedToBeModifiedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_FailedToBeModifiedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_FailedToBeModifiedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_FailedToBeModifiedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_FailedToBeModifiedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_FailedToBeModifiedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_FailedToBeModifiedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_FailedToBeModifiedForModification_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_FailedToBeModifiedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.h b/e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.h new file mode 100644 index 0000000..bdc54c6 --- /dev/null +++ b/e2sim/asn1c/RICaction-FailedToBeModifiedForModification-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_FailedToBeModifiedForModification_Item_H_ +#define _RICaction_FailedToBeModifiedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-FailedToBeModifiedForModification-Item */ +typedef struct RICaction_FailedToBeModifiedForModification_Item { + RICactionID_t ricActionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_FailedToBeModifiedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeModifiedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeModifiedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_FailedToBeModifiedForModification_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_FailedToBeModifiedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.c b/e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.c new file mode 100644 index 0000000..a861314 --- /dev/null +++ b/e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-FailedToBeRemovedForModification-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_FailedToBeRemovedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeRemovedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_FailedToBeRemovedForModification_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_FailedToBeRemovedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_FailedToBeRemovedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeRemovedForModification_Item_specs_1 = { + sizeof(struct RICaction_FailedToBeRemovedForModification_Item), + offsetof(struct RICaction_FailedToBeRemovedForModification_Item, _asn_ctx), + asn_MAP_RICaction_FailedToBeRemovedForModification_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeRemovedForModification_Item = { + "RICaction-FailedToBeRemovedForModification-Item", + "RICaction-FailedToBeRemovedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_FailedToBeRemovedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_FailedToBeRemovedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_FailedToBeRemovedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_FailedToBeRemovedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_FailedToBeRemovedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_FailedToBeRemovedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_FailedToBeRemovedForModification_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_FailedToBeRemovedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.h b/e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.h new file mode 100644 index 0000000..ea92759 --- /dev/null +++ b/e2sim/asn1c/RICaction-FailedToBeRemovedForModification-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_FailedToBeRemovedForModification_Item_H_ +#define _RICaction_FailedToBeRemovedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-FailedToBeRemovedForModification-Item */ +typedef struct RICaction_FailedToBeRemovedForModification_Item { + RICactionID_t ricActionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_FailedToBeRemovedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_FailedToBeRemovedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_FailedToBeRemovedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_FailedToBeRemovedForModification_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_FailedToBeRemovedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-ModifiedForModification-Item.c b/e2sim/asn1c/RICaction-ModifiedForModification-Item.c new file mode 100644 index 0000000..b459207 --- /dev/null +++ b/e2sim/asn1c/RICaction-ModifiedForModification-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-ModifiedForModification-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_ModifiedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ModifiedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ModifiedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ModifiedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ModifiedForModification_Item_specs_1 = { + sizeof(struct RICaction_ModifiedForModification_Item), + offsetof(struct RICaction_ModifiedForModification_Item, _asn_ctx), + asn_MAP_RICaction_ModifiedForModification_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ModifiedForModification_Item = { + "RICaction-ModifiedForModification-Item", + "RICaction-ModifiedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ModifiedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_ModifiedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ModifiedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ModifiedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ModifiedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ModifiedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ModifiedForModification_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_ModifiedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-ModifiedForModification-Item.h b/e2sim/asn1c/RICaction-ModifiedForModification-Item.h new file mode 100644 index 0000000..7bae657 --- /dev/null +++ b/e2sim/asn1c/RICaction-ModifiedForModification-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_ModifiedForModification_Item_H_ +#define _RICaction_ModifiedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-ModifiedForModification-Item */ +typedef struct RICaction_ModifiedForModification_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ModifiedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ModifiedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ModifiedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ModifiedForModification_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ModifiedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-NotAdmitted-Item.c b/e2sim/asn1c/RICaction-NotAdmitted-Item.c new file mode 100644 index 0000000..d30c2d5 --- /dev/null +++ b/e2sim/asn1c/RICaction-NotAdmitted-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-NotAdmitted-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_Item_specs_1 = { + sizeof(struct RICaction_NotAdmitted_Item), + offsetof(struct RICaction_NotAdmitted_Item, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item = { + "RICaction-NotAdmitted-Item", + "RICaction-NotAdmitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_Item_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_NotAdmitted_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-NotAdmitted-Item.h b/e2sim/asn1c/RICaction-NotAdmitted-Item.h new file mode 100644 index 0000000..c90c186 --- /dev/null +++ b/e2sim/asn1c/RICaction-NotAdmitted-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_NotAdmitted_Item_H_ +#define _RICaction_NotAdmitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-NotAdmitted-Item */ +typedef struct RICaction_NotAdmitted_Item { + RICactionID_t ricActionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-NotAdmitted-List.c b/e2sim/asn1c/RICaction-NotAdmitted-List.c new file mode 100644 index 0000000..0584b77 --- /dev/null +++ b/e2sim/asn1c/RICaction-NotAdmitted-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-NotAdmitted-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICaction_NotAdmitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICaction_NotAdmitted_List_specs_1 = { + sizeof(struct RICaction_NotAdmitted_List), + offsetof(struct RICaction_NotAdmitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List = { + "RICaction-NotAdmitted-List", + "RICaction-NotAdmitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_NotAdmitted_List_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICaction_NotAdmitted_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICaction_NotAdmitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_NotAdmitted_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-NotAdmitted-List.h b/e2sim/asn1c/RICaction-NotAdmitted-List.h new file mode 100644 index 0000000..d1d47d2 --- /dev/null +++ b/e2sim/asn1c/RICaction-NotAdmitted-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_NotAdmitted_List_H_ +#define _RICaction_NotAdmitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICaction-NotAdmitted-List */ +typedef struct RICaction_NotAdmitted_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List; +extern asn_SET_OF_specifics_t asn_SPC_RICaction_NotAdmitted_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICaction_NotAdmitted_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-RefusedToBeModified-Item.c b/e2sim/asn1c/RICaction-RefusedToBeModified-Item.c new file mode 100644 index 0000000..2304e76 --- /dev/null +++ b/e2sim/asn1c/RICaction-RefusedToBeModified-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-RefusedToBeModified-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_RefusedToBeModified_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeModified_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeModified_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RefusedToBeModified_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RefusedToBeModified_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RefusedToBeModified_Item_specs_1 = { + sizeof(struct RICaction_RefusedToBeModified_Item), + offsetof(struct RICaction_RefusedToBeModified_Item, _asn_ctx), + asn_MAP_RICaction_RefusedToBeModified_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RefusedToBeModified_Item = { + "RICaction-RefusedToBeModified-Item", + "RICaction-RefusedToBeModified-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RefusedToBeModified_Item_tags_1, + sizeof(asn_DEF_RICaction_RefusedToBeModified_Item_tags_1) + /sizeof(asn_DEF_RICaction_RefusedToBeModified_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_RefusedToBeModified_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_RefusedToBeModified_Item_tags_1) + /sizeof(asn_DEF_RICaction_RefusedToBeModified_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RefusedToBeModified_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_RefusedToBeModified_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-RefusedToBeModified-Item.h b/e2sim/asn1c/RICaction-RefusedToBeModified-Item.h new file mode 100644 index 0000000..7e68418 --- /dev/null +++ b/e2sim/asn1c/RICaction-RefusedToBeModified-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_RefusedToBeModified_Item_H_ +#define _RICaction_RefusedToBeModified_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-RefusedToBeModified-Item */ +typedef struct RICaction_RefusedToBeModified_Item { + RICactionID_t ricActionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RefusedToBeModified_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RefusedToBeModified_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RefusedToBeModified_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_RefusedToBeModified_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_RefusedToBeModified_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.c b/e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.c new file mode 100644 index 0000000..3394780 --- /dev/null +++ b/e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-RefusedToBeRemoved-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_RefusedToBeRemoved_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeRemoved_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RefusedToBeRemoved_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RefusedToBeRemoved_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RefusedToBeRemoved_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RefusedToBeRemoved_Item_specs_1 = { + sizeof(struct RICaction_RefusedToBeRemoved_Item), + offsetof(struct RICaction_RefusedToBeRemoved_Item, _asn_ctx), + asn_MAP_RICaction_RefusedToBeRemoved_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RefusedToBeRemoved_Item = { + "RICaction-RefusedToBeRemoved-Item", + "RICaction-RefusedToBeRemoved-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RefusedToBeRemoved_Item_tags_1, + sizeof(asn_DEF_RICaction_RefusedToBeRemoved_Item_tags_1) + /sizeof(asn_DEF_RICaction_RefusedToBeRemoved_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_RefusedToBeRemoved_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_RefusedToBeRemoved_Item_tags_1) + /sizeof(asn_DEF_RICaction_RefusedToBeRemoved_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RefusedToBeRemoved_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_RefusedToBeRemoved_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.h b/e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.h new file mode 100644 index 0000000..c04d89f --- /dev/null +++ b/e2sim/asn1c/RICaction-RefusedToBeRemoved-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_RefusedToBeRemoved_Item_H_ +#define _RICaction_RefusedToBeRemoved_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-RefusedToBeRemoved-Item */ +typedef struct RICaction_RefusedToBeRemoved_Item { + RICactionID_t ricActionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RefusedToBeRemoved_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RefusedToBeRemoved_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RefusedToBeRemoved_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_RefusedToBeRemoved_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_RefusedToBeRemoved_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-RemovedForModification-Item.c b/e2sim/asn1c/RICaction-RemovedForModification-Item.c new file mode 100644 index 0000000..55fa3e6 --- /dev/null +++ b/e2sim/asn1c/RICaction-RemovedForModification-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-RemovedForModification-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_RemovedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RemovedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RemovedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RemovedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RemovedForModification_Item_specs_1 = { + sizeof(struct RICaction_RemovedForModification_Item), + offsetof(struct RICaction_RemovedForModification_Item, _asn_ctx), + asn_MAP_RICaction_RemovedForModification_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RemovedForModification_Item = { + "RICaction-RemovedForModification-Item", + "RICaction-RemovedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RemovedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_RemovedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_RemovedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_RemovedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_RemovedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_RemovedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RemovedForModification_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_RemovedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-RemovedForModification-Item.h b/e2sim/asn1c/RICaction-RemovedForModification-Item.h new file mode 100644 index 0000000..e34788f --- /dev/null +++ b/e2sim/asn1c/RICaction-RemovedForModification-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_RemovedForModification_Item_H_ +#define _RICaction_RemovedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-RemovedForModification-Item */ +typedef struct RICaction_RemovedForModification_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RemovedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RemovedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RemovedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_RemovedForModification_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_RemovedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-RequiredToBeModified-Item.c b/e2sim/asn1c/RICaction-RequiredToBeModified-Item.c new file mode 100644 index 0000000..7ada05a --- /dev/null +++ b/e2sim/asn1c/RICaction-RequiredToBeModified-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-RequiredToBeModified-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_RequiredToBeModified_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeModified_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeModified_Item, ricTimeToWait), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICtimeToWait, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricTimeToWait" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RequiredToBeModified_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RequiredToBeModified_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricTimeToWait */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RequiredToBeModified_Item_specs_1 = { + sizeof(struct RICaction_RequiredToBeModified_Item), + offsetof(struct RICaction_RequiredToBeModified_Item, _asn_ctx), + asn_MAP_RICaction_RequiredToBeModified_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RequiredToBeModified_Item = { + "RICaction-RequiredToBeModified-Item", + "RICaction-RequiredToBeModified-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RequiredToBeModified_Item_tags_1, + sizeof(asn_DEF_RICaction_RequiredToBeModified_Item_tags_1) + /sizeof(asn_DEF_RICaction_RequiredToBeModified_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_RequiredToBeModified_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_RequiredToBeModified_Item_tags_1) + /sizeof(asn_DEF_RICaction_RequiredToBeModified_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RequiredToBeModified_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_RequiredToBeModified_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-RequiredToBeModified-Item.h b/e2sim/asn1c/RICaction-RequiredToBeModified-Item.h new file mode 100644 index 0000000..014784c --- /dev/null +++ b/e2sim/asn1c/RICaction-RequiredToBeModified-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_RequiredToBeModified_Item_H_ +#define _RICaction_RequiredToBeModified_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICtimeToWait.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-RequiredToBeModified-Item */ +typedef struct RICaction_RequiredToBeModified_Item { + RICactionID_t ricActionID; + RICtimeToWait_t ricTimeToWait; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RequiredToBeModified_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RequiredToBeModified_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RequiredToBeModified_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_RequiredToBeModified_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_RequiredToBeModified_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.c b/e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.c new file mode 100644 index 0000000..4a57329 --- /dev/null +++ b/e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-RequiredToBeRemoved-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_RequiredToBeRemoved_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeRemoved_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_RequiredToBeRemoved_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_RequiredToBeRemoved_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_RequiredToBeRemoved_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_RequiredToBeRemoved_Item_specs_1 = { + sizeof(struct RICaction_RequiredToBeRemoved_Item), + offsetof(struct RICaction_RequiredToBeRemoved_Item, _asn_ctx), + asn_MAP_RICaction_RequiredToBeRemoved_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_RequiredToBeRemoved_Item = { + "RICaction-RequiredToBeRemoved-Item", + "RICaction-RequiredToBeRemoved-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_RequiredToBeRemoved_Item_tags_1, + sizeof(asn_DEF_RICaction_RequiredToBeRemoved_Item_tags_1) + /sizeof(asn_DEF_RICaction_RequiredToBeRemoved_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_RequiredToBeRemoved_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_RequiredToBeRemoved_Item_tags_1) + /sizeof(asn_DEF_RICaction_RequiredToBeRemoved_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_RequiredToBeRemoved_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_RequiredToBeRemoved_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.h b/e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.h new file mode 100644 index 0000000..052c505 --- /dev/null +++ b/e2sim/asn1c/RICaction-RequiredToBeRemoved-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_RequiredToBeRemoved_Item_H_ +#define _RICaction_RequiredToBeRemoved_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-RequiredToBeRemoved-Item */ +typedef struct RICaction_RequiredToBeRemoved_Item { + RICactionID_t ricActionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_RequiredToBeRemoved_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_RequiredToBeRemoved_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_RequiredToBeRemoved_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_RequiredToBeRemoved_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_RequiredToBeRemoved_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-ToBeAddedForModification-Item.c b/e2sim/asn1c/RICaction-ToBeAddedForModification-Item.c new file mode 100644 index 0000000..a4aa4e5 --- /dev/null +++ b/e2sim/asn1c/RICaction-ToBeAddedForModification-Item.c @@ -0,0 +1,141 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-ToBeAddedForModification-Item.h" + +#include "RICsubsequentAction.h" +asn_TYPE_member_t asn_MBR_RICaction_ToBeAddedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeAddedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeAddedForModification_Item, ricActionType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeAddedForModification_Item, ricActionDefinition), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeAddedForModification_Item, ricActionExecutionOrder), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionExecutionOrder, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionExecutionOrder" + }, + { ATF_POINTER, 1, offsetof(struct RICaction_ToBeAddedForModification_Item, ricSubsequentAction), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentAction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricSubsequentAction" + }, +}; +static const int asn_MAP_RICaction_ToBeAddedForModification_Item_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeAddedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeAddedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ricActionExecutionOrder */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ricSubsequentAction */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeAddedForModification_Item_specs_1 = { + sizeof(struct RICaction_ToBeAddedForModification_Item), + offsetof(struct RICaction_ToBeAddedForModification_Item, _asn_ctx), + asn_MAP_RICaction_ToBeAddedForModification_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_RICaction_ToBeAddedForModification_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeAddedForModification_Item = { + "RICaction-ToBeAddedForModification-Item", + "RICaction-ToBeAddedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeAddedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_ToBeAddedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeAddedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeAddedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeAddedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeAddedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeAddedForModification_Item_1, + 5, /* Elements count */ + &asn_SPC_RICaction_ToBeAddedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-ToBeAddedForModification-Item.h b/e2sim/asn1c/RICaction-ToBeAddedForModification-Item.h new file mode 100644 index 0000000..3b38a62 --- /dev/null +++ b/e2sim/asn1c/RICaction-ToBeAddedForModification-Item.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_ToBeAddedForModification_Item_H_ +#define _RICaction_ToBeAddedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICactionType.h" +#include "RICactionDefinition.h" +#include "RICactionExecutionOrder.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubsequentAction; + +/* RICaction-ToBeAddedForModification-Item */ +typedef struct RICaction_ToBeAddedForModification_Item { + RICactionID_t ricActionID; + RICactionType_t ricActionType; + RICactionDefinition_t ricActionDefinition; + RICactionExecutionOrder_t ricActionExecutionOrder; + struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeAddedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeAddedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeAddedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeAddedForModification_Item_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ToBeAddedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.c b/e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.c new file mode 100644 index 0000000..c2d945e --- /dev/null +++ b/e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.c @@ -0,0 +1,123 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-ToBeModifiedForModification-Item.h" + +#include "RICsubsequentAction.h" +asn_TYPE_member_t asn_MBR_RICaction_ToBeModifiedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeModifiedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_POINTER, 3, offsetof(struct RICaction_ToBeModifiedForModification_Item, ricActionDefinition), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionDefinition" + }, + { ATF_POINTER, 2, offsetof(struct RICaction_ToBeModifiedForModification_Item, ricActionExecutionOrder), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionExecutionOrder, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionExecutionOrder" + }, + { ATF_POINTER, 1, offsetof(struct RICaction_ToBeModifiedForModification_Item, ricSubsequentAction), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentAction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricSubsequentAction" + }, +}; +static const int asn_MAP_RICaction_ToBeModifiedForModification_Item_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeModifiedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeModifiedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionExecutionOrder */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ricSubsequentAction */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeModifiedForModification_Item_specs_1 = { + sizeof(struct RICaction_ToBeModifiedForModification_Item), + offsetof(struct RICaction_ToBeModifiedForModification_Item, _asn_ctx), + asn_MAP_RICaction_ToBeModifiedForModification_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_RICaction_ToBeModifiedForModification_Item_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeModifiedForModification_Item = { + "RICaction-ToBeModifiedForModification-Item", + "RICaction-ToBeModifiedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeModifiedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_ToBeModifiedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeModifiedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeModifiedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeModifiedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeModifiedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeModifiedForModification_Item_1, + 4, /* Elements count */ + &asn_SPC_RICaction_ToBeModifiedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.h b/e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.h new file mode 100644 index 0000000..0a9f4ca --- /dev/null +++ b/e2sim/asn1c/RICaction-ToBeModifiedForModification-Item.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_ToBeModifiedForModification_Item_H_ +#define _RICaction_ToBeModifiedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICactionDefinition.h" +#include "RICactionExecutionOrder.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubsequentAction; + +/* RICaction-ToBeModifiedForModification-Item */ +typedef struct RICaction_ToBeModifiedForModification_Item { + RICactionID_t ricActionID; + RICactionDefinition_t *ricActionDefinition; /* OPTIONAL */ + RICactionExecutionOrder_t *ricActionExecutionOrder; /* OPTIONAL */ + struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeModifiedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeModifiedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeModifiedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeModifiedForModification_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ToBeModifiedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.c b/e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.c new file mode 100644 index 0000000..8cdae66 --- /dev/null +++ b/e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-ToBeRemovedForModification-Item.h" + +asn_TYPE_member_t asn_MBR_RICaction_ToBeRemovedForModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeRemovedForModification_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeRemovedForModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeRemovedForModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeRemovedForModification_Item_specs_1 = { + sizeof(struct RICaction_ToBeRemovedForModification_Item), + offsetof(struct RICaction_ToBeRemovedForModification_Item, _asn_ctx), + asn_MAP_RICaction_ToBeRemovedForModification_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeRemovedForModification_Item = { + "RICaction-ToBeRemovedForModification-Item", + "RICaction-ToBeRemovedForModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeRemovedForModification_Item_tags_1, + sizeof(asn_DEF_RICaction_ToBeRemovedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeRemovedForModification_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeRemovedForModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeRemovedForModification_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeRemovedForModification_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeRemovedForModification_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_ToBeRemovedForModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.h b/e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.h new file mode 100644 index 0000000..e73a183 --- /dev/null +++ b/e2sim/asn1c/RICaction-ToBeRemovedForModification-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_ToBeRemovedForModification_Item_H_ +#define _RICaction_ToBeRemovedForModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-ToBeRemovedForModification-Item */ +typedef struct RICaction_ToBeRemovedForModification_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeRemovedForModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeRemovedForModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeRemovedForModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeRemovedForModification_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ToBeRemovedForModification_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICaction-ToBeSetup-Item.c b/e2sim/asn1c/RICaction-ToBeSetup-Item.c new file mode 100644 index 0000000..c2ac496 --- /dev/null +++ b/e2sim/asn1c/RICaction-ToBeSetup-Item.c @@ -0,0 +1,141 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICaction-ToBeSetup-Item.h" + +#include "RICsubsequentAction.h" +asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionType" + }, + { ATF_POINTER, 3, offsetof(struct RICaction_ToBeSetup_Item, ricActionDefinition), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionDefinition" + }, + { ATF_POINTER, 2, offsetof(struct RICaction_ToBeSetup_Item, ricSubsequentAction), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentAction, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricSubsequentAction" + }, + { ATF_POINTER, 1, offsetof(struct RICaction_ToBeSetup_Item, ricActionExecutionOrder), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionExecutionOrder, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricActionExecutionOrder" + }, +}; +static const int asn_MAP_RICaction_ToBeSetup_Item_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ricSubsequentAction */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ricActionExecutionOrder */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_Item_specs_1 = { + sizeof(struct RICaction_ToBeSetup_Item), + offsetof(struct RICaction_ToBeSetup_Item, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_RICaction_ToBeSetup_Item_oms_1, /* Optional members */ + 2, 1, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item = { + "RICaction-ToBeSetup-Item", + "RICaction-ToBeSetup-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_Item_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICaction_ToBeSetup_Item_1, + 5, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICaction-ToBeSetup-Item.h b/e2sim/asn1c/RICaction-ToBeSetup-Item.h new file mode 100644 index 0000000..8e55f5a --- /dev/null +++ b/e2sim/asn1c/RICaction-ToBeSetup-Item.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICaction_ToBeSetup_Item_H_ +#define _RICaction_ToBeSetup_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICactionType.h" +#include "RICactionDefinition.h" +#include "RICactionExecutionOrder.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubsequentAction; + +/* RICaction-ToBeSetup-Item */ +typedef struct RICaction_ToBeSetup_Item { + RICactionID_t ricActionID; + RICactionType_t ricActionType; + RICactionDefinition_t *ricActionDefinition; /* OPTIONAL */ + struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + RICactionExecutionOrder_t *ricActionExecutionOrder; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_Item_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ToBeSetup_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactionDefinition.c b/e2sim/asn1c/RICactionDefinition.c new file mode 100644 index 0000000..1174a64 --- /dev/null +++ b/e2sim/asn1c/RICactionDefinition.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICactionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionDefinition = { + "RICactionDefinition", + "RICactionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICactionDefinition_tags_1, + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICactionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactionDefinition.h b/e2sim/asn1c/RICactionDefinition.h new file mode 100644 index 0000000..a051539 --- /dev/null +++ b/e2sim/asn1c/RICactionDefinition.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactionDefinition_H_ +#define _RICactionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionDefinition */ +typedef OCTET_STRING_t RICactionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactionDefinition; +asn_struct_free_f RICactionDefinition_free; +asn_struct_print_f RICactionDefinition_print; +asn_constr_check_f RICactionDefinition_constraint; +ber_type_decoder_f RICactionDefinition_decode_ber; +der_type_encoder_f RICactionDefinition_encode_der; +xer_type_decoder_f RICactionDefinition_decode_xer; +xer_type_encoder_f RICactionDefinition_encode_xer; +jer_type_encoder_f RICactionDefinition_encode_jer; +per_type_decoder_f RICactionDefinition_decode_uper; +per_type_encoder_f RICactionDefinition_encode_uper; +per_type_decoder_f RICactionDefinition_decode_aper; +per_type_encoder_f RICactionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionDefinition_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactionExecutionOrder.c b/e2sim/asn1c/RICactionExecutionOrder.c new file mode 100644 index 0000000..9d14496 --- /dev/null +++ b/e2sim/asn1c/RICactionExecutionOrder.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactionExecutionOrder.h" + +int +RICactionExecutionOrder_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactionExecutionOrder_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 0, 255 } /* (0..255,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RICactionExecutionOrder_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionExecutionOrder = { + "RICactionExecutionOrder", + "RICactionExecutionOrder", + &asn_OP_NativeInteger, + asn_DEF_RICactionExecutionOrder_tags_1, + sizeof(asn_DEF_RICactionExecutionOrder_tags_1) + /sizeof(asn_DEF_RICactionExecutionOrder_tags_1[0]), /* 1 */ + asn_DEF_RICactionExecutionOrder_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionExecutionOrder_tags_1) + /sizeof(asn_DEF_RICactionExecutionOrder_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactionExecutionOrder_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RICactionExecutionOrder_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/RICactionExecutionOrder.h b/e2sim/asn1c/RICactionExecutionOrder.h new file mode 100644 index 0000000..602bdf3 --- /dev/null +++ b/e2sim/asn1c/RICactionExecutionOrder.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactionExecutionOrder_H_ +#define _RICactionExecutionOrder_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionExecutionOrder */ +typedef long RICactionExecutionOrder_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionExecutionOrder_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionExecutionOrder; +asn_struct_free_f RICactionExecutionOrder_free; +asn_struct_print_f RICactionExecutionOrder_print; +asn_constr_check_f RICactionExecutionOrder_constraint; +ber_type_decoder_f RICactionExecutionOrder_decode_ber; +der_type_encoder_f RICactionExecutionOrder_encode_der; +xer_type_decoder_f RICactionExecutionOrder_decode_xer; +xer_type_encoder_f RICactionExecutionOrder_encode_xer; +jer_type_encoder_f RICactionExecutionOrder_encode_jer; +per_type_decoder_f RICactionExecutionOrder_decode_uper; +per_type_encoder_f RICactionExecutionOrder_encode_uper; +per_type_decoder_f RICactionExecutionOrder_decode_aper; +per_type_encoder_f RICactionExecutionOrder_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionExecutionOrder_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactionID.c b/e2sim/asn1c/RICactionID.c new file mode 100644 index 0000000..9da4c70 --- /dev/null +++ b/e2sim/asn1c/RICactionID.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactionID.h" + +int +RICactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RICactionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionID = { + "RICactionID", + "RICactionID", + &asn_OP_NativeInteger, + asn_DEF_RICactionID_tags_1, + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + asn_DEF_RICactionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactionID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RICactionID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/RICactionID.h b/e2sim/asn1c/RICactionID.h new file mode 100644 index 0000000..5b1f826 --- /dev/null +++ b/e2sim/asn1c/RICactionID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactionID_H_ +#define _RICactionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionID */ +typedef long RICactionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionID; +asn_struct_free_f RICactionID_free; +asn_struct_print_f RICactionID_print; +asn_constr_check_f RICactionID_constraint; +ber_type_decoder_f RICactionID_decode_ber; +der_type_encoder_f RICactionID_encode_der; +xer_type_decoder_f RICactionID_decode_xer; +xer_type_encoder_f RICactionID_encode_xer; +jer_type_encoder_f RICactionID_encode_jer; +per_type_decoder_f RICactionID_decode_uper; +per_type_encoder_f RICactionID_encode_uper; +per_type_decoder_f RICactionID_decode_aper; +per_type_encoder_f RICactionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactionType.c b/e2sim/asn1c/RICactionType.c new file mode 100644 index 0000000..8b5d316 --- /dev/null +++ b/e2sim/asn1c/RICactionType.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RICactionType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" }, + { 2, 6, "policy" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICactionType_enum2value_1[] = { + 1, /* insert(1) */ + 2, /* policy(2) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1 = { + asn_MAP_RICactionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICactionType_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICactionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionType = { + "RICactionType", + "RICactionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICactionType_tags_1, + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + asn_DEF_RICactionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactionType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICactionType_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactionType.h b/e2sim/asn1c/RICactionType.h new file mode 100644 index 0000000..8796fc9 --- /dev/null +++ b/e2sim/asn1c/RICactionType.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactionType_H_ +#define _RICactionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICactionType { + RICactionType_report = 0, + RICactionType_insert = 1, + RICactionType_policy = 2 + /* + * Enumeration is extensible + */ +} e_RICactionType; + +/* RICactionType */ +typedef long RICactionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1; +asn_struct_free_f RICactionType_free; +asn_struct_print_f RICactionType_print; +asn_constr_check_f RICactionType_constraint; +ber_type_decoder_f RICactionType_decode_ber; +der_type_encoder_f RICactionType_encode_der; +xer_type_decoder_f RICactionType_decode_xer; +xer_type_encoder_f RICactionType_encode_xer; +jer_type_encoder_f RICactionType_encode_jer; +per_type_decoder_f RICactionType_decode_uper; +per_type_encoder_f RICactionType_encode_uper; +per_type_decoder_f RICactionType_decode_aper; +per_type_encoder_f RICactionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionType_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-AddedForModification-List.c b/e2sim/asn1c/RICactions-AddedForModification-List.c new file mode 100644 index 0000000..59a9028 --- /dev/null +++ b/e2sim/asn1c/RICactions-AddedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-AddedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_AddedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_AddedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_AddedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_AddedForModification_List_specs_1 = { + sizeof(struct RICactions_AddedForModification_List), + offsetof(struct RICactions_AddedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_AddedForModification_List = { + "RICactions-AddedForModification-List", + "RICactions-AddedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_AddedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_AddedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_AddedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_AddedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_AddedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_AddedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_AddedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_AddedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_AddedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-AddedForModification-List.h b/e2sim/asn1c/RICactions-AddedForModification-List.h new file mode 100644 index 0000000..c200c42 --- /dev/null +++ b/e2sim/asn1c/RICactions-AddedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_AddedForModification_List_H_ +#define _RICactions_AddedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-AddedForModification-List */ +typedef struct RICactions_AddedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_AddedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_AddedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_AddedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_AddedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_AddedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_AddedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-ConfirmedForModification-List.c b/e2sim/asn1c/RICactions-ConfirmedForModification-List.c new file mode 100644 index 0000000..4b09f4e --- /dev/null +++ b/e2sim/asn1c/RICactions-ConfirmedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-ConfirmedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_ConfirmedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_ConfirmedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P15, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ConfirmedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ConfirmedForModification_List_specs_1 = { + sizeof(struct RICactions_ConfirmedForModification_List), + offsetof(struct RICactions_ConfirmedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ConfirmedForModification_List = { + "RICactions-ConfirmedForModification-List", + "RICactions-ConfirmedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ConfirmedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_ConfirmedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ConfirmedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ConfirmedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ConfirmedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ConfirmedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_ConfirmedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_ConfirmedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ConfirmedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-ConfirmedForModification-List.h b/e2sim/asn1c/RICactions-ConfirmedForModification-List.h new file mode 100644 index 0000000..1228b41 --- /dev/null +++ b/e2sim/asn1c/RICactions-ConfirmedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_ConfirmedForModification_List_H_ +#define _RICactions_ConfirmedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-ConfirmedForModification-List */ +typedef struct RICactions_ConfirmedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ConfirmedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ConfirmedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ConfirmedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ConfirmedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ConfirmedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ConfirmedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-ConfirmedForRemoval-List.c b/e2sim/asn1c/RICactions-ConfirmedForRemoval-List.c new file mode 100644 index 0000000..7d87425 --- /dev/null +++ b/e2sim/asn1c/RICactions-ConfirmedForRemoval-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-ConfirmedForRemoval-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_ConfirmedForRemoval_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_ConfirmedForRemoval_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P17, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ConfirmedForRemoval_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ConfirmedForRemoval_List_specs_1 = { + sizeof(struct RICactions_ConfirmedForRemoval_List), + offsetof(struct RICactions_ConfirmedForRemoval_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ConfirmedForRemoval_List = { + "RICactions-ConfirmedForRemoval-List", + "RICactions-ConfirmedForRemoval-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ConfirmedForRemoval_List_tags_1, + sizeof(asn_DEF_RICactions_ConfirmedForRemoval_List_tags_1) + /sizeof(asn_DEF_RICactions_ConfirmedForRemoval_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ConfirmedForRemoval_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ConfirmedForRemoval_List_tags_1) + /sizeof(asn_DEF_RICactions_ConfirmedForRemoval_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_ConfirmedForRemoval_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_ConfirmedForRemoval_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ConfirmedForRemoval_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-ConfirmedForRemoval-List.h b/e2sim/asn1c/RICactions-ConfirmedForRemoval-List.h new file mode 100644 index 0000000..092b654 --- /dev/null +++ b/e2sim/asn1c/RICactions-ConfirmedForRemoval-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_ConfirmedForRemoval_List_H_ +#define _RICactions_ConfirmedForRemoval_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-ConfirmedForRemoval-List */ +typedef struct RICactions_ConfirmedForRemoval_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ConfirmedForRemoval_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ConfirmedForRemoval_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ConfirmedForRemoval_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ConfirmedForRemoval_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ConfirmedForRemoval_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ConfirmedForRemoval_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.c b/e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.c new file mode 100644 index 0000000..c9cc17e --- /dev/null +++ b/e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-FailedToBeAddedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_FailedToBeAddedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_FailedToBeAddedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_FailedToBeAddedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_FailedToBeAddedForModification_List_specs_1 = { + sizeof(struct RICactions_FailedToBeAddedForModification_List), + offsetof(struct RICactions_FailedToBeAddedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_FailedToBeAddedForModification_List = { + "RICactions-FailedToBeAddedForModification-List", + "RICactions-FailedToBeAddedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_FailedToBeAddedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_FailedToBeAddedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_FailedToBeAddedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_FailedToBeAddedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_FailedToBeAddedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_FailedToBeAddedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_FailedToBeAddedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_FailedToBeAddedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_FailedToBeAddedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.h b/e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.h new file mode 100644 index 0000000..f41715f --- /dev/null +++ b/e2sim/asn1c/RICactions-FailedToBeAddedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_FailedToBeAddedForModification_List_H_ +#define _RICactions_FailedToBeAddedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-FailedToBeAddedForModification-List */ +typedef struct RICactions_FailedToBeAddedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_FailedToBeAddedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_FailedToBeAddedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_FailedToBeAddedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_FailedToBeAddedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_FailedToBeAddedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_FailedToBeAddedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.c b/e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.c new file mode 100644 index 0000000..c8d9c01 --- /dev/null +++ b/e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-FailedToBeModifiedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_FailedToBeModifiedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_FailedToBeModifiedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_FailedToBeModifiedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_FailedToBeModifiedForModification_List_specs_1 = { + sizeof(struct RICactions_FailedToBeModifiedForModification_List), + offsetof(struct RICactions_FailedToBeModifiedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_FailedToBeModifiedForModification_List = { + "RICactions-FailedToBeModifiedForModification-List", + "RICactions-FailedToBeModifiedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_FailedToBeModifiedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_FailedToBeModifiedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_FailedToBeModifiedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_FailedToBeModifiedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_FailedToBeModifiedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_FailedToBeModifiedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_FailedToBeModifiedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_FailedToBeModifiedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_FailedToBeModifiedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.h b/e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.h new file mode 100644 index 0000000..4c4e8f0 --- /dev/null +++ b/e2sim/asn1c/RICactions-FailedToBeModifiedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_FailedToBeModifiedForModification_List_H_ +#define _RICactions_FailedToBeModifiedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-FailedToBeModifiedForModification-List */ +typedef struct RICactions_FailedToBeModifiedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_FailedToBeModifiedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_FailedToBeModifiedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_FailedToBeModifiedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_FailedToBeModifiedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_FailedToBeModifiedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_FailedToBeModifiedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.c b/e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.c new file mode 100644 index 0000000..f0a2d0f --- /dev/null +++ b/e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-FailedToBeRemovedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_FailedToBeRemovedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_FailedToBeRemovedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P8, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_FailedToBeRemovedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_FailedToBeRemovedForModification_List_specs_1 = { + sizeof(struct RICactions_FailedToBeRemovedForModification_List), + offsetof(struct RICactions_FailedToBeRemovedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_FailedToBeRemovedForModification_List = { + "RICactions-FailedToBeRemovedForModification-List", + "RICactions-FailedToBeRemovedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_FailedToBeRemovedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_FailedToBeRemovedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_FailedToBeRemovedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_FailedToBeRemovedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_FailedToBeRemovedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_FailedToBeRemovedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_FailedToBeRemovedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_FailedToBeRemovedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_FailedToBeRemovedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.h b/e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.h new file mode 100644 index 0000000..bfc07c3 --- /dev/null +++ b/e2sim/asn1c/RICactions-FailedToBeRemovedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_FailedToBeRemovedForModification_List_H_ +#define _RICactions_FailedToBeRemovedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-FailedToBeRemovedForModification-List */ +typedef struct RICactions_FailedToBeRemovedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_FailedToBeRemovedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_FailedToBeRemovedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_FailedToBeRemovedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_FailedToBeRemovedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_FailedToBeRemovedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_FailedToBeRemovedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-ModifiedForModification-List.c b/e2sim/asn1c/RICactions-ModifiedForModification-List.c new file mode 100644 index 0000000..dd26148 --- /dev/null +++ b/e2sim/asn1c/RICactions-ModifiedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-ModifiedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_ModifiedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_ModifiedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P9, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ModifiedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ModifiedForModification_List_specs_1 = { + sizeof(struct RICactions_ModifiedForModification_List), + offsetof(struct RICactions_ModifiedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ModifiedForModification_List = { + "RICactions-ModifiedForModification-List", + "RICactions-ModifiedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ModifiedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_ModifiedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ModifiedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ModifiedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ModifiedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ModifiedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_ModifiedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_ModifiedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ModifiedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-ModifiedForModification-List.h b/e2sim/asn1c/RICactions-ModifiedForModification-List.h new file mode 100644 index 0000000..d08ac27 --- /dev/null +++ b/e2sim/asn1c/RICactions-ModifiedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_ModifiedForModification_List_H_ +#define _RICactions_ModifiedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-ModifiedForModification-List */ +typedef struct RICactions_ModifiedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ModifiedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ModifiedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ModifiedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ModifiedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ModifiedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ModifiedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-RefusedToBeModified-List.c b/e2sim/asn1c/RICactions-RefusedToBeModified-List.c new file mode 100644 index 0000000..7793d7b --- /dev/null +++ b/e2sim/asn1c/RICactions-RefusedToBeModified-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-RefusedToBeModified-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_RefusedToBeModified_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_RefusedToBeModified_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_RefusedToBeModified_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_RefusedToBeModified_List_specs_1 = { + sizeof(struct RICactions_RefusedToBeModified_List), + offsetof(struct RICactions_RefusedToBeModified_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_RefusedToBeModified_List = { + "RICactions-RefusedToBeModified-List", + "RICactions-RefusedToBeModified-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_RefusedToBeModified_List_tags_1, + sizeof(asn_DEF_RICactions_RefusedToBeModified_List_tags_1) + /sizeof(asn_DEF_RICactions_RefusedToBeModified_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_RefusedToBeModified_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_RefusedToBeModified_List_tags_1) + /sizeof(asn_DEF_RICactions_RefusedToBeModified_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_RefusedToBeModified_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_RefusedToBeModified_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_RefusedToBeModified_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-RefusedToBeModified-List.h b/e2sim/asn1c/RICactions-RefusedToBeModified-List.h new file mode 100644 index 0000000..fdfacf8 --- /dev/null +++ b/e2sim/asn1c/RICactions-RefusedToBeModified-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_RefusedToBeModified_List_H_ +#define _RICactions_RefusedToBeModified_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-RefusedToBeModified-List */ +typedef struct RICactions_RefusedToBeModified_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_RefusedToBeModified_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_RefusedToBeModified_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_RefusedToBeModified_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_RefusedToBeModified_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_RefusedToBeModified_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_RefusedToBeModified_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-RefusedToBeRemoved-List.c b/e2sim/asn1c/RICactions-RefusedToBeRemoved-List.c new file mode 100644 index 0000000..32e2548 --- /dev/null +++ b/e2sim/asn1c/RICactions-RefusedToBeRemoved-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-RefusedToBeRemoved-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_RefusedToBeRemoved_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_RefusedToBeRemoved_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P18, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_RefusedToBeRemoved_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_RefusedToBeRemoved_List_specs_1 = { + sizeof(struct RICactions_RefusedToBeRemoved_List), + offsetof(struct RICactions_RefusedToBeRemoved_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_RefusedToBeRemoved_List = { + "RICactions-RefusedToBeRemoved-List", + "RICactions-RefusedToBeRemoved-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_RefusedToBeRemoved_List_tags_1, + sizeof(asn_DEF_RICactions_RefusedToBeRemoved_List_tags_1) + /sizeof(asn_DEF_RICactions_RefusedToBeRemoved_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_RefusedToBeRemoved_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_RefusedToBeRemoved_List_tags_1) + /sizeof(asn_DEF_RICactions_RefusedToBeRemoved_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_RefusedToBeRemoved_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_RefusedToBeRemoved_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_RefusedToBeRemoved_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-RefusedToBeRemoved-List.h b/e2sim/asn1c/RICactions-RefusedToBeRemoved-List.h new file mode 100644 index 0000000..e75e435 --- /dev/null +++ b/e2sim/asn1c/RICactions-RefusedToBeRemoved-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_RefusedToBeRemoved_List_H_ +#define _RICactions_RefusedToBeRemoved_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-RefusedToBeRemoved-List */ +typedef struct RICactions_RefusedToBeRemoved_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_RefusedToBeRemoved_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_RefusedToBeRemoved_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_RefusedToBeRemoved_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_RefusedToBeRemoved_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_RefusedToBeRemoved_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_RefusedToBeRemoved_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-RemovedForModification-List.c b/e2sim/asn1c/RICactions-RemovedForModification-List.c new file mode 100644 index 0000000..3231dd1 --- /dev/null +++ b/e2sim/asn1c/RICactions-RemovedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-RemovedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_RemovedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_RemovedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_RemovedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_RemovedForModification_List_specs_1 = { + sizeof(struct RICactions_RemovedForModification_List), + offsetof(struct RICactions_RemovedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_RemovedForModification_List = { + "RICactions-RemovedForModification-List", + "RICactions-RemovedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_RemovedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_RemovedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_RemovedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_RemovedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_RemovedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_RemovedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_RemovedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_RemovedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_RemovedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-RemovedForModification-List.h b/e2sim/asn1c/RICactions-RemovedForModification-List.h new file mode 100644 index 0000000..97bf82d --- /dev/null +++ b/e2sim/asn1c/RICactions-RemovedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_RemovedForModification_List_H_ +#define _RICactions_RemovedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-RemovedForModification-List */ +typedef struct RICactions_RemovedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_RemovedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_RemovedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_RemovedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_RemovedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_RemovedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_RemovedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-RequiredToBeModified-List.c b/e2sim/asn1c/RICactions-RequiredToBeModified-List.c new file mode 100644 index 0000000..0fae2f6 --- /dev/null +++ b/e2sim/asn1c/RICactions-RequiredToBeModified-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-RequiredToBeModified-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_RequiredToBeModified_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_RequiredToBeModified_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P13, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_RequiredToBeModified_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_RequiredToBeModified_List_specs_1 = { + sizeof(struct RICactions_RequiredToBeModified_List), + offsetof(struct RICactions_RequiredToBeModified_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_RequiredToBeModified_List = { + "RICactions-RequiredToBeModified-List", + "RICactions-RequiredToBeModified-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_RequiredToBeModified_List_tags_1, + sizeof(asn_DEF_RICactions_RequiredToBeModified_List_tags_1) + /sizeof(asn_DEF_RICactions_RequiredToBeModified_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_RequiredToBeModified_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_RequiredToBeModified_List_tags_1) + /sizeof(asn_DEF_RICactions_RequiredToBeModified_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_RequiredToBeModified_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_RequiredToBeModified_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_RequiredToBeModified_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-RequiredToBeModified-List.h b/e2sim/asn1c/RICactions-RequiredToBeModified-List.h new file mode 100644 index 0000000..c9c0d9d --- /dev/null +++ b/e2sim/asn1c/RICactions-RequiredToBeModified-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_RequiredToBeModified_List_H_ +#define _RICactions_RequiredToBeModified_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-RequiredToBeModified-List */ +typedef struct RICactions_RequiredToBeModified_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_RequiredToBeModified_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_RequiredToBeModified_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_RequiredToBeModified_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_RequiredToBeModified_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_RequiredToBeModified_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_RequiredToBeModified_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-RequiredToBeRemoved-List.c b/e2sim/asn1c/RICactions-RequiredToBeRemoved-List.c new file mode 100644 index 0000000..9b530a1 --- /dev/null +++ b/e2sim/asn1c/RICactions-RequiredToBeRemoved-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-RequiredToBeRemoved-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_RequiredToBeRemoved_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_RequiredToBeRemoved_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_RequiredToBeRemoved_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_RequiredToBeRemoved_List_specs_1 = { + sizeof(struct RICactions_RequiredToBeRemoved_List), + offsetof(struct RICactions_RequiredToBeRemoved_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_RequiredToBeRemoved_List = { + "RICactions-RequiredToBeRemoved-List", + "RICactions-RequiredToBeRemoved-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_RequiredToBeRemoved_List_tags_1, + sizeof(asn_DEF_RICactions_RequiredToBeRemoved_List_tags_1) + /sizeof(asn_DEF_RICactions_RequiredToBeRemoved_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_RequiredToBeRemoved_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_RequiredToBeRemoved_List_tags_1) + /sizeof(asn_DEF_RICactions_RequiredToBeRemoved_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_RequiredToBeRemoved_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_RequiredToBeRemoved_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_RequiredToBeRemoved_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-RequiredToBeRemoved-List.h b/e2sim/asn1c/RICactions-RequiredToBeRemoved-List.h new file mode 100644 index 0000000..749be7a --- /dev/null +++ b/e2sim/asn1c/RICactions-RequiredToBeRemoved-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_RequiredToBeRemoved_List_H_ +#define _RICactions_RequiredToBeRemoved_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-RequiredToBeRemoved-List */ +typedef struct RICactions_RequiredToBeRemoved_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_RequiredToBeRemoved_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_RequiredToBeRemoved_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_RequiredToBeRemoved_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_RequiredToBeRemoved_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_RequiredToBeRemoved_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_RequiredToBeRemoved_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-ToBeAddedForModification-List.c b/e2sim/asn1c/RICactions-ToBeAddedForModification-List.c new file mode 100644 index 0000000..e8a58bb --- /dev/null +++ b/e2sim/asn1c/RICactions-ToBeAddedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-ToBeAddedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_ToBeAddedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_ToBeAddedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P6, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ToBeAddedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeAddedForModification_List_specs_1 = { + sizeof(struct RICactions_ToBeAddedForModification_List), + offsetof(struct RICactions_ToBeAddedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeAddedForModification_List = { + "RICactions-ToBeAddedForModification-List", + "RICactions-ToBeAddedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ToBeAddedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_ToBeAddedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeAddedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ToBeAddedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ToBeAddedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeAddedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_ToBeAddedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_ToBeAddedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ToBeAddedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-ToBeAddedForModification-List.h b/e2sim/asn1c/RICactions-ToBeAddedForModification-List.h new file mode 100644 index 0000000..1780636 --- /dev/null +++ b/e2sim/asn1c/RICactions-ToBeAddedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_ToBeAddedForModification_List_H_ +#define _RICactions_ToBeAddedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-ToBeAddedForModification-List */ +typedef struct RICactions_ToBeAddedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ToBeAddedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeAddedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeAddedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ToBeAddedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ToBeAddedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ToBeAddedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-ToBeModifiedForModification-List.c b/e2sim/asn1c/RICactions-ToBeModifiedForModification-List.c new file mode 100644 index 0000000..fa73d99 --- /dev/null +++ b/e2sim/asn1c/RICactions-ToBeModifiedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-ToBeModifiedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_ToBeModifiedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_ToBeModifiedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ToBeModifiedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeModifiedForModification_List_specs_1 = { + sizeof(struct RICactions_ToBeModifiedForModification_List), + offsetof(struct RICactions_ToBeModifiedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeModifiedForModification_List = { + "RICactions-ToBeModifiedForModification-List", + "RICactions-ToBeModifiedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ToBeModifiedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_ToBeModifiedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeModifiedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ToBeModifiedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ToBeModifiedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeModifiedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_ToBeModifiedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_ToBeModifiedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ToBeModifiedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-ToBeModifiedForModification-List.h b/e2sim/asn1c/RICactions-ToBeModifiedForModification-List.h new file mode 100644 index 0000000..e05b1f4 --- /dev/null +++ b/e2sim/asn1c/RICactions-ToBeModifiedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_ToBeModifiedForModification_List_H_ +#define _RICactions_ToBeModifiedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-ToBeModifiedForModification-List */ +typedef struct RICactions_ToBeModifiedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ToBeModifiedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeModifiedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeModifiedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ToBeModifiedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ToBeModifiedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ToBeModifiedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-ToBeRemovedForModification-List.c b/e2sim/asn1c/RICactions-ToBeRemovedForModification-List.c new file mode 100644 index 0000000..42a287c --- /dev/null +++ b/e2sim/asn1c/RICactions-ToBeRemovedForModification-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-ToBeRemovedForModification-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_ToBeRemovedForModification_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_ToBeRemovedForModification_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P4, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ToBeRemovedForModification_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeRemovedForModification_List_specs_1 = { + sizeof(struct RICactions_ToBeRemovedForModification_List), + offsetof(struct RICactions_ToBeRemovedForModification_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeRemovedForModification_List = { + "RICactions-ToBeRemovedForModification-List", + "RICactions-ToBeRemovedForModification-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ToBeRemovedForModification_List_tags_1, + sizeof(asn_DEF_RICactions_ToBeRemovedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeRemovedForModification_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ToBeRemovedForModification_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ToBeRemovedForModification_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeRemovedForModification_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_ToBeRemovedForModification_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_ToBeRemovedForModification_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ToBeRemovedForModification_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-ToBeRemovedForModification-List.h b/e2sim/asn1c/RICactions-ToBeRemovedForModification-List.h new file mode 100644 index 0000000..4ecac1d --- /dev/null +++ b/e2sim/asn1c/RICactions-ToBeRemovedForModification-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_ToBeRemovedForModification_List_H_ +#define _RICactions_ToBeRemovedForModification_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-ToBeRemovedForModification-List */ +typedef struct RICactions_ToBeRemovedForModification_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ToBeRemovedForModification_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeRemovedForModification_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeRemovedForModification_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ToBeRemovedForModification_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ToBeRemovedForModification_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ToBeRemovedForModification_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICactions-ToBeSetup-List.c b/e2sim/asn1c/RICactions-ToBeSetup-List.c new file mode 100644 index 0000000..b7ea8e5 --- /dev/null +++ b/e2sim/asn1c/RICactions-ToBeSetup-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICactions-ToBeSetup-List.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P0, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ToBeSetup_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1 = { + sizeof(struct RICactions_ToBeSetup_List), + offsetof(struct RICactions_ToBeSetup_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List = { + "RICactions-ToBeSetup-List", + "RICactions-ToBeSetup-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ToBeSetup_List_tags_1, + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ToBeSetup_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICactions_ToBeSetup_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICactions_ToBeSetup_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ToBeSetup_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICactions-ToBeSetup-List.h b/e2sim/asn1c/RICactions-ToBeSetup-List.h new file mode 100644 index 0000000..61886ba --- /dev/null +++ b/e2sim/asn1c/RICactions-ToBeSetup-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICactions_ToBeSetup_List_H_ +#define _RICactions_ToBeSetup_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-ToBeSetup-List */ +typedef struct RICactions_ToBeSetup_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ToBeSetup_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ToBeSetup_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICcallProcessID.c b/e2sim/asn1c/RICcallProcessID.c new file mode 100644 index 0000000..3806945 --- /dev/null +++ b/e2sim/asn1c/RICcallProcessID.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICcallProcessID.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcallProcessID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcallProcessID = { + "RICcallProcessID", + "RICcallProcessID", + &asn_OP_OCTET_STRING, + asn_DEF_RICcallProcessID_tags_1, + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + asn_DEF_RICcallProcessID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICcallProcessID.h b/e2sim/asn1c/RICcallProcessID.h new file mode 100644 index 0000000..08723df --- /dev/null +++ b/e2sim/asn1c/RICcallProcessID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICcallProcessID_H_ +#define _RICcallProcessID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcallProcessID */ +typedef OCTET_STRING_t RICcallProcessID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcallProcessID; +asn_struct_free_f RICcallProcessID_free; +asn_struct_print_f RICcallProcessID_print; +asn_constr_check_f RICcallProcessID_constraint; +ber_type_decoder_f RICcallProcessID_decode_ber; +der_type_encoder_f RICcallProcessID_encode_der; +xer_type_decoder_f RICcallProcessID_decode_xer; +xer_type_encoder_f RICcallProcessID_encode_xer; +jer_type_encoder_f RICcallProcessID_encode_jer; +per_type_decoder_f RICcallProcessID_decode_uper; +per_type_encoder_f RICcallProcessID_encode_uper; +per_type_decoder_f RICcallProcessID_decode_aper; +per_type_encoder_f RICcallProcessID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcallProcessID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICcontrolAckRequest.c b/e2sim/asn1c/RICcontrolAckRequest.c new file mode 100644 index 0000000..cb26d59 --- /dev/null +++ b/e2sim/asn1c/RICcontrolAckRequest.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICcontrolAckRequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICcontrolAckRequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolAckRequest_value2enum_1[] = { + { 0, 5, "noAck" }, + { 1, 3, "ack" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICcontrolAckRequest_enum2value_1[] = { + 1, /* ack(1) */ + 0 /* noAck(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICcontrolAckRequest_specs_1 = { + asn_MAP_RICcontrolAckRequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICcontrolAckRequest_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest = { + "RICcontrolAckRequest", + "RICcontrolAckRequest", + &asn_OP_NativeEnumerated, + asn_DEF_RICcontrolAckRequest_tags_1, + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICcontrolAckRequest_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICcontrolAckRequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICcontrolAckRequest.h b/e2sim/asn1c/RICcontrolAckRequest.h new file mode 100644 index 0000000..8c4a61b --- /dev/null +++ b/e2sim/asn1c/RICcontrolAckRequest.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICcontrolAckRequest_H_ +#define _RICcontrolAckRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcontrolAckRequest { + RICcontrolAckRequest_noAck = 0, + RICcontrolAckRequest_ack = 1 + /* + * Enumeration is extensible + */ +} e_RICcontrolAckRequest; + +/* RICcontrolAckRequest */ +typedef long RICcontrolAckRequest_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICcontrolAckRequest_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest; +extern const asn_INTEGER_specifics_t asn_SPC_RICcontrolAckRequest_specs_1; +asn_struct_free_f RICcontrolAckRequest_free; +asn_struct_print_f RICcontrolAckRequest_print; +asn_constr_check_f RICcontrolAckRequest_constraint; +ber_type_decoder_f RICcontrolAckRequest_decode_ber; +der_type_encoder_f RICcontrolAckRequest_encode_der; +xer_type_decoder_f RICcontrolAckRequest_decode_xer; +xer_type_encoder_f RICcontrolAckRequest_encode_xer; +jer_type_encoder_f RICcontrolAckRequest_encode_jer; +per_type_decoder_f RICcontrolAckRequest_decode_uper; +per_type_encoder_f RICcontrolAckRequest_encode_uper; +per_type_decoder_f RICcontrolAckRequest_decode_aper; +per_type_encoder_f RICcontrolAckRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAckRequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICcontrolAcknowledge.c b/e2sim/asn1c/RICcontrolAcknowledge.c new file mode 100644 index 0000000..e50740b --- /dev/null +++ b/e2sim/asn1c/RICcontrolAcknowledge.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICcontrolAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P15, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1 = { + sizeof(struct RICcontrolAcknowledge), + offsetof(struct RICcontrolAcknowledge, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge = { + "RICcontrolAcknowledge", + "RICcontrolAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_tags_1, + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICcontrolAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICcontrolAcknowledge.h b/e2sim/asn1c/RICcontrolAcknowledge.h new file mode 100644 index 0000000..9744208 --- /dev/null +++ b/e2sim/asn1c/RICcontrolAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICcontrolAcknowledge_H_ +#define _RICcontrolAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolAcknowledge */ +typedef struct RICcontrolAcknowledge { + ProtocolIE_Container_85P15_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICcontrolFailure.c b/e2sim/asn1c/RICcontrolFailure.c new file mode 100644 index 0000000..d3e18ae --- /dev/null +++ b/e2sim/asn1c/RICcontrolFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICcontrolFailure.h" + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P16, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1 = { + sizeof(struct RICcontrolFailure), + offsetof(struct RICcontrolFailure, _asn_ctx), + asn_MAP_RICcontrolFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure = { + "RICcontrolFailure", + "RICcontrolFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_tags_1, + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICcontrolFailure_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICcontrolFailure.h b/e2sim/asn1c/RICcontrolFailure.h new file mode 100644 index 0000000..537282a --- /dev/null +++ b/e2sim/asn1c/RICcontrolFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICcontrolFailure_H_ +#define _RICcontrolFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolFailure */ +typedef struct RICcontrolFailure { + ProtocolIE_Container_85P16_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICcontrolHeader.c b/e2sim/asn1c/RICcontrolHeader.c new file mode 100644 index 0000000..db309e5 --- /dev/null +++ b/e2sim/asn1c/RICcontrolHeader.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICcontrolHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader = { + "RICcontrolHeader", + "RICcontrolHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolHeader_tags_1, + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICcontrolHeader.h b/e2sim/asn1c/RICcontrolHeader.h new file mode 100644 index 0000000..7a3d015 --- /dev/null +++ b/e2sim/asn1c/RICcontrolHeader.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICcontrolHeader_H_ +#define _RICcontrolHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolHeader */ +typedef OCTET_STRING_t RICcontrolHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader; +asn_struct_free_f RICcontrolHeader_free; +asn_struct_print_f RICcontrolHeader_print; +asn_constr_check_f RICcontrolHeader_constraint; +ber_type_decoder_f RICcontrolHeader_decode_ber; +der_type_encoder_f RICcontrolHeader_encode_der; +xer_type_decoder_f RICcontrolHeader_decode_xer; +xer_type_encoder_f RICcontrolHeader_encode_xer; +jer_type_encoder_f RICcontrolHeader_encode_jer; +per_type_decoder_f RICcontrolHeader_decode_uper; +per_type_encoder_f RICcontrolHeader_encode_uper; +per_type_decoder_f RICcontrolHeader_decode_aper; +per_type_encoder_f RICcontrolHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolHeader_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICcontrolMessage.c b/e2sim/asn1c/RICcontrolMessage.c new file mode 100644 index 0000000..da1aeea --- /dev/null +++ b/e2sim/asn1c/RICcontrolMessage.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICcontrolMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage = { + "RICcontrolMessage", + "RICcontrolMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolMessage_tags_1, + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICcontrolMessage.h b/e2sim/asn1c/RICcontrolMessage.h new file mode 100644 index 0000000..b9c6fcf --- /dev/null +++ b/e2sim/asn1c/RICcontrolMessage.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICcontrolMessage_H_ +#define _RICcontrolMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolMessage */ +typedef OCTET_STRING_t RICcontrolMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage; +asn_struct_free_f RICcontrolMessage_free; +asn_struct_print_f RICcontrolMessage_print; +asn_constr_check_f RICcontrolMessage_constraint; +ber_type_decoder_f RICcontrolMessage_decode_ber; +der_type_encoder_f RICcontrolMessage_encode_der; +xer_type_decoder_f RICcontrolMessage_decode_xer; +xer_type_encoder_f RICcontrolMessage_encode_xer; +jer_type_encoder_f RICcontrolMessage_encode_jer; +per_type_decoder_f RICcontrolMessage_decode_uper; +per_type_encoder_f RICcontrolMessage_encode_uper; +per_type_decoder_f RICcontrolMessage_decode_aper; +per_type_encoder_f RICcontrolMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolMessage_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICcontrolOutcome.c b/e2sim/asn1c/RICcontrolOutcome.c new file mode 100644 index 0000000..44a641a --- /dev/null +++ b/e2sim/asn1c/RICcontrolOutcome.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICcontrolOutcome.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome = { + "RICcontrolOutcome", + "RICcontrolOutcome", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolOutcome_tags_1, + sizeof(asn_DEF_RICcontrolOutcome_tags_1) + /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolOutcome_tags_1) + /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICcontrolOutcome.h b/e2sim/asn1c/RICcontrolOutcome.h new file mode 100644 index 0000000..3c64182 --- /dev/null +++ b/e2sim/asn1c/RICcontrolOutcome.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICcontrolOutcome_H_ +#define _RICcontrolOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolOutcome */ +typedef OCTET_STRING_t RICcontrolOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome; +asn_struct_free_f RICcontrolOutcome_free; +asn_struct_print_f RICcontrolOutcome_print; +asn_constr_check_f RICcontrolOutcome_constraint; +ber_type_decoder_f RICcontrolOutcome_decode_ber; +der_type_encoder_f RICcontrolOutcome_encode_der; +xer_type_decoder_f RICcontrolOutcome_decode_xer; +xer_type_encoder_f RICcontrolOutcome_encode_xer; +jer_type_encoder_f RICcontrolOutcome_encode_jer; +per_type_decoder_f RICcontrolOutcome_decode_uper; +per_type_encoder_f RICcontrolOutcome_encode_uper; +per_type_decoder_f RICcontrolOutcome_decode_aper; +per_type_encoder_f RICcontrolOutcome_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolOutcome_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICcontrolRequest.c b/e2sim/asn1c/RICcontrolRequest.c new file mode 100644 index 0000000..e8b1bd9 --- /dev/null +++ b/e2sim/asn1c/RICcontrolRequest.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICcontrolRequest.h" + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1 = { + sizeof(struct RICcontrolRequest), + offsetof(struct RICcontrolRequest, _asn_ctx), + asn_MAP_RICcontrolRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest = { + "RICcontrolRequest", + "RICcontrolRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_tags_1, + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICcontrolRequest_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolRequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICcontrolRequest.h b/e2sim/asn1c/RICcontrolRequest.h new file mode 100644 index 0000000..94857c9 --- /dev/null +++ b/e2sim/asn1c/RICcontrolRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICcontrolRequest_H_ +#define _RICcontrolRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolRequest */ +typedef struct RICcontrolRequest { + ProtocolIE_Container_85P14_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolRequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICeventTriggerDefinition.c b/e2sim/asn1c/RICeventTriggerDefinition.c new file mode 100644 index 0000000..26cbac7 --- /dev/null +++ b/e2sim/asn1c/RICeventTriggerDefinition.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICeventTriggerDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICeventTriggerDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition = { + "RICeventTriggerDefinition", + "RICeventTriggerDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICeventTriggerDefinition_tags_1, + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICeventTriggerDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICeventTriggerDefinition.h b/e2sim/asn1c/RICeventTriggerDefinition.h new file mode 100644 index 0000000..c9610b3 --- /dev/null +++ b/e2sim/asn1c/RICeventTriggerDefinition.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICeventTriggerDefinition_H_ +#define _RICeventTriggerDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICeventTriggerDefinition */ +typedef OCTET_STRING_t RICeventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition; +asn_struct_free_f RICeventTriggerDefinition_free; +asn_struct_print_f RICeventTriggerDefinition_print; +asn_constr_check_f RICeventTriggerDefinition_constraint; +ber_type_decoder_f RICeventTriggerDefinition_decode_ber; +der_type_encoder_f RICeventTriggerDefinition_encode_der; +xer_type_decoder_f RICeventTriggerDefinition_decode_xer; +xer_type_encoder_f RICeventTriggerDefinition_encode_xer; +jer_type_encoder_f RICeventTriggerDefinition_encode_jer; +per_type_decoder_f RICeventTriggerDefinition_decode_uper; +per_type_encoder_f RICeventTriggerDefinition_encode_uper; +per_type_decoder_f RICeventTriggerDefinition_decode_aper; +per_type_encoder_f RICeventTriggerDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICeventTriggerDefinition_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICindication.c b/e2sim/asn1c/RICindication.c new file mode 100644 index 0000000..17bb20a --- /dev/null +++ b/e2sim/asn1c/RICindication.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICindication.h" + +asn_TYPE_member_t asn_MBR_RICindication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P13, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1 = { + sizeof(struct RICindication), + offsetof(struct RICindication, _asn_ctx), + asn_MAP_RICindication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication = { + "RICindication", + "RICindication", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_tags_1, + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + asn_DEF_RICindication_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICindication_1, + 1, /* Elements count */ + &asn_SPC_RICindication_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICindication.h b/e2sim/asn1c/RICindication.h new file mode 100644 index 0000000..b04314a --- /dev/null +++ b/e2sim/asn1c/RICindication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICindication_H_ +#define _RICindication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindication */ +typedef struct RICindication { + ProtocolIE_Container_85P13_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindication; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1; +extern asn_TYPE_member_t asn_MBR_RICindication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindication_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICindicationHeader.c b/e2sim/asn1c/RICindicationHeader.c new file mode 100644 index 0000000..7aa77cd --- /dev/null +++ b/e2sim/asn1c/RICindicationHeader.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICindicationHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationHeader = { + "RICindicationHeader", + "RICindicationHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationHeader_tags_1, + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + asn_DEF_RICindicationHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICindicationHeader.h b/e2sim/asn1c/RICindicationHeader.h new file mode 100644 index 0000000..ac26e89 --- /dev/null +++ b/e2sim/asn1c/RICindicationHeader.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICindicationHeader_H_ +#define _RICindicationHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationHeader */ +typedef OCTET_STRING_t RICindicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationHeader; +asn_struct_free_f RICindicationHeader_free; +asn_struct_print_f RICindicationHeader_print; +asn_constr_check_f RICindicationHeader_constraint; +ber_type_decoder_f RICindicationHeader_decode_ber; +der_type_encoder_f RICindicationHeader_encode_der; +xer_type_decoder_f RICindicationHeader_decode_xer; +xer_type_encoder_f RICindicationHeader_encode_xer; +jer_type_encoder_f RICindicationHeader_encode_jer; +per_type_decoder_f RICindicationHeader_decode_uper; +per_type_encoder_f RICindicationHeader_encode_uper; +per_type_decoder_f RICindicationHeader_decode_aper; +per_type_encoder_f RICindicationHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationHeader_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICindicationMessage.c b/e2sim/asn1c/RICindicationMessage.c new file mode 100644 index 0000000..a0ca72b --- /dev/null +++ b/e2sim/asn1c/RICindicationMessage.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICindicationMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationMessage = { + "RICindicationMessage", + "RICindicationMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationMessage_tags_1, + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + asn_DEF_RICindicationMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICindicationMessage.h b/e2sim/asn1c/RICindicationMessage.h new file mode 100644 index 0000000..a84e304 --- /dev/null +++ b/e2sim/asn1c/RICindicationMessage.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICindicationMessage_H_ +#define _RICindicationMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationMessage */ +typedef OCTET_STRING_t RICindicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationMessage; +asn_struct_free_f RICindicationMessage_free; +asn_struct_print_f RICindicationMessage_print; +asn_constr_check_f RICindicationMessage_constraint; +ber_type_decoder_f RICindicationMessage_decode_ber; +der_type_encoder_f RICindicationMessage_encode_der; +xer_type_decoder_f RICindicationMessage_decode_xer; +xer_type_encoder_f RICindicationMessage_encode_xer; +jer_type_encoder_f RICindicationMessage_encode_jer; +per_type_decoder_f RICindicationMessage_decode_uper; +per_type_encoder_f RICindicationMessage_encode_uper; +per_type_decoder_f RICindicationMessage_decode_aper; +per_type_encoder_f RICindicationMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationMessage_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICindicationSN.c b/e2sim/asn1c/RICindicationSN.c new file mode 100644 index 0000000..4eca888 --- /dev/null +++ b/e2sim/asn1c/RICindicationSN.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICindicationSN.h" + +int +RICindicationSN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICindicationSN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RICindicationSN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationSN = { + "RICindicationSN", + "RICindicationSN", + &asn_OP_NativeInteger, + asn_DEF_RICindicationSN_tags_1, + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + asn_DEF_RICindicationSN_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICindicationSN_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RICindicationSN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/RICindicationSN.h b/e2sim/asn1c/RICindicationSN.h new file mode 100644 index 0000000..815c9f5 --- /dev/null +++ b/e2sim/asn1c/RICindicationSN.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICindicationSN_H_ +#define _RICindicationSN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationSN */ +typedef long RICindicationSN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICindicationSN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICindicationSN; +asn_struct_free_f RICindicationSN_free; +asn_struct_print_f RICindicationSN_print; +asn_constr_check_f RICindicationSN_constraint; +ber_type_decoder_f RICindicationSN_decode_ber; +der_type_encoder_f RICindicationSN_encode_der; +xer_type_decoder_f RICindicationSN_decode_xer; +xer_type_encoder_f RICindicationSN_encode_xer; +jer_type_encoder_f RICindicationSN_encode_jer; +per_type_decoder_f RICindicationSN_decode_uper; +per_type_encoder_f RICindicationSN_encode_uper; +per_type_decoder_f RICindicationSN_decode_aper; +per_type_encoder_f RICindicationSN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationSN_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICindicationType.c b/e2sim/asn1c/RICindicationType.c new file mode 100644 index 0000000..49ba7c3 --- /dev/null +++ b/e2sim/asn1c/RICindicationType.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICindicationType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICindicationType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RICindicationType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICindicationType_enum2value_1[] = { + 1, /* insert(1) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICindicationType_specs_1 = { + asn_MAP_RICindicationType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICindicationType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICindicationType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationType = { + "RICindicationType", + "RICindicationType", + &asn_OP_NativeEnumerated, + asn_DEF_RICindicationType_tags_1, + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + asn_DEF_RICindicationType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICindicationType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICindicationType_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICindicationType.h b/e2sim/asn1c/RICindicationType.h new file mode 100644 index 0000000..55c4809 --- /dev/null +++ b/e2sim/asn1c/RICindicationType.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICindicationType_H_ +#define _RICindicationType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICindicationType { + RICindicationType_report = 0, + RICindicationType_insert = 1 + /* + * Enumeration is extensible + */ +} e_RICindicationType; + +/* RICindicationType */ +typedef long RICindicationType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICindicationType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICindicationType; +extern const asn_INTEGER_specifics_t asn_SPC_RICindicationType_specs_1; +asn_struct_free_f RICindicationType_free; +asn_struct_print_f RICindicationType_print; +asn_constr_check_f RICindicationType_constraint; +ber_type_decoder_f RICindicationType_decode_ber; +der_type_encoder_f RICindicationType_encode_der; +xer_type_decoder_f RICindicationType_decode_xer; +xer_type_encoder_f RICindicationType_encode_xer; +jer_type_encoder_f RICindicationType_encode_jer; +per_type_decoder_f RICindicationType_decode_uper; +per_type_encoder_f RICindicationType_encode_uper; +per_type_decoder_f RICindicationType_decode_aper; +per_type_encoder_f RICindicationType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationType_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICqueryDefinition.c b/e2sim/asn1c/RICqueryDefinition.c new file mode 100644 index 0000000..1dfcb14 --- /dev/null +++ b/e2sim/asn1c/RICqueryDefinition.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICqueryDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICqueryDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICqueryDefinition = { + "RICqueryDefinition", + "RICqueryDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICqueryDefinition_tags_1, + sizeof(asn_DEF_RICqueryDefinition_tags_1) + /sizeof(asn_DEF_RICqueryDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICqueryDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICqueryDefinition_tags_1) + /sizeof(asn_DEF_RICqueryDefinition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICqueryDefinition.h b/e2sim/asn1c/RICqueryDefinition.h new file mode 100644 index 0000000..21928de --- /dev/null +++ b/e2sim/asn1c/RICqueryDefinition.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICqueryDefinition_H_ +#define _RICqueryDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICqueryDefinition */ +typedef OCTET_STRING_t RICqueryDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICqueryDefinition; +asn_struct_free_f RICqueryDefinition_free; +asn_struct_print_f RICqueryDefinition_print; +asn_constr_check_f RICqueryDefinition_constraint; +ber_type_decoder_f RICqueryDefinition_decode_ber; +der_type_encoder_f RICqueryDefinition_encode_der; +xer_type_decoder_f RICqueryDefinition_decode_xer; +xer_type_encoder_f RICqueryDefinition_encode_xer; +jer_type_encoder_f RICqueryDefinition_encode_jer; +per_type_decoder_f RICqueryDefinition_decode_uper; +per_type_encoder_f RICqueryDefinition_encode_uper; +per_type_decoder_f RICqueryDefinition_decode_aper; +per_type_encoder_f RICqueryDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICqueryDefinition_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICqueryHeader.c b/e2sim/asn1c/RICqueryHeader.c new file mode 100644 index 0000000..38d8c86 --- /dev/null +++ b/e2sim/asn1c/RICqueryHeader.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICqueryHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICqueryHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICqueryHeader = { + "RICqueryHeader", + "RICqueryHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICqueryHeader_tags_1, + sizeof(asn_DEF_RICqueryHeader_tags_1) + /sizeof(asn_DEF_RICqueryHeader_tags_1[0]), /* 1 */ + asn_DEF_RICqueryHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICqueryHeader_tags_1) + /sizeof(asn_DEF_RICqueryHeader_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICqueryHeader.h b/e2sim/asn1c/RICqueryHeader.h new file mode 100644 index 0000000..ff8110b --- /dev/null +++ b/e2sim/asn1c/RICqueryHeader.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICqueryHeader_H_ +#define _RICqueryHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICqueryHeader */ +typedef OCTET_STRING_t RICqueryHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICqueryHeader; +asn_struct_free_f RICqueryHeader_free; +asn_struct_print_f RICqueryHeader_print; +asn_constr_check_f RICqueryHeader_constraint; +ber_type_decoder_f RICqueryHeader_decode_ber; +der_type_encoder_f RICqueryHeader_encode_der; +xer_type_decoder_f RICqueryHeader_decode_xer; +xer_type_encoder_f RICqueryHeader_encode_xer; +jer_type_encoder_f RICqueryHeader_encode_jer; +per_type_decoder_f RICqueryHeader_decode_uper; +per_type_encoder_f RICqueryHeader_encode_uper; +per_type_decoder_f RICqueryHeader_decode_aper; +per_type_encoder_f RICqueryHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICqueryHeader_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICqueryOutcome.c b/e2sim/asn1c/RICqueryOutcome.c new file mode 100644 index 0000000..9209124 --- /dev/null +++ b/e2sim/asn1c/RICqueryOutcome.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICqueryOutcome.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICqueryOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICqueryOutcome = { + "RICqueryOutcome", + "RICqueryOutcome", + &asn_OP_OCTET_STRING, + asn_DEF_RICqueryOutcome_tags_1, + sizeof(asn_DEF_RICqueryOutcome_tags_1) + /sizeof(asn_DEF_RICqueryOutcome_tags_1[0]), /* 1 */ + asn_DEF_RICqueryOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_RICqueryOutcome_tags_1) + /sizeof(asn_DEF_RICqueryOutcome_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OCTET_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICqueryOutcome.h b/e2sim/asn1c/RICqueryOutcome.h new file mode 100644 index 0000000..b5255d6 --- /dev/null +++ b/e2sim/asn1c/RICqueryOutcome.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICqueryOutcome_H_ +#define _RICqueryOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICqueryOutcome */ +typedef OCTET_STRING_t RICqueryOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICqueryOutcome; +asn_struct_free_f RICqueryOutcome_free; +asn_struct_print_f RICqueryOutcome_print; +asn_constr_check_f RICqueryOutcome_constraint; +ber_type_decoder_f RICqueryOutcome_decode_ber; +der_type_encoder_f RICqueryOutcome_encode_der; +xer_type_decoder_f RICqueryOutcome_decode_xer; +xer_type_encoder_f RICqueryOutcome_encode_xer; +jer_type_encoder_f RICqueryOutcome_encode_jer; +per_type_decoder_f RICqueryOutcome_decode_uper; +per_type_encoder_f RICqueryOutcome_encode_uper; +per_type_decoder_f RICqueryOutcome_decode_aper; +per_type_encoder_f RICqueryOutcome_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICqueryOutcome_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICrequestID.c b/e2sim/asn1c/RICrequestID.c new file mode 100644 index 0000000..6fed3ae --- /dev/null +++ b/e2sim/asn1c/RICrequestID.c @@ -0,0 +1,148 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICrequestID.h" + +static int +memb_ricRequestorID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ricInstanceID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 65535L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ricRequestorID_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_ricInstanceID_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICrequestID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestorID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ricRequestorID_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ricRequestorID_constraint_1 + }, + 0, 0, /* No default value */ + "ricRequestorID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricInstanceID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_ricInstanceID_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_ricInstanceID_constraint_1 + }, + 0, 0, /* No default value */ + "ricInstanceID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICrequestID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICrequestID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestorID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricInstanceID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1 = { + sizeof(struct RICrequestID), + offsetof(struct RICrequestID, _asn_ctx), + asn_MAP_RICrequestID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICrequestID = { + "RICrequestID", + "RICrequestID", + &asn_OP_SEQUENCE, + asn_DEF_RICrequestID_tags_1, + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + asn_DEF_RICrequestID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICrequestID_1, + 2, /* Elements count */ + &asn_SPC_RICrequestID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICrequestID.h b/e2sim/asn1c/RICrequestID.h new file mode 100644 index 0000000..655d813 --- /dev/null +++ b/e2sim/asn1c/RICrequestID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICrequestID_H_ +#define _RICrequestID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICrequestID */ +typedef struct RICrequestID { + long ricRequestorID; + long ricInstanceID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICrequestID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICrequestID; +extern asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1; +extern asn_TYPE_member_t asn_MBR_RICrequestID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICrequestID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICserviceQuery.c b/e2sim/asn1c/RICserviceQuery.c new file mode 100644 index 0000000..0fd9ff0 --- /dev/null +++ b/e2sim/asn1c/RICserviceQuery.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICserviceQuery.h" + +asn_TYPE_member_t asn_MBR_RICserviceQuery_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P35, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1 = { + sizeof(struct RICserviceQuery), + offsetof(struct RICserviceQuery, _asn_ctx), + asn_MAP_RICserviceQuery_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery = { + "RICserviceQuery", + "RICserviceQuery", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_tags_1, + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + asn_DEF_RICserviceQuery_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICserviceQuery_1, + 1, /* Elements count */ + &asn_SPC_RICserviceQuery_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICserviceQuery.h b/e2sim/asn1c/RICserviceQuery.h new file mode 100644 index 0000000..019be3e --- /dev/null +++ b/e2sim/asn1c/RICserviceQuery.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICserviceQuery_H_ +#define _RICserviceQuery_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceQuery */ +typedef struct RICserviceQuery { + ProtocolIE_Container_85P35_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceQuery_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICserviceUpdate.c b/e2sim/asn1c/RICserviceUpdate.c new file mode 100644 index 0000000..c652eb3 --- /dev/null +++ b/e2sim/asn1c/RICserviceUpdate.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICserviceUpdate.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P32, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1 = { + sizeof(struct RICserviceUpdate), + offsetof(struct RICserviceUpdate, _asn_ctx), + asn_MAP_RICserviceUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate = { + "RICserviceUpdate", + "RICserviceUpdate", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_tags_1, + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICserviceUpdate_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdate_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICserviceUpdate.h b/e2sim/asn1c/RICserviceUpdate.h new file mode 100644 index 0000000..b8213e7 --- /dev/null +++ b/e2sim/asn1c/RICserviceUpdate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICserviceUpdate_H_ +#define _RICserviceUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdate */ +typedef struct RICserviceUpdate { + ProtocolIE_Container_85P32_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdate_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICserviceUpdateAcknowledge.c b/e2sim/asn1c/RICserviceUpdateAcknowledge.c new file mode 100644 index 0000000..bcc703a --- /dev/null +++ b/e2sim/asn1c/RICserviceUpdateAcknowledge.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICserviceUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P33, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1 = { + sizeof(struct RICserviceUpdateAcknowledge), + offsetof(struct RICserviceUpdateAcknowledge, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge = { + "RICserviceUpdateAcknowledge", + "RICserviceUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_tags_1, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICserviceUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICserviceUpdateAcknowledge.h b/e2sim/asn1c/RICserviceUpdateAcknowledge.h new file mode 100644 index 0000000..e0d2db5 --- /dev/null +++ b/e2sim/asn1c/RICserviceUpdateAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICserviceUpdateAcknowledge_H_ +#define _RICserviceUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateAcknowledge */ +typedef struct RICserviceUpdateAcknowledge { + ProtocolIE_Container_85P33_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICserviceUpdateFailure.c b/e2sim/asn1c/RICserviceUpdateFailure.c new file mode 100644 index 0000000..335c780 --- /dev/null +++ b/e2sim/asn1c/RICserviceUpdateFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICserviceUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P34, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1 = { + sizeof(struct RICserviceUpdateFailure), + offsetof(struct RICserviceUpdateFailure, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure = { + "RICserviceUpdateFailure", + "RICserviceUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_tags_1, + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICserviceUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICserviceUpdateFailure.h b/e2sim/asn1c/RICserviceUpdateFailure.h new file mode 100644 index 0000000..d1703f1 --- /dev/null +++ b/e2sim/asn1c/RICserviceUpdateFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICserviceUpdateFailure_H_ +#define _RICserviceUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateFailure */ +typedef struct RICserviceUpdateFailure { + ProtocolIE_Container_85P34_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscription-List-withCause.c b/e2sim/asn1c/RICsubscription-List-withCause.c new file mode 100644 index 0000000..5e4bfeb --- /dev/null +++ b/e2sim/asn1c/RICsubscription-List-withCause.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscription-List-withCause.h" + +#include "ProtocolIE-SingleContainer.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICsubscription_List_withCause_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RICsubscription_List_withCause_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_88P3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscription_List_withCause_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICsubscription_List_withCause_specs_1 = { + sizeof(struct RICsubscription_List_withCause), + offsetof(struct RICsubscription_List_withCause, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscription_List_withCause = { + "RICsubscription-List-withCause", + "RICsubscription-List-withCause", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICsubscription_List_withCause_tags_1, + sizeof(asn_DEF_RICsubscription_List_withCause_tags_1) + /sizeof(asn_DEF_RICsubscription_List_withCause_tags_1[0]), /* 1 */ + asn_DEF_RICsubscription_List_withCause_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscription_List_withCause_tags_1) + /sizeof(asn_DEF_RICsubscription_List_withCause_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICsubscription_List_withCause_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RICsubscription_List_withCause_1, + 1, /* Single element */ + &asn_SPC_RICsubscription_List_withCause_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscription-List-withCause.h b/e2sim/asn1c/RICsubscription-List-withCause.h new file mode 100644 index 0000000..6d94ca3 --- /dev/null +++ b/e2sim/asn1c/RICsubscription-List-withCause.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscription_List_withCause_H_ +#define _RICsubscription_List_withCause_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICsubscription-List-withCause */ +typedef struct RICsubscription_List_withCause { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscription_List_withCause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscription_List_withCause; +extern asn_SET_OF_specifics_t asn_SPC_RICsubscription_List_withCause_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscription_List_withCause_1[1]; +extern asn_per_constraints_t asn_PER_type_RICsubscription_List_withCause_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscription_List_withCause_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscription-withCause-Item.c b/e2sim/asn1c/RICsubscription-withCause-Item.c new file mode 100644 index 0000000..557104e --- /dev/null +++ b/e2sim/asn1c/RICsubscription-withCause-Item.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscription-withCause-Item.h" + +asn_TYPE_member_t asn_MBR_RICsubscription_withCause_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_Item, ricRequestID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICrequestID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricRequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscription_withCause_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscription_withCause_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cause */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_Item_specs_1 = { + sizeof(struct RICsubscription_withCause_Item), + offsetof(struct RICsubscription_withCause_Item, _asn_ctx), + asn_MAP_RICsubscription_withCause_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_Item = { + "RICsubscription-withCause-Item", + "RICsubscription-withCause-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscription_withCause_Item_tags_1, + sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1) + /sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1[0]), /* 1 */ + asn_DEF_RICsubscription_withCause_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1) + /sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscription_withCause_Item_1, + 3, /* Elements count */ + &asn_SPC_RICsubscription_withCause_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscription-withCause-Item.h b/e2sim/asn1c/RICsubscription-withCause-Item.h new file mode 100644 index 0000000..17ccc1e --- /dev/null +++ b/e2sim/asn1c/RICsubscription-withCause-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscription_withCause_Item_H_ +#define _RICsubscription_withCause_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICrequestID.h" +#include "RANfunctionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscription-withCause-Item */ +typedef struct RICsubscription_withCause_Item { + RICrequestID_t ricRequestID; + RANfunctionID_t ranFunctionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscription_withCause_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscription_withCause_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscription_withCause_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionDeleteFailure.c b/e2sim/asn1c/RICsubscriptionDeleteFailure.c new file mode 100644 index 0000000..0dd2fa4 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDeleteFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionDeleteFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1 = { + sizeof(struct RICsubscriptionDeleteFailure), + offsetof(struct RICsubscriptionDeleteFailure, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure = { + "RICsubscriptionDeleteFailure", + "RICsubscriptionDeleteFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionDeleteFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionDeleteFailure.h b/e2sim/asn1c/RICsubscriptionDeleteFailure.h new file mode 100644 index 0000000..bd3d397 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDeleteFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionDeleteFailure_H_ +#define _RICsubscriptionDeleteFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteFailure */ +typedef struct RICsubscriptionDeleteFailure { + ProtocolIE_Container_85P5_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionDeleteRequest.c b/e2sim/asn1c/RICsubscriptionDeleteRequest.c new file mode 100644 index 0000000..e221243 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDeleteRequest.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionDeleteRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1 = { + sizeof(struct RICsubscriptionDeleteRequest), + offsetof(struct RICsubscriptionDeleteRequest, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest = { + "RICsubscriptionDeleteRequest", + "RICsubscriptionDeleteRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionDeleteRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionDeleteRequest.h b/e2sim/asn1c/RICsubscriptionDeleteRequest.h new file mode 100644 index 0000000..a0c7e97 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDeleteRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionDeleteRequest_H_ +#define _RICsubscriptionDeleteRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteRequest */ +typedef struct RICsubscriptionDeleteRequest { + ProtocolIE_Container_85P3_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteRequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionDeleteRequired.c b/e2sim/asn1c/RICsubscriptionDeleteRequired.c new file mode 100644 index 0000000..3d466e9 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDeleteRequired.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionDeleteRequired.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P6, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_specs_1 = { + sizeof(struct RICsubscriptionDeleteRequired), + offsetof(struct RICsubscriptionDeleteRequired, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired = { + "RICsubscriptionDeleteRequired", + "RICsubscriptionDeleteRequired", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequired_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionDeleteRequired_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequired_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionDeleteRequired.h b/e2sim/asn1c/RICsubscriptionDeleteRequired.h new file mode 100644 index 0000000..d7cf507 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDeleteRequired.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionDeleteRequired_H_ +#define _RICsubscriptionDeleteRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteRequired */ +typedef struct RICsubscriptionDeleteRequired { + ProtocolIE_Container_85P6_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteRequired_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionDeleteResponse.c b/e2sim/asn1c/RICsubscriptionDeleteResponse.c new file mode 100644 index 0000000..0ccef01 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDeleteResponse.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionDeleteResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P4, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1 = { + sizeof(struct RICsubscriptionDeleteResponse), + offsetof(struct RICsubscriptionDeleteResponse, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse = { + "RICsubscriptionDeleteResponse", + "RICsubscriptionDeleteResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionDeleteResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionDeleteResponse.h b/e2sim/asn1c/RICsubscriptionDeleteResponse.h new file mode 100644 index 0000000..6cffe8e --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDeleteResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionDeleteResponse_H_ +#define _RICsubscriptionDeleteResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteResponse */ +typedef struct RICsubscriptionDeleteResponse { + ProtocolIE_Container_85P4_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteResponse_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionDetails.c b/e2sim/asn1c/RICsubscriptionDetails.c new file mode 100644 index 0000000..3c393f6 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDetails.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionDetails.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDetails_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricEventTriggerDefinition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICeventTriggerDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricEventTriggerDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricAction_ToBeSetup_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactions_ToBeSetup_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricAction-ToBeSetup-List" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDetails_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDetails_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricEventTriggerDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricAction-ToBeSetup-List */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDetails_specs_1 = { + sizeof(struct RICsubscriptionDetails), + offsetof(struct RICsubscriptionDetails, _asn_ctx), + asn_MAP_RICsubscriptionDetails_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails = { + "RICsubscriptionDetails", + "RICsubscriptionDetails", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDetails_tags_1, + sizeof(asn_DEF_RICsubscriptionDetails_tags_1) + /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDetails_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDetails_tags_1) + /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionDetails_1, + 2, /* Elements count */ + &asn_SPC_RICsubscriptionDetails_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionDetails.h b/e2sim/asn1c/RICsubscriptionDetails.h new file mode 100644 index 0000000..3888495 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionDetails.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionDetails_H_ +#define _RICsubscriptionDetails_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICeventTriggerDefinition.h" +#include "RICactions-ToBeSetup-List.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDetails */ +typedef struct RICsubscriptionDetails { + RICeventTriggerDefinition_t ricEventTriggerDefinition; + RICactions_ToBeSetup_List_t ricAction_ToBeSetup_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDetails_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDetails_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDetails_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDetails_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionFailure.c b/e2sim/asn1c/RICsubscriptionFailure.c new file mode 100644 index 0000000..ea27bd9 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1 = { + sizeof(struct RICsubscriptionFailure), + offsetof(struct RICsubscriptionFailure, _asn_ctx), + asn_MAP_RICsubscriptionFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure = { + "RICsubscriptionFailure", + "RICsubscriptionFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionFailure.h b/e2sim/asn1c/RICsubscriptionFailure.h new file mode 100644 index 0000000..961ed47 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionFailure_H_ +#define _RICsubscriptionFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionFailure */ +typedef struct RICsubscriptionFailure { + ProtocolIE_Container_85P2_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionModificationConfirm.c b/e2sim/asn1c/RICsubscriptionModificationConfirm.c new file mode 100644 index 0000000..c5f9184 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationConfirm.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionModificationConfirm.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationConfirm_specs_1 = { + sizeof(struct RICsubscriptionModificationConfirm), + offsetof(struct RICsubscriptionModificationConfirm, _asn_ctx), + asn_MAP_RICsubscriptionModificationConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationConfirm = { + "RICsubscriptionModificationConfirm", + "RICsubscriptionModificationConfirm", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationConfirm_tags_1, + sizeof(asn_DEF_RICsubscriptionModificationConfirm_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationConfirm_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationConfirm_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationConfirm_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationConfirm_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionModificationConfirm_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionModificationConfirm.h b/e2sim/asn1c/RICsubscriptionModificationConfirm.h new file mode 100644 index 0000000..34e4733 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationConfirm.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionModificationConfirm_H_ +#define _RICsubscriptionModificationConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionModificationConfirm */ +typedef struct RICsubscriptionModificationConfirm { + ProtocolIE_Container_85P11_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationConfirm; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationConfirm_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationConfirm_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionModificationConfirm_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionModificationFailure.c b/e2sim/asn1c/RICsubscriptionModificationFailure.c new file mode 100644 index 0000000..60826db --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationFailure.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionModificationFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P9, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationFailure_specs_1 = { + sizeof(struct RICsubscriptionModificationFailure), + offsetof(struct RICsubscriptionModificationFailure, _asn_ctx), + asn_MAP_RICsubscriptionModificationFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationFailure = { + "RICsubscriptionModificationFailure", + "RICsubscriptionModificationFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionModificationFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationFailure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionModificationFailure_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionModificationFailure.h b/e2sim/asn1c/RICsubscriptionModificationFailure.h new file mode 100644 index 0000000..c295cde --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionModificationFailure_H_ +#define _RICsubscriptionModificationFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionModificationFailure */ +typedef struct RICsubscriptionModificationFailure { + ProtocolIE_Container_85P9_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionModificationFailure_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionModificationRefuse.c b/e2sim/asn1c/RICsubscriptionModificationRefuse.c new file mode 100644 index 0000000..74b446e --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationRefuse.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionModificationRefuse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRefuse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRefuse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P12, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationRefuse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationRefuse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRefuse_specs_1 = { + sizeof(struct RICsubscriptionModificationRefuse), + offsetof(struct RICsubscriptionModificationRefuse, _asn_ctx), + asn_MAP_RICsubscriptionModificationRefuse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRefuse = { + "RICsubscriptionModificationRefuse", + "RICsubscriptionModificationRefuse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationRefuse_tags_1, + sizeof(asn_DEF_RICsubscriptionModificationRefuse_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationRefuse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationRefuse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationRefuse_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationRefuse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationRefuse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionModificationRefuse_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionModificationRefuse.h b/e2sim/asn1c/RICsubscriptionModificationRefuse.h new file mode 100644 index 0000000..3a13257 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationRefuse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionModificationRefuse_H_ +#define _RICsubscriptionModificationRefuse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionModificationRefuse */ +typedef struct RICsubscriptionModificationRefuse { + ProtocolIE_Container_85P12_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationRefuse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRefuse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRefuse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRefuse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionModificationRefuse_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionModificationRequest.c b/e2sim/asn1c/RICsubscriptionModificationRequest.c new file mode 100644 index 0000000..a0247c3 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationRequest.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionModificationRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P7, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRequest_specs_1 = { + sizeof(struct RICsubscriptionModificationRequest), + offsetof(struct RICsubscriptionModificationRequest, _asn_ctx), + asn_MAP_RICsubscriptionModificationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRequest = { + "RICsubscriptionModificationRequest", + "RICsubscriptionModificationRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionModificationRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionModificationRequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionModificationRequest.h b/e2sim/asn1c/RICsubscriptionModificationRequest.h new file mode 100644 index 0000000..de69b50 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionModificationRequest_H_ +#define _RICsubscriptionModificationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionModificationRequest */ +typedef struct RICsubscriptionModificationRequest { + ProtocolIE_Container_85P7_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionModificationRequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionModificationRequired.c b/e2sim/asn1c/RICsubscriptionModificationRequired.c new file mode 100644 index 0000000..5d47c3e --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationRequired.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionModificationRequired.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P10, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRequired_specs_1 = { + sizeof(struct RICsubscriptionModificationRequired), + offsetof(struct RICsubscriptionModificationRequired, _asn_ctx), + asn_MAP_RICsubscriptionModificationRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRequired = { + "RICsubscriptionModificationRequired", + "RICsubscriptionModificationRequired", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationRequired_tags_1, + sizeof(asn_DEF_RICsubscriptionModificationRequired_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationRequired_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationRequired_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationRequired_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationRequired_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionModificationRequired_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionModificationRequired.h b/e2sim/asn1c/RICsubscriptionModificationRequired.h new file mode 100644 index 0000000..6b7805a --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationRequired.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionModificationRequired_H_ +#define _RICsubscriptionModificationRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionModificationRequired */ +typedef struct RICsubscriptionModificationRequired { + ProtocolIE_Container_85P10_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationRequired; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationRequired_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationRequired_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionModificationRequired_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionModificationResponse.c b/e2sim/asn1c/RICsubscriptionModificationResponse.c new file mode 100644 index 0000000..f2ab630 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationResponse.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionModificationResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionModificationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionModificationResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P8, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionModificationResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionModificationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationResponse_specs_1 = { + sizeof(struct RICsubscriptionModificationResponse), + offsetof(struct RICsubscriptionModificationResponse, _asn_ctx), + asn_MAP_RICsubscriptionModificationResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationResponse = { + "RICsubscriptionModificationResponse", + "RICsubscriptionModificationResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionModificationResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionModificationResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionModificationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionModificationResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionModificationResponse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionModificationResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionModificationResponse_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionModificationResponse.h b/e2sim/asn1c/RICsubscriptionModificationResponse.h new file mode 100644 index 0000000..68cadfe --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionModificationResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionModificationResponse_H_ +#define _RICsubscriptionModificationResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionModificationResponse */ +typedef struct RICsubscriptionModificationResponse { + ProtocolIE_Container_85P8_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionModificationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionModificationResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionModificationResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionModificationResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionModificationResponse_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionRequest.c b/e2sim/asn1c/RICsubscriptionRequest.c new file mode 100644 index 0000000..8814128 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionRequest.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P0, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1 = { + sizeof(struct RICsubscriptionRequest), + offsetof(struct RICsubscriptionRequest, _asn_ctx), + asn_MAP_RICsubscriptionRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest = { + "RICsubscriptionRequest", + "RICsubscriptionRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionRequest.h b/e2sim/asn1c/RICsubscriptionRequest.h new file mode 100644 index 0000000..4f7c9ae --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionRequest_H_ +#define _RICsubscriptionRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionRequest */ +typedef struct RICsubscriptionRequest { + ProtocolIE_Container_85P0_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionRequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionResponse.c b/e2sim/asn1c/RICsubscriptionResponse.c new file mode 100644 index 0000000..7b3aa4f --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionResponse.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1 = { + sizeof(struct RICsubscriptionResponse), + offsetof(struct RICsubscriptionResponse, _asn_ctx), + asn_MAP_RICsubscriptionResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse = { + "RICsubscriptionResponse", + "RICsubscriptionResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubscriptionResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionResponse.h b/e2sim/asn1c/RICsubscriptionResponse.h new file mode 100644 index 0000000..94deb29 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionResponse_H_ +#define _RICsubscriptionResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionResponse */ +typedef struct RICsubscriptionResponse { + ProtocolIE_Container_85P1_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionResponse_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubscriptionTime.c b/e2sim/asn1c/RICsubscriptionTime.c new file mode 100644 index 0000000..99f33f6 --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionTime.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubscriptionTime.h" + +int +RICsubscriptionTime_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICsubscriptionTime_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RICsubscriptionTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionTime = { + "RICsubscriptionTime", + "RICsubscriptionTime", + &asn_OP_OCTET_STRING, + asn_DEF_RICsubscriptionTime_tags_1, + sizeof(asn_DEF_RICsubscriptionTime_tags_1) + /sizeof(asn_DEF_RICsubscriptionTime_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionTime_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionTime_tags_1) + /sizeof(asn_DEF_RICsubscriptionTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICsubscriptionTime_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RICsubscriptionTime_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubscriptionTime.h b/e2sim/asn1c/RICsubscriptionTime.h new file mode 100644 index 0000000..8d4cdbf --- /dev/null +++ b/e2sim/asn1c/RICsubscriptionTime.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubscriptionTime_H_ +#define _RICsubscriptionTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionTime */ +typedef OCTET_STRING_t RICsubscriptionTime_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICsubscriptionTime_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionTime; +asn_struct_free_f RICsubscriptionTime_free; +asn_struct_print_f RICsubscriptionTime_print; +asn_constr_check_f RICsubscriptionTime_constraint; +ber_type_decoder_f RICsubscriptionTime_decode_ber; +der_type_encoder_f RICsubscriptionTime_encode_der; +xer_type_decoder_f RICsubscriptionTime_decode_xer; +xer_type_encoder_f RICsubscriptionTime_encode_xer; +jer_type_encoder_f RICsubscriptionTime_encode_jer; +per_type_decoder_f RICsubscriptionTime_decode_uper; +per_type_encoder_f RICsubscriptionTime_encode_uper; +per_type_decoder_f RICsubscriptionTime_decode_aper; +per_type_encoder_f RICsubscriptionTime_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionTime_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubsequentAction.c b/e2sim/asn1c/RICsubsequentAction.c new file mode 100644 index 0000000..a9bcda0 --- /dev/null +++ b/e2sim/asn1c/RICsubsequentAction.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubsequentAction.h" + +asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricSubsequentActionType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentActionType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricSubsequentActionType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricTimeToWait), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICtimeToWait, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ricTimeToWait" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubsequentAction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubsequentAction_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricSubsequentActionType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricTimeToWait */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1 = { + sizeof(struct RICsubsequentAction), + offsetof(struct RICsubsequentAction, _asn_ctx), + asn_MAP_RICsubsequentAction_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction = { + "RICsubsequentAction", + "RICsubsequentAction", + &asn_OP_SEQUENCE, + asn_DEF_RICsubsequentAction_tags_1, + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentAction_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RICsubsequentAction_1, + 2, /* Elements count */ + &asn_SPC_RICsubsequentAction_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubsequentAction.h b/e2sim/asn1c/RICsubsequentAction.h new file mode 100644 index 0000000..3968ab6 --- /dev/null +++ b/e2sim/asn1c/RICsubsequentAction.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubsequentAction_H_ +#define _RICsubsequentAction_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICsubsequentActionType.h" +#include "RICtimeToWait.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubsequentAction */ +typedef struct RICsubsequentAction { + RICsubsequentActionType_t ricSubsequentActionType; + RICtimeToWait_t ricTimeToWait; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubsequentAction_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentAction_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICsubsequentActionType.c b/e2sim/asn1c/RICsubsequentActionType.c new file mode 100644 index 0000000..95cdb53 --- /dev/null +++ b/e2sim/asn1c/RICsubsequentActionType.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICsubsequentActionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RICsubsequentActionType_value2enum_1[] = { + { 0, 8, "continue" }, + { 1, 4, "wait" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICsubsequentActionType_enum2value_1[] = { + 0, /* continue(0) */ + 1 /* wait(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1 = { + asn_MAP_RICsubsequentActionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICsubsequentActionType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICsubsequentActionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType = { + "RICsubsequentActionType", + "RICsubsequentActionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICsubsequentActionType_tags_1, + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentActionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICsubsequentActionType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICsubsequentActionType_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICsubsequentActionType.h b/e2sim/asn1c/RICsubsequentActionType.h new file mode 100644 index 0000000..cd668c9 --- /dev/null +++ b/e2sim/asn1c/RICsubsequentActionType.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICsubsequentActionType_H_ +#define _RICsubsequentActionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICsubsequentActionType { + RICsubsequentActionType_continue = 0, + RICsubsequentActionType_wait = 1 + /* + * Enumeration is extensible + */ +} e_RICsubsequentActionType; + +/* RICsubsequentActionType */ +typedef long RICsubsequentActionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1; +asn_struct_free_f RICsubsequentActionType_free; +asn_struct_print_f RICsubsequentActionType_print; +asn_constr_check_f RICsubsequentActionType_constraint; +ber_type_decoder_f RICsubsequentActionType_decode_ber; +der_type_encoder_f RICsubsequentActionType_encode_der; +xer_type_decoder_f RICsubsequentActionType_decode_xer; +xer_type_encoder_f RICsubsequentActionType_encode_xer; +jer_type_encoder_f RICsubsequentActionType_encode_jer; +per_type_decoder_f RICsubsequentActionType_decode_uper; +per_type_encoder_f RICsubsequentActionType_encode_uper; +per_type_decoder_f RICsubsequentActionType_decode_aper; +per_type_encoder_f RICsubsequentActionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentActionType_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RICtimeToWait.c b/e2sim/asn1c/RICtimeToWait.c new file mode 100644 index 0000000..bc5d07b --- /dev/null +++ b/e2sim/asn1c/RICtimeToWait.c @@ -0,0 +1,95 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RICtimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 16 } /* (0..16,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RICtimeToWait_value2enum_1[] = { + { 0, 4, "w1ms" }, + { 1, 4, "w2ms" }, + { 2, 4, "w5ms" }, + { 3, 5, "w10ms" }, + { 4, 5, "w20ms" }, + { 5, 5, "w30ms" }, + { 6, 5, "w40ms" }, + { 7, 5, "w50ms" }, + { 8, 6, "w100ms" }, + { 9, 6, "w200ms" }, + { 10, 6, "w500ms" }, + { 11, 3, "w1s" }, + { 12, 3, "w2s" }, + { 13, 3, "w5s" }, + { 14, 4, "w10s" }, + { 15, 4, "w20s" }, + { 16, 4, "w60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICtimeToWait_enum2value_1[] = { + 8, /* w100ms(8) */ + 3, /* w10ms(3) */ + 14, /* w10s(14) */ + 0, /* w1ms(0) */ + 11, /* w1s(11) */ + 9, /* w200ms(9) */ + 4, /* w20ms(4) */ + 15, /* w20s(15) */ + 1, /* w2ms(1) */ + 12, /* w2s(12) */ + 5, /* w30ms(5) */ + 6, /* w40ms(6) */ + 10, /* w500ms(10) */ + 7, /* w50ms(7) */ + 2, /* w5ms(2) */ + 13, /* w5s(13) */ + 16 /* w60s(16) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1 = { + asn_MAP_RICtimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICtimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 17, /* Number of elements in the maps */ + 18, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICtimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICtimeToWait = { + "RICtimeToWait", + "RICtimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_RICtimeToWait_tags_1, + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + asn_DEF_RICtimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RICtimeToWait_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICtimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RICtimeToWait.h b/e2sim/asn1c/RICtimeToWait.h new file mode 100644 index 0000000..566badf --- /dev/null +++ b/e2sim/asn1c/RICtimeToWait.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RICtimeToWait_H_ +#define _RICtimeToWait_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICtimeToWait { + RICtimeToWait_w1ms = 0, + RICtimeToWait_w2ms = 1, + RICtimeToWait_w5ms = 2, + RICtimeToWait_w10ms = 3, + RICtimeToWait_w20ms = 4, + RICtimeToWait_w30ms = 5, + RICtimeToWait_w40ms = 6, + RICtimeToWait_w50ms = 7, + RICtimeToWait_w100ms = 8, + RICtimeToWait_w200ms = 9, + RICtimeToWait_w500ms = 10, + RICtimeToWait_w1s = 11, + RICtimeToWait_w2s = 12, + RICtimeToWait_w5s = 13, + RICtimeToWait_w10s = 14, + RICtimeToWait_w20s = 15, + RICtimeToWait_w60s = 16 + /* + * Enumeration is extensible + */ +} e_RICtimeToWait; + +/* RICtimeToWait */ +typedef long RICtimeToWait_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICtimeToWait; +extern const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1; +asn_struct_free_f RICtimeToWait_free; +asn_struct_print_f RICtimeToWait_print; +asn_constr_check_f RICtimeToWait_constraint; +ber_type_decoder_f RICtimeToWait_decode_ber; +der_type_encoder_f RICtimeToWait_encode_der; +xer_type_decoder_f RICtimeToWait_decode_xer; +xer_type_encoder_f RICtimeToWait_encode_xer; +jer_type_encoder_f RICtimeToWait_encode_jer; +per_type_decoder_f RICtimeToWait_decode_uper; +per_type_encoder_f RICtimeToWait_encode_uper; +per_type_decoder_f RICtimeToWait_decode_aper; +per_type_encoder_f RICtimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICtimeToWait_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RRC-MessageID.c b/e2sim/asn1c/RRC-MessageID.c new file mode 100644 index 0000000..f4f8def --- /dev/null +++ b/e2sim/asn1c/RRC-MessageID.c @@ -0,0 +1,164 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RRC-MessageID.h" + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_rrcType_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_rrcType_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct RRC_MessageID__rrcType, choice.lTE), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRCclass_LTE, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lTE" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRC_MessageID__rrcType, choice.nR), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRCclass_NR, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nR" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_rrcType_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lTE */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nR */ +}; +static asn_CHOICE_specifics_t asn_SPC_rrcType_specs_2 = { + sizeof(struct RRC_MessageID__rrcType), + offsetof(struct RRC_MessageID__rrcType, _asn_ctx), + offsetof(struct RRC_MessageID__rrcType, present), + sizeof(((struct RRC_MessageID__rrcType *)0)->present), + asn_MAP_rrcType_tag2el_2, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_rrcType_2 = { + "rrcType", + "rrcType", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_rrcType_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_rrcType_2, + 2, /* Elements count */ + &asn_SPC_rrcType_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_RRC_MessageID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RRC_MessageID, rrcType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_rrcType_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rrcType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRC_MessageID, messageID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "messageID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RRC_MessageID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RRC_MessageID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RRC_MessageID_specs_1 = { + sizeof(struct RRC_MessageID), + offsetof(struct RRC_MessageID, _asn_ctx), + asn_MAP_RRC_MessageID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RRC_MessageID = { + "RRC-MessageID", + "RRC-MessageID", + &asn_OP_SEQUENCE, + asn_DEF_RRC_MessageID_tags_1, + sizeof(asn_DEF_RRC_MessageID_tags_1) + /sizeof(asn_DEF_RRC_MessageID_tags_1[0]), /* 1 */ + asn_DEF_RRC_MessageID_tags_1, /* Same as above */ + sizeof(asn_DEF_RRC_MessageID_tags_1) + /sizeof(asn_DEF_RRC_MessageID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RRC_MessageID_1, + 2, /* Elements count */ + &asn_SPC_RRC_MessageID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RRC-MessageID.h b/e2sim/asn1c/RRC-MessageID.h new file mode 100644 index 0000000..ee68714 --- /dev/null +++ b/e2sim/asn1c/RRC-MessageID.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RRC_MessageID_H_ +#define _RRC_MessageID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "RRCclass-LTE.h" +#include "RRCclass-NR.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RRC_MessageID__rrcType_PR { + RRC_MessageID__rrcType_PR_NOTHING, /* No components present */ + RRC_MessageID__rrcType_PR_lTE, + RRC_MessageID__rrcType_PR_nR + /* Extensions may appear below */ + +} RRC_MessageID__rrcType_PR; + +/* RRC-MessageID */ +typedef struct RRC_MessageID { + struct RRC_MessageID__rrcType { + RRC_MessageID__rrcType_PR present; + union RRC_MessageID__rrcType_u { + RRCclass_LTE_t lTE; + RRCclass_NR_t nR; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } rrcType; + long messageID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RRC_MessageID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RRC_MessageID; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRC_MessageID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RRCclass-LTE.c b/e2sim/asn1c/RRCclass-LTE.c new file mode 100644 index 0000000..c71940d --- /dev/null +++ b/e2sim/asn1c/RRCclass-LTE.c @@ -0,0 +1,85 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RRCclass-LTE.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RRCclass_LTE_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 11 } /* (0..11,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RRCclass_LTE_value2enum_1[] = { + { 0, 8, "bCCH-BCH" }, + { 1, 13, "bCCH-BCH-MBMS" }, + { 2, 11, "bCCH-DL-SCH" }, + { 3, 14, "bCCH-DL-SCH-BR" }, + { 4, 16, "bCCH-DL-SCH-MBMS" }, + { 5, 4, "mCCH" }, + { 6, 4, "pCCH" }, + { 7, 7, "dL-CCCH" }, + { 8, 7, "dL-DCCH" }, + { 9, 7, "uL-CCCH" }, + { 10, 7, "uL-DCCH" }, + { 11, 7, "sC-MCCH" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RRCclass_LTE_enum2value_1[] = { + 0, /* bCCH-BCH(0) */ + 1, /* bCCH-BCH-MBMS(1) */ + 2, /* bCCH-DL-SCH(2) */ + 3, /* bCCH-DL-SCH-BR(3) */ + 4, /* bCCH-DL-SCH-MBMS(4) */ + 7, /* dL-CCCH(7) */ + 8, /* dL-DCCH(8) */ + 5, /* mCCH(5) */ + 6, /* pCCH(6) */ + 11, /* sC-MCCH(11) */ + 9, /* uL-CCCH(9) */ + 10 /* uL-DCCH(10) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RRCclass_LTE_specs_1 = { + asn_MAP_RRCclass_LTE_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RRCclass_LTE_enum2value_1, /* N => "tag"; sorted by N */ + 12, /* Number of elements in the maps */ + 13, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RRCclass_LTE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRCclass_LTE = { + "RRCclass-LTE", + "RRCclass-LTE", + &asn_OP_NativeEnumerated, + asn_DEF_RRCclass_LTE_tags_1, + sizeof(asn_DEF_RRCclass_LTE_tags_1) + /sizeof(asn_DEF_RRCclass_LTE_tags_1[0]), /* 1 */ + asn_DEF_RRCclass_LTE_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCclass_LTE_tags_1) + /sizeof(asn_DEF_RRCclass_LTE_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RRCclass_LTE_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RRCclass_LTE_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RRCclass-LTE.h b/e2sim/asn1c/RRCclass-LTE.h new file mode 100644 index 0000000..509c015 --- /dev/null +++ b/e2sim/asn1c/RRCclass-LTE.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RRCclass_LTE_H_ +#define _RRCclass_LTE_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RRCclass_LTE { + RRCclass_LTE_bCCH_BCH = 0, + RRCclass_LTE_bCCH_BCH_MBMS = 1, + RRCclass_LTE_bCCH_DL_SCH = 2, + RRCclass_LTE_bCCH_DL_SCH_BR = 3, + RRCclass_LTE_bCCH_DL_SCH_MBMS = 4, + RRCclass_LTE_mCCH = 5, + RRCclass_LTE_pCCH = 6, + RRCclass_LTE_dL_CCCH = 7, + RRCclass_LTE_dL_DCCH = 8, + RRCclass_LTE_uL_CCCH = 9, + RRCclass_LTE_uL_DCCH = 10, + RRCclass_LTE_sC_MCCH = 11 + /* + * Enumeration is extensible + */ +} e_RRCclass_LTE; + +/* RRCclass-LTE */ +typedef long RRCclass_LTE_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RRCclass_LTE_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RRCclass_LTE; +extern const asn_INTEGER_specifics_t asn_SPC_RRCclass_LTE_specs_1; +asn_struct_free_f RRCclass_LTE_free; +asn_struct_print_f RRCclass_LTE_print; +asn_constr_check_f RRCclass_LTE_constraint; +ber_type_decoder_f RRCclass_LTE_decode_ber; +der_type_encoder_f RRCclass_LTE_encode_der; +xer_type_decoder_f RRCclass_LTE_decode_xer; +xer_type_encoder_f RRCclass_LTE_encode_xer; +jer_type_encoder_f RRCclass_LTE_encode_jer; +per_type_decoder_f RRCclass_LTE_decode_uper; +per_type_encoder_f RRCclass_LTE_encode_uper; +per_type_decoder_f RRCclass_LTE_decode_aper; +per_type_encoder_f RRCclass_LTE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCclass_LTE_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/RRCclass-NR.c b/e2sim/asn1c/RRCclass-NR.c new file mode 100644 index 0000000..090cecb --- /dev/null +++ b/e2sim/asn1c/RRCclass-NR.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "RRCclass-NR.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RRCclass_NR_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RRCclass_NR_value2enum_1[] = { + { 0, 8, "bCCH-BCH" }, + { 1, 11, "bCCH-DL-SCH" }, + { 2, 7, "dL-CCCH" }, + { 3, 7, "dL-DCCH" }, + { 4, 4, "pCCH" }, + { 5, 7, "uL-CCCH" }, + { 6, 8, "uL-CCCH1" }, + { 7, 7, "uL-DCCH" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RRCclass_NR_enum2value_1[] = { + 0, /* bCCH-BCH(0) */ + 1, /* bCCH-DL-SCH(1) */ + 2, /* dL-CCCH(2) */ + 3, /* dL-DCCH(3) */ + 4, /* pCCH(4) */ + 5, /* uL-CCCH(5) */ + 6, /* uL-CCCH1(6) */ + 7 /* uL-DCCH(7) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RRCclass_NR_specs_1 = { + asn_MAP_RRCclass_NR_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RRCclass_NR_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 9, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RRCclass_NR_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRCclass_NR = { + "RRCclass-NR", + "RRCclass-NR", + &asn_OP_NativeEnumerated, + asn_DEF_RRCclass_NR_tags_1, + sizeof(asn_DEF_RRCclass_NR_tags_1) + /sizeof(asn_DEF_RRCclass_NR_tags_1[0]), /* 1 */ + asn_DEF_RRCclass_NR_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCclass_NR_tags_1) + /sizeof(asn_DEF_RRCclass_NR_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RRCclass_NR_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RRCclass_NR_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/RRCclass-NR.h b/e2sim/asn1c/RRCclass-NR.h new file mode 100644 index 0000000..0189b97 --- /dev/null +++ b/e2sim/asn1c/RRCclass-NR.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _RRCclass_NR_H_ +#define _RRCclass_NR_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RRCclass_NR { + RRCclass_NR_bCCH_BCH = 0, + RRCclass_NR_bCCH_DL_SCH = 1, + RRCclass_NR_dL_CCCH = 2, + RRCclass_NR_dL_DCCH = 3, + RRCclass_NR_pCCH = 4, + RRCclass_NR_uL_CCCH = 5, + RRCclass_NR_uL_CCCH1 = 6, + RRCclass_NR_uL_DCCH = 7 + /* + * Enumeration is extensible + */ +} e_RRCclass_NR; + +/* RRCclass-NR */ +typedef long RRCclass_NR_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RRCclass_NR_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RRCclass_NR; +extern const asn_INTEGER_specifics_t asn_SPC_RRCclass_NR_specs_1; +asn_struct_free_f RRCclass_NR_free; +asn_struct_print_f RRCclass_NR_print; +asn_constr_check_f RRCclass_NR_constraint; +ber_type_decoder_f RRCclass_NR_decode_ber; +der_type_encoder_f RRCclass_NR_encode_der; +xer_type_decoder_f RRCclass_NR_decode_xer; +xer_type_encoder_f RRCclass_NR_encode_xer; +jer_type_encoder_f RRCclass_NR_encode_jer; +per_type_decoder_f RRCclass_NR_decode_uper; +per_type_encoder_f RRCclass_NR_encode_uper; +per_type_decoder_f RRCclass_NR_decode_aper; +per_type_encoder_f RRCclass_NR_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCclass_NR_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ResetRequest.c b/e2sim/asn1c/ResetRequest.c new file mode 100644 index 0000000..22b9ee0 --- /dev/null +++ b/e2sim/asn1c/ResetRequest.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ResetRequest.h" + +asn_TYPE_member_t asn_MBR_ResetRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P30, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1 = { + sizeof(struct ResetRequest), + offsetof(struct ResetRequest, _asn_ctx), + asn_MAP_ResetRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequest = { + "ResetRequest", + "ResetRequest", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequest_tags_1, + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + asn_DEF_ResetRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ResetRequest_1, + 1, /* Elements count */ + &asn_SPC_ResetRequest_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ResetRequest.h b/e2sim/asn1c/ResetRequest.h new file mode 100644 index 0000000..effaeff --- /dev/null +++ b/e2sim/asn1c/ResetRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ResetRequest_H_ +#define _ResetRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetRequest */ +typedef struct ResetRequest { + ProtocolIE_Container_85P30_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetRequest_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ResetResponse.c b/e2sim/asn1c/ResetResponse.c new file mode 100644 index 0000000..148db43 --- /dev/null +++ b/e2sim/asn1c/ResetResponse.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ResetResponse.h" + +asn_TYPE_member_t asn_MBR_ResetResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_85P31, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1 = { + sizeof(struct ResetResponse), + offsetof(struct ResetResponse, _asn_ctx), + asn_MAP_ResetResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponse = { + "ResetResponse", + "ResetResponse", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponse_tags_1, + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + asn_DEF_ResetResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ResetResponse_1, + 1, /* Elements count */ + &asn_SPC_ResetResponse_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ResetResponse.h b/e2sim/asn1c/ResetResponse.h new file mode 100644 index 0000000..f651d0e --- /dev/null +++ b/e2sim/asn1c/ResetResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "e2ap-pdu-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ResetResponse_H_ +#define _ResetResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetResponse */ +typedef struct ResetResponse { + ProtocolIE_Container_85P31_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetResponse_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/S-NSSAI.c b/e2sim/asn1c/S-NSSAI.c new file mode 100644 index 0000000..0a1d1b0 --- /dev/null +++ b/e2sim/asn1c/S-NSSAI.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "S-NSSAI.h" + +asn_TYPE_member_t asn_MBR_S_NSSAI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S_NSSAI, sST), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SST, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sST" + }, + { ATF_POINTER, 1, offsetof(struct S_NSSAI, sD), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SD, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sD" + }, +}; +static const int asn_MAP_S_NSSAI_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S_NSSAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S_NSSAI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sST */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sD */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S_NSSAI_specs_1 = { + sizeof(struct S_NSSAI), + offsetof(struct S_NSSAI, _asn_ctx), + asn_MAP_S_NSSAI_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S_NSSAI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S_NSSAI = { + "S-NSSAI", + "S-NSSAI", + &asn_OP_SEQUENCE, + asn_DEF_S_NSSAI_tags_1, + sizeof(asn_DEF_S_NSSAI_tags_1) + /sizeof(asn_DEF_S_NSSAI_tags_1[0]), /* 1 */ + asn_DEF_S_NSSAI_tags_1, /* Same as above */ + sizeof(asn_DEF_S_NSSAI_tags_1) + /sizeof(asn_DEF_S_NSSAI_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_S_NSSAI_1, + 2, /* Elements count */ + &asn_SPC_S_NSSAI_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/S-NSSAI.h b/e2sim/asn1c/S-NSSAI.h new file mode 100644 index 0000000..ef4df9a --- /dev/null +++ b/e2sim/asn1c/S-NSSAI.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _S_NSSAI_H_ +#define _S_NSSAI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SST.h" +#include "SD.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S-NSSAI */ +typedef struct S_NSSAI { + SST_t sST; + SD_t *sD; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S_NSSAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S_NSSAI; +extern asn_SEQUENCE_specifics_t asn_SPC_S_NSSAI_specs_1; +extern asn_TYPE_member_t asn_MBR_S_NSSAI_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S_NSSAI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/SD.c b/e2sim/asn1c/SD.c new file mode 100644 index 0000000..42fbbdd --- /dev/null +++ b/e2sim/asn1c/SD.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "SD.h" + +int +SD_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SD_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SD_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SD = { + "SD", + "SD", + &asn_OP_OCTET_STRING, + asn_DEF_SD_tags_1, + sizeof(asn_DEF_SD_tags_1) + /sizeof(asn_DEF_SD_tags_1[0]), /* 1 */ + asn_DEF_SD_tags_1, /* Same as above */ + sizeof(asn_DEF_SD_tags_1) + /sizeof(asn_DEF_SD_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SD_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SD_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/SD.h b/e2sim/asn1c/SD.h new file mode 100644 index 0000000..890cad1 --- /dev/null +++ b/e2sim/asn1c/SD.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _SD_H_ +#define _SD_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SD */ +typedef OCTET_STRING_t SD_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SD_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SD; +asn_struct_free_f SD_free; +asn_struct_print_f SD_print; +asn_constr_check_f SD_constraint; +ber_type_decoder_f SD_decode_ber; +der_type_encoder_f SD_encode_der; +xer_type_decoder_f SD_decode_xer; +xer_type_encoder_f SD_encode_xer; +jer_type_encoder_f SD_encode_jer; +per_type_decoder_f SD_decode_uper; +per_type_encoder_f SD_encode_uper; +per_type_decoder_f SD_decode_aper; +per_type_encoder_f SD_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SD_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/SST.c b/e2sim/asn1c/SST.c new file mode 100644 index 0000000..c332819 --- /dev/null +++ b/e2sim/asn1c/SST.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "SST.h" + +int +SST_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 1UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SST_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SST_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SST = { + "SST", + "SST", + &asn_OP_OCTET_STRING, + asn_DEF_SST_tags_1, + sizeof(asn_DEF_SST_tags_1) + /sizeof(asn_DEF_SST_tags_1[0]), /* 1 */ + asn_DEF_SST_tags_1, /* Same as above */ + sizeof(asn_DEF_SST_tags_1) + /sizeof(asn_DEF_SST_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SST_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SST_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/SST.h b/e2sim/asn1c/SST.h new file mode 100644 index 0000000..4aae722 --- /dev/null +++ b/e2sim/asn1c/SST.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _SST_H_ +#define _SST_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SST */ +typedef OCTET_STRING_t SST_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SST_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SST; +asn_struct_free_f SST_free; +asn_struct_print_f SST_print; +asn_constr_check_f SST_constraint; +ber_type_decoder_f SST_decode_ber; +der_type_encoder_f SST_encode_der; +xer_type_decoder_f SST_decode_xer; +xer_type_encoder_f SST_encode_xer; +jer_type_encoder_f SST_encode_jer; +per_type_decoder_f SST_decode_uper; +per_type_encoder_f SST_encode_uper; +per_type_decoder_f SST_decode_aper; +per_type_encoder_f SST_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SST_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ServingCell-ARFCN.c b/e2sim/asn1c/ServingCell-ARFCN.c new file mode 100644 index 0000000..a8deec8 --- /dev/null +++ b/e2sim/asn1c/ServingCell-ARFCN.c @@ -0,0 +1,89 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ServingCell-ARFCN.h" + +#include "NR-ARFCN.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ServingCell_ARFCN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_ServingCell_ARFCN_1[] = { + { ATF_POINTER, 0, offsetof(struct ServingCell_ARFCN, choice.nR), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_ARFCN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nR" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServingCell_ARFCN, choice.eUTRA), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_UTRA_ARFCN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eUTRA" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ServingCell_ARFCN_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRA */ +}; +static asn_CHOICE_specifics_t asn_SPC_ServingCell_ARFCN_specs_1 = { + sizeof(struct ServingCell_ARFCN), + offsetof(struct ServingCell_ARFCN, _asn_ctx), + offsetof(struct ServingCell_ARFCN, present), + sizeof(((struct ServingCell_ARFCN *)0)->present), + asn_MAP_ServingCell_ARFCN_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ServingCell_ARFCN = { + "ServingCell-ARFCN", + "ServingCell-ARFCN", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ServingCell_ARFCN_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_ServingCell_ARFCN_1, + 2, /* Elements count */ + &asn_SPC_ServingCell_ARFCN_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ServingCell-ARFCN.h b/e2sim/asn1c/ServingCell-ARFCN.h new file mode 100644 index 0000000..252e501 --- /dev/null +++ b/e2sim/asn1c/ServingCell-ARFCN.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ServingCell_ARFCN_H_ +#define _ServingCell_ARFCN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-UTRA-ARFCN.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ServingCell_ARFCN_PR { + ServingCell_ARFCN_PR_NOTHING, /* No components present */ + ServingCell_ARFCN_PR_nR, + ServingCell_ARFCN_PR_eUTRA + /* Extensions may appear below */ + +} ServingCell_ARFCN_PR; + +/* Forward declarations */ +struct NR_ARFCN; + +/* ServingCell-ARFCN */ +typedef struct ServingCell_ARFCN { + ServingCell_ARFCN_PR present; + union ServingCell_ARFCN_u { + struct NR_ARFCN *nR; + E_UTRA_ARFCN_t eUTRA; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServingCell_ARFCN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServingCell_ARFCN; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServingCell_ARFCN_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/ServingCell-PCI.c b/e2sim/asn1c/ServingCell-PCI.c new file mode 100644 index 0000000..a49fcd5 --- /dev/null +++ b/e2sim/asn1c/ServingCell-PCI.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "ServingCell-PCI.h" + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ServingCell_PCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_ServingCell_PCI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServingCell_PCI, choice.nR), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_PCI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nR" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServingCell_PCI, choice.eUTRA), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_UTRA_PCI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eUTRA" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ServingCell_PCI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRA */ +}; +static asn_CHOICE_specifics_t asn_SPC_ServingCell_PCI_specs_1 = { + sizeof(struct ServingCell_PCI), + offsetof(struct ServingCell_PCI, _asn_ctx), + offsetof(struct ServingCell_PCI, present), + sizeof(((struct ServingCell_PCI *)0)->present), + asn_MAP_ServingCell_PCI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ServingCell_PCI = { + "ServingCell-PCI", + "ServingCell-PCI", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ServingCell_PCI_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_ServingCell_PCI_1, + 2, /* Elements count */ + &asn_SPC_ServingCell_PCI_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/ServingCell-PCI.h b/e2sim/asn1c/ServingCell-PCI.h new file mode 100644 index 0000000..d0b24c4 --- /dev/null +++ b/e2sim/asn1c/ServingCell-PCI.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _ServingCell_PCI_H_ +#define _ServingCell_PCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NR-PCI.h" +#include "E-UTRA-PCI.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ServingCell_PCI_PR { + ServingCell_PCI_PR_NOTHING, /* No components present */ + ServingCell_PCI_PR_nR, + ServingCell_PCI_PR_eUTRA + /* Extensions may appear below */ + +} ServingCell_PCI_PR; + +/* ServingCell-PCI */ +typedef struct ServingCell_PCI { + ServingCell_PCI_PR present; + union ServingCell_PCI_u { + NR_PCI_t nR; + E_UTRA_PCI_t eUTRA; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServingCell_PCI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServingCell_PCI; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServingCell_PCI_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/SubscriberProfileIDforRFP.c b/e2sim/asn1c/SubscriberProfileIDforRFP.c new file mode 100644 index 0000000..379f10b --- /dev/null +++ b/e2sim/asn1c/SubscriberProfileIDforRFP.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "SubscriberProfileIDforRFP.h" + +int +SubscriberProfileIDforRFP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 256L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_SubscriberProfileIDforRFP_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (1..256) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SubscriberProfileIDforRFP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubscriberProfileIDforRFP = { + "SubscriberProfileIDforRFP", + "SubscriberProfileIDforRFP", + &asn_OP_NativeInteger, + asn_DEF_SubscriberProfileIDforRFP_tags_1, + sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1) + /sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */ + asn_DEF_SubscriberProfileIDforRFP_tags_1, /* Same as above */ + sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1) + /sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SubscriberProfileIDforRFP_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SubscriberProfileIDforRFP_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/SubscriberProfileIDforRFP.h b/e2sim/asn1c/SubscriberProfileIDforRFP.h new file mode 100644 index 0000000..9a0c5cd --- /dev/null +++ b/e2sim/asn1c/SubscriberProfileIDforRFP.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _SubscriberProfileIDforRFP_H_ +#define _SubscriberProfileIDforRFP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SubscriberProfileIDforRFP */ +typedef long SubscriberProfileIDforRFP_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubscriberProfileIDforRFP; +asn_struct_free_f SubscriberProfileIDforRFP_free; +asn_struct_print_f SubscriberProfileIDforRFP_print; +asn_constr_check_f SubscriberProfileIDforRFP_constraint; +ber_type_decoder_f SubscriberProfileIDforRFP_decode_ber; +der_type_encoder_f SubscriberProfileIDforRFP_encode_der; +xer_type_decoder_f SubscriberProfileIDforRFP_decode_xer; +xer_type_encoder_f SubscriberProfileIDforRFP_encode_xer; +jer_type_encoder_f SubscriberProfileIDforRFP_encode_jer; +per_type_decoder_f SubscriberProfileIDforRFP_decode_uper; +per_type_encoder_f SubscriberProfileIDforRFP_encode_uper; +per_type_decoder_f SubscriberProfileIDforRFP_decode_aper; +per_type_encoder_f SubscriberProfileIDforRFP_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubscriberProfileIDforRFP_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/SuccessfulOutcome.c b/e2sim/asn1c/SuccessfulOutcome.c new file mode 100644 index 0000000..6b04791 --- /dev/null +++ b/e2sim/asn1c/SuccessfulOutcome.c @@ -0,0 +1,610 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "e2ap-epd-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "SuccessfulOutcome.h" + +static const long asn_VAL_1_id_RICsubscription = 8; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_RICsubscriptionDelete = 9; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_RICsubscriptionModification = 14; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_RICsubscriptionModificationRequired = 15; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_RICquery = 16; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_RICserviceUpdate = 7; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_RICcontrol = 4; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_8_id_E2setup = 1; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_9_id_E2nodeConfigurationUpdate = 10; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_10_id_E2connectionUpdate = 11; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_11_id_Reset = 3; +static const long asn_VAL_11_reject = 0; +static const long asn_VAL_12_id_E2removal = 13; +static const long asn_VAL_12_reject = 0; +static const long asn_VAL_13_id_RICindication = 5; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_14_id_RICserviceQuery = 6; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_15_id_ErrorIndication = 2; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_16_id_RICsubscriptionDeleteRequired = 12; +static const long asn_VAL_16_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionModificationRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICsubscriptionModification }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionModificationRequired }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationConfirm }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationRefuse }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICsubscriptionModificationRequired }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICQueryRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICQueryResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICQueryFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_RICquery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_RICserviceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICcontrol }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_E2setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2nodeConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_E2nodeConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2connectionUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_E2connectionUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2RemovalRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2RemovalResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2RemovalFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_E2removal }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_13_id_RICindication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_14_id_RICserviceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_15_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequired }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_16_id_RICsubscriptionDeleteRequired }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 16, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 1; /* &SuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionDeleteResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionModificationResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationResponse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionModificationResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionModificationConfirm), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationConfirm, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionModificationConfirm" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICQueryResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICQueryResponse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICQueryResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICserviceUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICserviceUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICcontrolAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcontrolAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2setupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupResponse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2setupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2nodeConfigurationUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeConfigurationUpdateAcknowledge, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeConfigurationUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2connectionUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdateAcknowledge, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResetResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ResetResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2RemovalResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2RemovalResponse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2RemovalResponse" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 11 }, /* RICsubscriptionResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 10 }, /* RICsubscriptionDeleteResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 9 }, /* RICsubscriptionModificationResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 8 }, /* RICsubscriptionModificationConfirm */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 7 }, /* RICQueryResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 6 }, /* RICserviceUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 5 }, /* RICcontrolAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 4 }, /* E2setupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 3 }, /* E2nodeConfigurationUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 2 }, /* E2connectionUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 1 }, /* ResetResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -11, 0 } /* E2RemovalResponse */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct SuccessfulOutcome__value), + offsetof(struct SuccessfulOutcome__value, _asn_ctx), + offsetof(struct SuccessfulOutcome__value, present), + sizeof(((struct SuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 12, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_4, + 12, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_procedureCode_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_procedureCode_constraint_1 + }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SuccessfulOutcome_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_1 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_SuccessfulOutcome_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_1 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = { + sizeof(struct SuccessfulOutcome), + offsetof(struct SuccessfulOutcome, _asn_ctx), + asn_MAP_SuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = { + "SuccessfulOutcome", + "SuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_SuccessfulOutcome_tags_1, + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/SuccessfulOutcome.h b/e2sim/asn1c/SuccessfulOutcome.h new file mode 100644 index 0000000..c1676f2 --- /dev/null +++ b/e2sim/asn1c/SuccessfulOutcome.h @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "e2ap-epd-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _SuccessfulOutcome_H_ +#define _SuccessfulOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICsubscriptionModificationRequest.h" +#include "RICsubscriptionModificationResponse.h" +#include "RICsubscriptionModificationFailure.h" +#include "RICsubscriptionModificationRequired.h" +#include "RICsubscriptionModificationConfirm.h" +#include "RICsubscriptionModificationRefuse.h" +#include "RICQueryRequest.h" +#include "RICQueryResponse.h" +#include "RICQueryFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "E2setupRequest.h" +#include "E2setupResponse.h" +#include "E2setupFailure.h" +#include "E2nodeConfigurationUpdate.h" +#include "E2nodeConfigurationUpdateAcknowledge.h" +#include "E2nodeConfigurationUpdateFailure.h" +#include "E2connectionUpdate.h" +#include "E2connectionUpdateAcknowledge.h" +#include "E2connectionUpdateFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "E2RemovalRequest.h" +#include "E2RemovalResponse.h" +#include "E2RemovalFailure.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "ErrorIndication.h" +#include "RICsubscriptionDeleteRequired.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SuccessfulOutcome__value_PR { + SuccessfulOutcome__value_PR_NOTHING, /* No components present */ + SuccessfulOutcome__value_PR_RICsubscriptionResponse, + SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse, + SuccessfulOutcome__value_PR_RICsubscriptionModificationResponse, + SuccessfulOutcome__value_PR_RICsubscriptionModificationConfirm, + SuccessfulOutcome__value_PR_RICQueryResponse, + SuccessfulOutcome__value_PR_RICserviceUpdateAcknowledge, + SuccessfulOutcome__value_PR_RICcontrolAcknowledge, + SuccessfulOutcome__value_PR_E2setupResponse, + SuccessfulOutcome__value_PR_E2nodeConfigurationUpdateAcknowledge, + SuccessfulOutcome__value_PR_E2connectionUpdateAcknowledge, + SuccessfulOutcome__value_PR_ResetResponse, + SuccessfulOutcome__value_PR_E2RemovalResponse +} SuccessfulOutcome__value_PR; + +/* SuccessfulOutcome */ +typedef struct SuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct SuccessfulOutcome__value { + SuccessfulOutcome__value_PR present; + union SuccessfulOutcome__value_u { + RICsubscriptionResponse_t RICsubscriptionResponse; + RICsubscriptionDeleteResponse_t RICsubscriptionDeleteResponse; + RICsubscriptionModificationResponse_t RICsubscriptionModificationResponse; + RICsubscriptionModificationConfirm_t RICsubscriptionModificationConfirm; + RICQueryResponse_t RICQueryResponse; + RICserviceUpdateAcknowledge_t RICserviceUpdateAcknowledge; + RICcontrolAcknowledge_t RICcontrolAcknowledge; + E2setupResponse_t E2setupResponse; + E2nodeConfigurationUpdateAcknowledge_t E2nodeConfigurationUpdateAcknowledge; + E2connectionUpdateAcknowledge_t E2connectionUpdateAcknowledge; + ResetResponse_t ResetResponse; + E2RemovalResponse_t E2RemovalResponse; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SuccessfulOutcome_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/SupportedSULBandList.c b/e2sim/asn1c/SupportedSULBandList.c new file mode 100644 index 0000000..256524b --- /dev/null +++ b/e2sim/asn1c/SupportedSULBandList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "SupportedSULBandList.h" + +#include "SupportedSULFreqBandItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SupportedSULBandList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SupportedSULBandList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SupportedSULFreqBandItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SupportedSULBandList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SupportedSULBandList_specs_1 = { + sizeof(struct SupportedSULBandList), + offsetof(struct SupportedSULBandList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SupportedSULBandList = { + "SupportedSULBandList", + "SupportedSULBandList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SupportedSULBandList_tags_1, + sizeof(asn_DEF_SupportedSULBandList_tags_1) + /sizeof(asn_DEF_SupportedSULBandList_tags_1[0]), /* 1 */ + asn_DEF_SupportedSULBandList_tags_1, /* Same as above */ + sizeof(asn_DEF_SupportedSULBandList_tags_1) + /sizeof(asn_DEF_SupportedSULBandList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SupportedSULBandList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SupportedSULBandList_1, + 1, /* Single element */ + &asn_SPC_SupportedSULBandList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/SupportedSULBandList.h b/e2sim/asn1c/SupportedSULBandList.h new file mode 100644 index 0000000..9a799f9 --- /dev/null +++ b/e2sim/asn1c/SupportedSULBandList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _SupportedSULBandList_H_ +#define _SupportedSULBandList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SupportedSULFreqBandItem; + +/* SupportedSULBandList */ +typedef struct SupportedSULBandList { + A_SEQUENCE_OF(struct SupportedSULFreqBandItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SupportedSULBandList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SupportedSULBandList; +extern asn_SET_OF_specifics_t asn_SPC_SupportedSULBandList_specs_1; +extern asn_TYPE_member_t asn_MBR_SupportedSULBandList_1[1]; +extern asn_per_constraints_t asn_PER_type_SupportedSULBandList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SupportedSULBandList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/SupportedSULFreqBandItem.c b/e2sim/asn1c/SupportedSULFreqBandItem.c new file mode 100644 index 0000000..a931733 --- /dev/null +++ b/e2sim/asn1c/SupportedSULFreqBandItem.c @@ -0,0 +1,98 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "SupportedSULFreqBandItem.h" + +static int +memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1L && value <= 1024L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1024 } /* (1..1024,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem, freqBandIndicatorNr), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_freqBandIndicatorNr_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_freqBandIndicatorNr_constraint_1 + }, + 0, 0, /* No default value */ + "freqBandIndicatorNr" + }, +}; +static const ber_tlv_tag_t asn_DEF_SupportedSULFreqBandItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SupportedSULFreqBandItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* freqBandIndicatorNr */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_specs_1 = { + sizeof(struct SupportedSULFreqBandItem), + offsetof(struct SupportedSULFreqBandItem, _asn_ctx), + asn_MAP_SupportedSULFreqBandItem_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem = { + "SupportedSULFreqBandItem", + "SupportedSULFreqBandItem", + &asn_OP_SEQUENCE, + asn_DEF_SupportedSULFreqBandItem_tags_1, + sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1) + /sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1[0]), /* 1 */ + asn_DEF_SupportedSULFreqBandItem_tags_1, /* Same as above */ + sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1) + /sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SupportedSULFreqBandItem_1, + 1, /* Elements count */ + &asn_SPC_SupportedSULFreqBandItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/SupportedSULFreqBandItem.h b/e2sim/asn1c/SupportedSULFreqBandItem.h new file mode 100644 index 0000000..98773fa --- /dev/null +++ b/e2sim/asn1c/SupportedSULFreqBandItem.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _SupportedSULFreqBandItem_H_ +#define _SupportedSULFreqBandItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SupportedSULFreqBandItem */ +typedef struct SupportedSULFreqBandItem { + long freqBandIndicatorNr; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SupportedSULFreqBandItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem; +extern asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_specs_1; +extern asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SupportedSULFreqBandItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TNLinformation.c b/e2sim/asn1c/TNLinformation.c new file mode 100644 index 0000000..a59fde9 --- /dev/null +++ b/e2sim/asn1c/TNLinformation.c @@ -0,0 +1,162 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TNLinformation.h" + +static int +memb_tnlAddress_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1UL && size <= 160UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_tnlPort_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_tnlAddress_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 160 } /* (SIZE(1..160,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_tnlPort_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_TNLinformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TNLinformation, tnlAddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_tnlAddress_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_tnlAddress_constraint_1 + }, + 0, 0, /* No default value */ + "tnlAddress" + }, + { ATF_POINTER, 1, offsetof(struct TNLinformation, tnlPort), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_tnlPort_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_tnlPort_constraint_1 + }, + 0, 0, /* No default value */ + "tnlPort" + }, +}; +static const int asn_MAP_TNLinformation_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TNLinformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TNLinformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlAddress */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tnlPort */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TNLinformation_specs_1 = { + sizeof(struct TNLinformation), + offsetof(struct TNLinformation, _asn_ctx), + asn_MAP_TNLinformation_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TNLinformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TNLinformation = { + "TNLinformation", + "TNLinformation", + &asn_OP_SEQUENCE, + asn_DEF_TNLinformation_tags_1, + sizeof(asn_DEF_TNLinformation_tags_1) + /sizeof(asn_DEF_TNLinformation_tags_1[0]), /* 1 */ + asn_DEF_TNLinformation_tags_1, /* Same as above */ + sizeof(asn_DEF_TNLinformation_tags_1) + /sizeof(asn_DEF_TNLinformation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TNLinformation_1, + 2, /* Elements count */ + &asn_SPC_TNLinformation_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TNLinformation.h b/e2sim/asn1c/TNLinformation.h new file mode 100644 index 0000000..c83f354 --- /dev/null +++ b/e2sim/asn1c/TNLinformation.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TNLinformation_H_ +#define _TNLinformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TNLinformation */ +typedef struct TNLinformation { + BIT_STRING_t tnlAddress; + BIT_STRING_t *tnlPort; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TNLinformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TNLinformation; +extern asn_SEQUENCE_specifics_t asn_SPC_TNLinformation_specs_1; +extern asn_TYPE_member_t asn_MBR_TNLinformation_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TNLinformation_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TNLusage.c b/e2sim/asn1c/TNLusage.c new file mode 100644 index 0000000..e8a166e --- /dev/null +++ b/e2sim/asn1c/TNLusage.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TNLusage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TNLusage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TNLusage_value2enum_1[] = { + { 0, 11, "ric-service" }, + { 1, 16, "support-function" }, + { 2, 4, "both" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TNLusage_enum2value_1[] = { + 2, /* both(2) */ + 0, /* ric-service(0) */ + 1 /* support-function(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TNLusage_specs_1 = { + asn_MAP_TNLusage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TNLusage_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TNLusage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TNLusage = { + "TNLusage", + "TNLusage", + &asn_OP_NativeEnumerated, + asn_DEF_TNLusage_tags_1, + sizeof(asn_DEF_TNLusage_tags_1) + /sizeof(asn_DEF_TNLusage_tags_1[0]), /* 1 */ + asn_DEF_TNLusage_tags_1, /* Same as above */ + sizeof(asn_DEF_TNLusage_tags_1) + /sizeof(asn_DEF_TNLusage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TNLusage_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TNLusage_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TNLusage.h b/e2sim/asn1c/TNLusage.h new file mode 100644 index 0000000..9bb8807 --- /dev/null +++ b/e2sim/asn1c/TNLusage.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TNLusage_H_ +#define _TNLusage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TNLusage { + TNLusage_ric_service = 0, + TNLusage_support_function = 1, + TNLusage_both = 2 + /* + * Enumeration is extensible + */ +} e_TNLusage; + +/* TNLusage */ +typedef long TNLusage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TNLusage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TNLusage; +extern const asn_INTEGER_specifics_t asn_SPC_TNLusage_specs_1; +asn_struct_free_f TNLusage_free; +asn_struct_print_f TNLusage_print; +asn_constr_check_f TNLusage_constraint; +ber_type_decoder_f TNLusage_decode_ber; +der_type_encoder_f TNLusage_encode_der; +xer_type_decoder_f TNLusage_decode_xer; +xer_type_encoder_f TNLusage_encode_xer; +jer_type_encoder_f TNLusage_encode_jer; +per_type_decoder_f TNLusage_decode_uper; +per_type_encoder_f TNLusage_encode_uper; +per_type_decoder_f TNLusage_decode_aper; +per_type_encoder_f TNLusage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TNLusage_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TestCond-Expression.c b/e2sim/asn1c/TestCond-Expression.c new file mode 100644 index 0000000..7525be5 --- /dev/null +++ b/e2sim/asn1c/TestCond-Expression.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TestCond-Expression.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TestCond_Expression_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TestCond_Expression_value2enum_1[] = { + { 0, 5, "equal" }, + { 1, 11, "greaterthan" }, + { 2, 8, "lessthan" }, + { 3, 8, "contains" }, + { 4, 7, "present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TestCond_Expression_enum2value_1[] = { + 3, /* contains(3) */ + 0, /* equal(0) */ + 1, /* greaterthan(1) */ + 2, /* lessthan(2) */ + 4 /* present(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TestCond_Expression_specs_1 = { + asn_MAP_TestCond_Expression_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TestCond_Expression_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TestCond_Expression_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TestCond_Expression = { + "TestCond-Expression", + "TestCond-Expression", + &asn_OP_NativeEnumerated, + asn_DEF_TestCond_Expression_tags_1, + sizeof(asn_DEF_TestCond_Expression_tags_1) + /sizeof(asn_DEF_TestCond_Expression_tags_1[0]), /* 1 */ + asn_DEF_TestCond_Expression_tags_1, /* Same as above */ + sizeof(asn_DEF_TestCond_Expression_tags_1) + /sizeof(asn_DEF_TestCond_Expression_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TestCond_Expression_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TestCond_Expression_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TestCond-Expression.h b/e2sim/asn1c/TestCond-Expression.h new file mode 100644 index 0000000..0f39077 --- /dev/null +++ b/e2sim/asn1c/TestCond-Expression.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TestCond_Expression_H_ +#define _TestCond_Expression_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TestCond_Expression { + TestCond_Expression_equal = 0, + TestCond_Expression_greaterthan = 1, + TestCond_Expression_lessthan = 2, + TestCond_Expression_contains = 3, + TestCond_Expression_present = 4 + /* + * Enumeration is extensible + */ +} e_TestCond_Expression; + +/* TestCond-Expression */ +typedef long TestCond_Expression_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TestCond_Expression_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TestCond_Expression; +extern const asn_INTEGER_specifics_t asn_SPC_TestCond_Expression_specs_1; +asn_struct_free_f TestCond_Expression_free; +asn_struct_print_f TestCond_Expression_print; +asn_constr_check_f TestCond_Expression_constraint; +ber_type_decoder_f TestCond_Expression_decode_ber; +der_type_encoder_f TestCond_Expression_encode_der; +xer_type_decoder_f TestCond_Expression_decode_xer; +xer_type_encoder_f TestCond_Expression_encode_xer; +jer_type_encoder_f TestCond_Expression_encode_jer; +per_type_decoder_f TestCond_Expression_decode_uper; +per_type_encoder_f TestCond_Expression_encode_uper; +per_type_decoder_f TestCond_Expression_decode_aper; +per_type_encoder_f TestCond_Expression_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TestCond_Expression_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TestCond-Type.c b/e2sim/asn1c/TestCond-Type.c new file mode 100644 index 0000000..1a6c9a5 --- /dev/null +++ b/e2sim/asn1c/TestCond-Type.c @@ -0,0 +1,866 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TestCond-Type.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_gBR_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_aMBR_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_isStat_constr_8 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_isCatM_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_rSRP_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_rSRQ_constr_17 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ul_rSRP_constr_21 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_cQI_constr_24 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_fiveQI_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_qCI_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_sNSSAI_constr_33 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TestCond_Type_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_gBR_value2enum_2[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_gBR_enum2value_2[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_gBR_specs_2 = { + asn_MAP_gBR_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_gBR_enum2value_2, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_gBR_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_gBR_2 = { + "gBR", + "gBR", + &asn_OP_NativeEnumerated, + asn_DEF_gBR_tags_2, + sizeof(asn_DEF_gBR_tags_2) + /sizeof(asn_DEF_gBR_tags_2[0]) - 1, /* 1 */ + asn_DEF_gBR_tags_2, /* Same as above */ + sizeof(asn_DEF_gBR_tags_2) + /sizeof(asn_DEF_gBR_tags_2[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_gBR_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_gBR_specs_2 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_aMBR_value2enum_5[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_aMBR_enum2value_5[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_aMBR_specs_5 = { + asn_MAP_aMBR_value2enum_5, /* "tag" => N; sorted by tag */ + asn_MAP_aMBR_enum2value_5, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_aMBR_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_aMBR_5 = { + "aMBR", + "aMBR", + &asn_OP_NativeEnumerated, + asn_DEF_aMBR_tags_5, + sizeof(asn_DEF_aMBR_tags_5) + /sizeof(asn_DEF_aMBR_tags_5[0]) - 1, /* 1 */ + asn_DEF_aMBR_tags_5, /* Same as above */ + sizeof(asn_DEF_aMBR_tags_5) + /sizeof(asn_DEF_aMBR_tags_5[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_aMBR_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_aMBR_specs_5 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_isStat_value2enum_8[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_isStat_enum2value_8[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_isStat_specs_8 = { + asn_MAP_isStat_value2enum_8, /* "tag" => N; sorted by tag */ + asn_MAP_isStat_enum2value_8, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_isStat_tags_8[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_isStat_8 = { + "isStat", + "isStat", + &asn_OP_NativeEnumerated, + asn_DEF_isStat_tags_8, + sizeof(asn_DEF_isStat_tags_8) + /sizeof(asn_DEF_isStat_tags_8[0]) - 1, /* 1 */ + asn_DEF_isStat_tags_8, /* Same as above */ + sizeof(asn_DEF_isStat_tags_8) + /sizeof(asn_DEF_isStat_tags_8[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_isStat_constr_8, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_isStat_specs_8 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_isCatM_value2enum_11[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_isCatM_enum2value_11[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_isCatM_specs_11 = { + asn_MAP_isCatM_value2enum_11, /* "tag" => N; sorted by tag */ + asn_MAP_isCatM_enum2value_11, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_isCatM_tags_11[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_isCatM_11 = { + "isCatM", + "isCatM", + &asn_OP_NativeEnumerated, + asn_DEF_isCatM_tags_11, + sizeof(asn_DEF_isCatM_tags_11) + /sizeof(asn_DEF_isCatM_tags_11[0]) - 1, /* 1 */ + asn_DEF_isCatM_tags_11, /* Same as above */ + sizeof(asn_DEF_isCatM_tags_11) + /sizeof(asn_DEF_isCatM_tags_11[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_isCatM_constr_11, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_isCatM_specs_11 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_rSRP_value2enum_14[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_rSRP_enum2value_14[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_rSRP_specs_14 = { + asn_MAP_rSRP_value2enum_14, /* "tag" => N; sorted by tag */ + asn_MAP_rSRP_enum2value_14, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_rSRP_tags_14[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_rSRP_14 = { + "rSRP", + "rSRP", + &asn_OP_NativeEnumerated, + asn_DEF_rSRP_tags_14, + sizeof(asn_DEF_rSRP_tags_14) + /sizeof(asn_DEF_rSRP_tags_14[0]) - 1, /* 1 */ + asn_DEF_rSRP_tags_14, /* Same as above */ + sizeof(asn_DEF_rSRP_tags_14) + /sizeof(asn_DEF_rSRP_tags_14[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_rSRP_constr_14, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_rSRP_specs_14 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_rSRQ_value2enum_17[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_rSRQ_enum2value_17[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_rSRQ_specs_17 = { + asn_MAP_rSRQ_value2enum_17, /* "tag" => N; sorted by tag */ + asn_MAP_rSRQ_enum2value_17, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_rSRQ_tags_17[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_rSRQ_17 = { + "rSRQ", + "rSRQ", + &asn_OP_NativeEnumerated, + asn_DEF_rSRQ_tags_17, + sizeof(asn_DEF_rSRQ_tags_17) + /sizeof(asn_DEF_rSRQ_tags_17[0]) - 1, /* 1 */ + asn_DEF_rSRQ_tags_17, /* Same as above */ + sizeof(asn_DEF_rSRQ_tags_17) + /sizeof(asn_DEF_rSRQ_tags_17[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_rSRQ_constr_17, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_rSRQ_specs_17 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_ul_rSRP_value2enum_21[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ul_rSRP_enum2value_21[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_ul_rSRP_specs_21 = { + asn_MAP_ul_rSRP_value2enum_21, /* "tag" => N; sorted by tag */ + asn_MAP_ul_rSRP_enum2value_21, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ul_rSRP_tags_21[] = { + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ul_rSRP_21 = { + "ul-rSRP", + "ul-rSRP", + &asn_OP_NativeEnumerated, + asn_DEF_ul_rSRP_tags_21, + sizeof(asn_DEF_ul_rSRP_tags_21) + /sizeof(asn_DEF_ul_rSRP_tags_21[0]) - 1, /* 1 */ + asn_DEF_ul_rSRP_tags_21, /* Same as above */ + sizeof(asn_DEF_ul_rSRP_tags_21) + /sizeof(asn_DEF_ul_rSRP_tags_21[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ul_rSRP_constr_21, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ul_rSRP_specs_21 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_cQI_value2enum_24[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_cQI_enum2value_24[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_cQI_specs_24 = { + asn_MAP_cQI_value2enum_24, /* "tag" => N; sorted by tag */ + asn_MAP_cQI_enum2value_24, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_cQI_tags_24[] = { + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_cQI_24 = { + "cQI", + "cQI", + &asn_OP_NativeEnumerated, + asn_DEF_cQI_tags_24, + sizeof(asn_DEF_cQI_tags_24) + /sizeof(asn_DEF_cQI_tags_24[0]) - 1, /* 1 */ + asn_DEF_cQI_tags_24, /* Same as above */ + sizeof(asn_DEF_cQI_tags_24) + /sizeof(asn_DEF_cQI_tags_24[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_cQI_constr_24, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_cQI_specs_24 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_fiveQI_value2enum_27[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_fiveQI_enum2value_27[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_fiveQI_specs_27 = { + asn_MAP_fiveQI_value2enum_27, /* "tag" => N; sorted by tag */ + asn_MAP_fiveQI_enum2value_27, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_fiveQI_tags_27[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_fiveQI_27 = { + "fiveQI", + "fiveQI", + &asn_OP_NativeEnumerated, + asn_DEF_fiveQI_tags_27, + sizeof(asn_DEF_fiveQI_tags_27) + /sizeof(asn_DEF_fiveQI_tags_27[0]) - 1, /* 1 */ + asn_DEF_fiveQI_tags_27, /* Same as above */ + sizeof(asn_DEF_fiveQI_tags_27) + /sizeof(asn_DEF_fiveQI_tags_27[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_fiveQI_constr_27, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_fiveQI_specs_27 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_qCI_value2enum_30[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_qCI_enum2value_30[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_qCI_specs_30 = { + asn_MAP_qCI_value2enum_30, /* "tag" => N; sorted by tag */ + asn_MAP_qCI_enum2value_30, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_qCI_tags_30[] = { + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_qCI_30 = { + "qCI", + "qCI", + &asn_OP_NativeEnumerated, + asn_DEF_qCI_tags_30, + sizeof(asn_DEF_qCI_tags_30) + /sizeof(asn_DEF_qCI_tags_30[0]) - 1, /* 1 */ + asn_DEF_qCI_tags_30, /* Same as above */ + sizeof(asn_DEF_qCI_tags_30) + /sizeof(asn_DEF_qCI_tags_30[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_qCI_constr_30, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_qCI_specs_30 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_sNSSAI_value2enum_33[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_sNSSAI_enum2value_33[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_sNSSAI_specs_33 = { + asn_MAP_sNSSAI_value2enum_33, /* "tag" => N; sorted by tag */ + asn_MAP_sNSSAI_enum2value_33, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_sNSSAI_tags_33[] = { + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_sNSSAI_33 = { + "sNSSAI", + "sNSSAI", + &asn_OP_NativeEnumerated, + asn_DEF_sNSSAI_tags_33, + sizeof(asn_DEF_sNSSAI_tags_33) + /sizeof(asn_DEF_sNSSAI_tags_33[0]) - 1, /* 1 */ + asn_DEF_sNSSAI_tags_33, /* Same as above */ + sizeof(asn_DEF_sNSSAI_tags_33) + /sizeof(asn_DEF_sNSSAI_tags_33[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_sNSSAI_constr_33, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_sNSSAI_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TestCond_Type_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.gBR), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_gBR_2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gBR" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.aMBR), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_aMBR_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "aMBR" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.isStat), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_isStat_8, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "isStat" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.isCatM), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_isCatM_11, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "isCatM" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.rSRP), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_rSRP_14, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rSRP" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.rSRQ), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_rSRQ_17, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rSRQ" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.ul_rSRP), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ul_rSRP_21, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ul-rSRP" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.cQI), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_cQI_24, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.fiveQI), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_fiveQI_27, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "fiveQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.qCI), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_qCI_30, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "qCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.sNSSAI), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_sNSSAI_33, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sNSSAI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_TestCond_Type_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gBR */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aMBR */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* isStat */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* isCatM */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* rSRP */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* rSRQ */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ul-rSRP */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* cQI */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* fiveQI */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* qCI */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 } /* sNSSAI */ +}; +asn_CHOICE_specifics_t asn_SPC_TestCond_Type_specs_1 = { + sizeof(struct TestCond_Type), + offsetof(struct TestCond_Type, _asn_ctx), + offsetof(struct TestCond_Type, present), + sizeof(((struct TestCond_Type *)0)->present), + asn_MAP_TestCond_Type_tag2el_1, + 11, /* Count of tags in the map */ + 0, 0, + 6 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_TestCond_Type = { + "TestCond-Type", + "TestCond-Type", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TestCond_Type_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_TestCond_Type_1, + 11, /* Elements count */ + &asn_SPC_TestCond_Type_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TestCond-Type.h b/e2sim/asn1c/TestCond-Type.h new file mode 100644 index 0000000..56c7ae3 --- /dev/null +++ b/e2sim/asn1c/TestCond-Type.h @@ -0,0 +1,152 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TestCond_Type_H_ +#define _TestCond_Type_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TestCond_Type_PR { + TestCond_Type_PR_NOTHING, /* No components present */ + TestCond_Type_PR_gBR, + TestCond_Type_PR_aMBR, + TestCond_Type_PR_isStat, + TestCond_Type_PR_isCatM, + TestCond_Type_PR_rSRP, + TestCond_Type_PR_rSRQ, + /* Extensions may appear below */ + TestCond_Type_PR_ul_rSRP, + TestCond_Type_PR_cQI, + TestCond_Type_PR_fiveQI, + TestCond_Type_PR_qCI, + TestCond_Type_PR_sNSSAI +} TestCond_Type_PR; +typedef enum TestCond_Type__gBR { + TestCond_Type__gBR_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__gBR; +typedef enum TestCond_Type__aMBR { + TestCond_Type__aMBR_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__aMBR; +typedef enum TestCond_Type__isStat { + TestCond_Type__isStat_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__isStat; +typedef enum TestCond_Type__isCatM { + TestCond_Type__isCatM_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__isCatM; +typedef enum TestCond_Type__rSRP { + TestCond_Type__rSRP_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__rSRP; +typedef enum TestCond_Type__rSRQ { + TestCond_Type__rSRQ_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__rSRQ; +typedef enum TestCond_Type__ul_rSRP { + TestCond_Type__ul_rSRP_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__ul_rSRP; +typedef enum TestCond_Type__cQI { + TestCond_Type__cQI_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__cQI; +typedef enum TestCond_Type__fiveQI { + TestCond_Type__fiveQI_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__fiveQI; +typedef enum TestCond_Type__qCI { + TestCond_Type__qCI_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__qCI; +typedef enum TestCond_Type__sNSSAI { + TestCond_Type__sNSSAI_true = 0 + /* + * Enumeration is extensible + */ +} e_TestCond_Type__sNSSAI; + +/* TestCond-Type */ +typedef struct TestCond_Type { + TestCond_Type_PR present; + union TestCond_Type_u { + long gBR; + long aMBR; + long isStat; + long isCatM; + long rSRP; + long rSRQ; + /* + * This type is extensible, + * possible extensions are below. + */ + long ul_rSRP; + long cQI; + long fiveQI; + long qCI; + long sNSSAI; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestCond_Type_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_gBR_2; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_aMBR_5; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_isStat_8; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_isCatM_11; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_rSRP_14; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_rSRQ_17; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_ul_rSRP_21; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_cQI_24; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_fiveQI_27; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_qCI_30; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_sNSSAI_33; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_TestCond_Type; +extern asn_CHOICE_specifics_t asn_SPC_TestCond_Type_specs_1; +extern asn_TYPE_member_t asn_MBR_TestCond_Type_1[11]; +extern asn_per_constraints_t asn_PER_type_TestCond_Type_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TestCond_Type_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TestCond-Value.c b/e2sim/asn1c/TestCond-Value.c new file mode 100644 index 0000000..7dfd71e --- /dev/null +++ b/e2sim/asn1c/TestCond-Value.c @@ -0,0 +1,178 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TestCond-Value.h" + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TestCond_Value_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_TestCond_Value_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueInt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "valueInt" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueEnum), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "valueEnum" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueBool), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "valueBool" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueBitS), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "valueBitS" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueOctS), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "valueOctS" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valuePrtS), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "valuePrtS" + }, + { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueReal), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeReal, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "valueReal" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_TestCond_Value_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* valuePrtS */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* valueReal */ +}; +asn_CHOICE_specifics_t asn_SPC_TestCond_Value_specs_1 = { + sizeof(struct TestCond_Value), + offsetof(struct TestCond_Value, _asn_ctx), + offsetof(struct TestCond_Value, present), + sizeof(((struct TestCond_Value *)0)->present), + asn_MAP_TestCond_Value_tag2el_1, + 7, /* Count of tags in the map */ + 0, 0, + 6 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_TestCond_Value = { + "TestCond-Value", + "TestCond-Value", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TestCond_Value_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_TestCond_Value_1, + 7, /* Elements count */ + &asn_SPC_TestCond_Value_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TestCond-Value.h b/e2sim/asn1c/TestCond-Value.h new file mode 100644 index 0000000..4bc1b09 --- /dev/null +++ b/e2sim/asn1c/TestCond-Value.h @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TestCond_Value_H_ +#define _TestCond_Value_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "BOOLEAN.h" +#include "BIT_STRING.h" +#include "OCTET_STRING.h" +#include "PrintableString.h" +#include "NativeReal.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TestCond_Value_PR { + TestCond_Value_PR_NOTHING, /* No components present */ + TestCond_Value_PR_valueInt, + TestCond_Value_PR_valueEnum, + TestCond_Value_PR_valueBool, + TestCond_Value_PR_valueBitS, + TestCond_Value_PR_valueOctS, + TestCond_Value_PR_valuePrtS, + /* Extensions may appear below */ + TestCond_Value_PR_valueReal +} TestCond_Value_PR; + +/* TestCond-Value */ +typedef struct TestCond_Value { + TestCond_Value_PR present; + union TestCond_Value_u { + long valueInt; + long valueEnum; + BOOLEAN_t valueBool; + BIT_STRING_t valueBitS; + OCTET_STRING_t valueOctS; + PrintableString_t valuePrtS; + /* + * This type is extensible, + * possible extensions are below. + */ + double valueReal; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestCond_Value_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestCond_Value; +extern asn_CHOICE_specifics_t asn_SPC_TestCond_Value_specs_1; +extern asn_TYPE_member_t asn_MBR_TestCond_Value_1[7]; +extern asn_per_constraints_t asn_PER_type_TestCond_Value_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TestCond_Value_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TestCondInfo.c b/e2sim/asn1c/TestCondInfo.c new file mode 100644 index 0000000..ebdbe39 --- /dev/null +++ b/e2sim/asn1c/TestCondInfo.c @@ -0,0 +1,105 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TestCondInfo.h" + +#include "TestCond-Value.h" +asn_TYPE_member_t asn_MBR_TestCondInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TestCondInfo, testType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_TestCond_Type, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "testType" + }, + { ATF_POINTER, 2, offsetof(struct TestCondInfo, testExpr), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TestCond_Expression, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "testExpr" + }, + { ATF_POINTER, 1, offsetof(struct TestCondInfo, testValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_TestCond_Value, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "testValue" + }, +}; +static const int asn_MAP_TestCondInfo_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_TestCondInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TestCondInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* testType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* testExpr */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* testValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TestCondInfo_specs_1 = { + sizeof(struct TestCondInfo), + offsetof(struct TestCondInfo, _asn_ctx), + asn_MAP_TestCondInfo_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_TestCondInfo_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TestCondInfo = { + "TestCondInfo", + "TestCondInfo", + &asn_OP_SEQUENCE, + asn_DEF_TestCondInfo_tags_1, + sizeof(asn_DEF_TestCondInfo_tags_1) + /sizeof(asn_DEF_TestCondInfo_tags_1[0]), /* 1 */ + asn_DEF_TestCondInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_TestCondInfo_tags_1) + /sizeof(asn_DEF_TestCondInfo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TestCondInfo_1, + 3, /* Elements count */ + &asn_SPC_TestCondInfo_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TestCondInfo.h b/e2sim/asn1c/TestCondInfo.h new file mode 100644 index 0000000..fa8d744 --- /dev/null +++ b/e2sim/asn1c/TestCondInfo.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TestCondInfo_H_ +#define _TestCondInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TestCond-Type.h" +#include "TestCond-Expression.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TestCond_Value; + +/* TestCondInfo */ +typedef struct TestCondInfo { + TestCond_Type_t testType; + TestCond_Expression_t *testExpr; /* OPTIONAL */ + struct TestCond_Value *testValue; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TestCondInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TestCondInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_TestCondInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_TestCondInfo_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TestCondInfo_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TimeStamp.c b/e2sim/asn1c/TimeStamp.c new file mode 100644 index 0000000..1c9327c --- /dev/null +++ b/e2sim/asn1c/TimeStamp.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TimeStamp.h" + +int +TimeStamp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8UL)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TimeStamp_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TimeStamp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeStamp = { + "TimeStamp", + "TimeStamp", + &asn_OP_OCTET_STRING, + asn_DEF_TimeStamp_tags_1, + sizeof(asn_DEF_TimeStamp_tags_1) + /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */ + asn_DEF_TimeStamp_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeStamp_tags_1) + /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TimeStamp_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TimeStamp_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TimeStamp.h b/e2sim/asn1c/TimeStamp.h new file mode 100644 index 0000000..1a8c126 --- /dev/null +++ b/e2sim/asn1c/TimeStamp.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TimeStamp_H_ +#define _TimeStamp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TimeStamp */ +typedef OCTET_STRING_t TimeStamp_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeStamp_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeStamp; +asn_struct_free_f TimeStamp_free; +asn_struct_print_f TimeStamp_print; +asn_constr_check_f TimeStamp_constraint; +ber_type_decoder_f TimeStamp_decode_ber; +der_type_encoder_f TimeStamp_encode_der; +xer_type_decoder_f TimeStamp_decode_xer; +xer_type_encoder_f TimeStamp_encode_xer; +jer_type_encoder_f TimeStamp_encode_jer; +per_type_decoder_f TimeStamp_decode_uper; +per_type_encoder_f TimeStamp_encode_uper; +per_type_decoder_f TimeStamp_decode_aper; +per_type_encoder_f TimeStamp_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeStamp_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TimeToWait.c b/e2sim/asn1c/TimeToWait.c new file mode 100644 index 0000000..919ac56 --- /dev/null +++ b/e2sim/asn1c/TimeToWait.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TimeToWait_value2enum_1[] = { + { 0, 3, "v1s" }, + { 1, 3, "v2s" }, + { 2, 3, "v5s" }, + { 3, 4, "v10s" }, + { 4, 4, "v20s" }, + { 5, 4, "v60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TimeToWait_enum2value_1[] = { + 3, /* v10s(3) */ + 0, /* v1s(0) */ + 4, /* v20s(4) */ + 1, /* v2s(1) */ + 2, /* v5s(2) */ + 5 /* v60s(5) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1 = { + asn_MAP_TimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeToWait = { + "TimeToWait", + "TimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_TimeToWait_tags_1, + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + asn_DEF_TimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TimeToWait_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TimeToWait.h b/e2sim/asn1c/TimeToWait.h new file mode 100644 index 0000000..02cfdb5 --- /dev/null +++ b/e2sim/asn1c/TimeToWait.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TimeToWait_H_ +#define _TimeToWait_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TimeToWait { + TimeToWait_v1s = 0, + TimeToWait_v2s = 1, + TimeToWait_v5s = 2, + TimeToWait_v10s = 3, + TimeToWait_v20s = 4, + TimeToWait_v60s = 5 + /* + * Enumeration is extensible + */ +} e_TimeToWait; + +/* TimeToWait */ +typedef long TimeToWait_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeToWait_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeToWait; +extern const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1; +asn_struct_free_f TimeToWait_free; +asn_struct_print_f TimeToWait_print; +asn_constr_check_f TimeToWait_constraint; +ber_type_decoder_f TimeToWait_decode_ber; +der_type_encoder_f TimeToWait_encode_der; +xer_type_decoder_f TimeToWait_decode_xer; +xer_type_encoder_f TimeToWait_encode_xer; +jer_type_encoder_f TimeToWait_encode_jer; +per_type_decoder_f TimeToWait_decode_uper; +per_type_encoder_f TimeToWait_encode_uper; +per_type_decoder_f TimeToWait_decode_aper; +per_type_encoder_f TimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeToWait_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TransactionID.c b/e2sim/asn1c/TransactionID.c new file mode 100644 index 0000000..614c1f9 --- /dev/null +++ b/e2sim/asn1c/TransactionID.c @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TransactionID.h" + +int +TransactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TransactionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 0, 255 } /* (0..255,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TransactionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TransactionID = { + "TransactionID", + "TransactionID", + &asn_OP_NativeInteger, + asn_DEF_TransactionID_tags_1, + sizeof(asn_DEF_TransactionID_tags_1) + /sizeof(asn_DEF_TransactionID_tags_1[0]), /* 1 */ + asn_DEF_TransactionID_tags_1, /* Same as above */ + sizeof(asn_DEF_TransactionID_tags_1) + /sizeof(asn_DEF_TransactionID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TransactionID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TransactionID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/e2sim/asn1c/TransactionID.h b/e2sim/asn1c/TransactionID.h new file mode 100644 index 0000000..d36b9ed --- /dev/null +++ b/e2sim/asn1c/TransactionID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TransactionID_H_ +#define _TransactionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TransactionID */ +typedef long TransactionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TransactionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TransactionID; +asn_struct_free_f TransactionID_free; +asn_struct_print_f TransactionID_print; +asn_constr_check_f TransactionID_constraint; +ber_type_decoder_f TransactionID_decode_ber; +der_type_encoder_f TransactionID_encode_der; +xer_type_decoder_f TransactionID_decode_xer; +xer_type_encoder_f TransactionID_encode_xer; +jer_type_encoder_f TransactionID_encode_jer; +per_type_decoder_f TransactionID_decode_uper; +per_type_encoder_f TransactionID_encode_uper; +per_type_decoder_f TransactionID_decode_aper; +per_type_encoder_f TransactionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransactionID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TriggeringMessage.c b/e2sim/asn1c/TriggeringMessage.c new file mode 100644 index 0000000..b4e089f --- /dev/null +++ b/e2sim/asn1c/TriggeringMessage.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TriggeringMessage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = { + { 0, 18, "initiating-message" }, + { 1, 18, "successful-outcome" }, + { 2, 21, "unsuccessfull-outcome" } +}; +static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = { + 0, /* initiating-message(0) */ + 1, /* successful-outcome(1) */ + 2 /* unsuccessfull-outcome(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = { + asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = { + "TriggeringMessage", + "TriggeringMessage", + &asn_OP_NativeEnumerated, + asn_DEF_TriggeringMessage_tags_1, + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + asn_DEF_TriggeringMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TriggeringMessage_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TriggeringMessage.h b/e2sim/asn1c/TriggeringMessage.h new file mode 100644 index 0000000..0d1a51b --- /dev/null +++ b/e2sim/asn1c/TriggeringMessage.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "e2ap-common-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TriggeringMessage_H_ +#define _TriggeringMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TriggeringMessage { + TriggeringMessage_initiating_message = 0, + TriggeringMessage_successful_outcome = 1, + TriggeringMessage_unsuccessfull_outcome = 2 +} e_TriggeringMessage; + +/* TriggeringMessage */ +typedef long TriggeringMessage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage; +extern const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1; +asn_struct_free_f TriggeringMessage_free; +asn_struct_print_f TriggeringMessage_print; +asn_constr_check_f TriggeringMessage_constraint; +ber_type_decoder_f TriggeringMessage_decode_ber; +der_type_encoder_f TriggeringMessage_encode_der; +xer_type_decoder_f TriggeringMessage_decode_xer; +xer_type_encoder_f TriggeringMessage_encode_xer; +jer_type_encoder_f TriggeringMessage_encode_jer; +per_type_decoder_f TriggeringMessage_decode_uper; +per_type_encoder_f TriggeringMessage_encode_uper; +per_type_decoder_f TriggeringMessage_decode_aper; +per_type_encoder_f TriggeringMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TriggeringMessage_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/TypeOfError.c b/e2sim/asn1c/TypeOfError.c new file mode 100644 index 0000000..1a1ee23 --- /dev/null +++ b/e2sim/asn1c/TypeOfError.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "TypeOfError.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = { + { 0, 14, "not-understood" }, + { 1, 7, "missing" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = { + 1, /* missing(1) */ + 0 /* not-understood(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = { + asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TypeOfError_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TypeOfError = { + "TypeOfError", + "TypeOfError", + &asn_OP_NativeEnumerated, + asn_DEF_TypeOfError_tags_1, + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + asn_DEF_TypeOfError_tags_1, /* Same as above */ + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TypeOfError_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TypeOfError_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/TypeOfError.h b/e2sim/asn1c/TypeOfError.h new file mode 100644 index 0000000..8c5f40c --- /dev/null +++ b/e2sim/asn1c/TypeOfError.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "e2ap-ied-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _TypeOfError_H_ +#define _TypeOfError_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TypeOfError { + TypeOfError_not_understood = 0, + TypeOfError_missing = 1 + /* + * Enumeration is extensible + */ +} e_TypeOfError; + +/* TypeOfError */ +typedef long TypeOfError_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TypeOfError_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TypeOfError; +extern const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1; +asn_struct_free_f TypeOfError_free; +asn_struct_print_f TypeOfError_print; +asn_constr_check_f TypeOfError_constraint; +ber_type_decoder_f TypeOfError_decode_ber; +der_type_encoder_f TypeOfError_encode_der; +xer_type_decoder_f TypeOfError_decode_xer; +xer_type_encoder_f TypeOfError_encode_xer; +jer_type_encoder_f TypeOfError_encode_jer; +per_type_decoder_f TypeOfError_decode_uper; +per_type_encoder_f TypeOfError_encode_uper; +per_type_decoder_f TypeOfError_decode_aper; +per_type_encoder_f TypeOfError_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TypeOfError_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-EN-GNB.c b/e2sim/asn1c/UEID-EN-GNB.c new file mode 100644 index 0000000..2b9f40d --- /dev/null +++ b/e2sim/asn1c/UEID-EN-GNB.c @@ -0,0 +1,159 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-EN-GNB.h" + +#include "UEID-GNB-CU-CP-E1AP-ID-List.h" +asn_TYPE_member_t asn_MBR_UEID_EN_GNB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEID_EN_GNB, m_eNB_UE_X2AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ENB_UE_X2AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "m-eNB-UE-X2AP-ID" + }, + { ATF_POINTER, 1, offsetof(struct UEID_EN_GNB, m_eNB_UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ENB_UE_X2AP_ID_Extension, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "m-eNB-UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEID_EN_GNB, globalENB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "globalENB-ID" + }, + { ATF_POINTER, 3, offsetof(struct UEID_EN_GNB, gNB_CU_UE_F1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNB_CU_UE_F1AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-UE-F1AP-ID" + }, + { ATF_POINTER, 2, offsetof(struct UEID_EN_GNB, gNB_CU_CP_UE_E1AP_ID_List), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-CP-UE-E1AP-ID-List" + }, + { ATF_POINTER, 1, offsetof(struct UEID_EN_GNB, ran_UEID), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANUEID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ran-UEID" + }, +}; +static const int asn_MAP_UEID_EN_GNB_oms_1[] = { 1, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_UEID_EN_GNB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_EN_GNB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m-eNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m-eNB-UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* globalENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gNB-CU-UE-F1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID-List */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ran-UEID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEID_EN_GNB_specs_1 = { + sizeof(struct UEID_EN_GNB), + offsetof(struct UEID_EN_GNB, _asn_ctx), + asn_MAP_UEID_EN_GNB_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_UEID_EN_GNB_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_EN_GNB = { + "UEID-EN-GNB", + "UEID-EN-GNB", + &asn_OP_SEQUENCE, + asn_DEF_UEID_EN_GNB_tags_1, + sizeof(asn_DEF_UEID_EN_GNB_tags_1) + /sizeof(asn_DEF_UEID_EN_GNB_tags_1[0]), /* 1 */ + asn_DEF_UEID_EN_GNB_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_EN_GNB_tags_1) + /sizeof(asn_DEF_UEID_EN_GNB_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEID_EN_GNB_1, + 6, /* Elements count */ + &asn_SPC_UEID_EN_GNB_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-EN-GNB.h b/e2sim/asn1c/UEID-EN-GNB.h new file mode 100644 index 0000000..05bbfb1 --- /dev/null +++ b/e2sim/asn1c/UEID-EN-GNB.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_EN_GNB_H_ +#define _UEID_EN_GNB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ENB-UE-X2AP-ID.h" +#include "ENB-UE-X2AP-ID-Extension.h" +#include "E2SM-COMMON-IEs_GlobalENB-ID.h" +#include "GNB-CU-UE-F1AP-ID.h" +#include "RANUEID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UEID_GNB_CU_CP_E1AP_ID_List; + +/* UEID-EN-GNB */ +typedef struct UEID_EN_GNB { + ENB_UE_X2AP_ID_t m_eNB_UE_X2AP_ID; + ENB_UE_X2AP_ID_Extension_t *m_eNB_UE_X2AP_ID_Extension; /* OPTIONAL */ + E2SM_COMMON_IEs_GlobalENB_ID_t globalENB_ID; + GNB_CU_UE_F1AP_ID_t *gNB_CU_UE_F1AP_ID; /* OPTIONAL */ + struct UEID_GNB_CU_CP_E1AP_ID_List *gNB_CU_CP_UE_E1AP_ID_List; /* OPTIONAL */ + RANUEID_t *ran_UEID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_EN_GNB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_EN_GNB; +extern asn_SEQUENCE_specifics_t asn_SPC_UEID_EN_GNB_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_EN_GNB_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_EN_GNB_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-ENB.c b/e2sim/asn1c/UEID-ENB.c new file mode 100644 index 0000000..93d0595 --- /dev/null +++ b/e2sim/asn1c/UEID-ENB.c @@ -0,0 +1,141 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-ENB.h" + +#include "E2SM-COMMON-IEs_GlobalENB-ID.h" +asn_TYPE_member_t asn_MBR_UEID_ENB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEID_ENB, mME_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MME_UE_S1AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEID_ENB, gUMMEI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GUMMEI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gUMMEI" + }, + { ATF_POINTER, 3, offsetof(struct UEID_ENB, m_eNB_UE_X2AP_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ENB_UE_X2AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "m-eNB-UE-X2AP-ID" + }, + { ATF_POINTER, 2, offsetof(struct UEID_ENB, m_eNB_UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ENB_UE_X2AP_ID_Extension, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "m-eNB-UE-X2AP-ID-Extension" + }, + { ATF_POINTER, 1, offsetof(struct UEID_ENB, globalENB_ID), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_COMMON_IEs_GlobalENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "globalENB-ID" + }, +}; +static const int asn_MAP_UEID_ENB_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_UEID_ENB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_ENB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gUMMEI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* m-eNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m-eNB-UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* globalENB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEID_ENB_specs_1 = { + sizeof(struct UEID_ENB), + offsetof(struct UEID_ENB, _asn_ctx), + asn_MAP_UEID_ENB_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_UEID_ENB_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_ENB = { + "UEID-ENB", + "UEID-ENB", + &asn_OP_SEQUENCE, + asn_DEF_UEID_ENB_tags_1, + sizeof(asn_DEF_UEID_ENB_tags_1) + /sizeof(asn_DEF_UEID_ENB_tags_1[0]), /* 1 */ + asn_DEF_UEID_ENB_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_ENB_tags_1) + /sizeof(asn_DEF_UEID_ENB_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEID_ENB_1, + 5, /* Elements count */ + &asn_SPC_UEID_ENB_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-ENB.h b/e2sim/asn1c/UEID-ENB.h new file mode 100644 index 0000000..b6c6a0d --- /dev/null +++ b/e2sim/asn1c/UEID-ENB.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_ENB_H_ +#define _UEID_ENB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MME-UE-S1AP-ID.h" +#include "GUMMEI.h" +#include "ENB-UE-X2AP-ID.h" +#include "ENB-UE-X2AP-ID-Extension.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GlobalENB_ID; + +/* UEID-ENB */ +typedef struct UEID_ENB { + MME_UE_S1AP_ID_t mME_UE_S1AP_ID; + GUMMEI_t gUMMEI; + ENB_UE_X2AP_ID_t *m_eNB_UE_X2AP_ID; /* OPTIONAL */ + ENB_UE_X2AP_ID_Extension_t *m_eNB_UE_X2AP_ID_Extension; /* OPTIONAL */ + struct GlobalENB_ID *globalENB_ID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_ENB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_ENB; +extern asn_SEQUENCE_specifics_t asn_SPC_UEID_ENB_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_ENB_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_ENB_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.c b/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.c new file mode 100644 index 0000000..d493c18 --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-GNB-CU-CP-E1AP-ID-Item.h" + +asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_CP_E1AP_ID_Item, gNB_CU_CP_UE_E1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNB_CU_CP_UE_E1AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-CP-UE-E1AP-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_CP_E1AP_ID_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-CP-UE-E1AP-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1 = { + sizeof(struct UEID_GNB_CU_CP_E1AP_ID_Item), + offsetof(struct UEID_GNB_CU_CP_E1AP_ID_Item, _asn_ctx), + asn_MAP_UEID_GNB_CU_CP_E1AP_ID_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item = { + "UEID-GNB-CU-CP-E1AP-ID-Item", + "UEID-GNB-CU-CP-E1AP-ID-Item", + &asn_OP_SEQUENCE, + asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1, + sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[0]), /* 1 */ + asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1, + 1, /* Elements count */ + &asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.h b/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.h new file mode 100644 index 0000000..fa45914 --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_GNB_CU_CP_E1AP_ID_Item_H_ +#define _UEID_GNB_CU_CP_E1AP_ID_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GNB-CU-CP-UE-E1AP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEID-GNB-CU-CP-E1AP-ID-Item */ +typedef struct UEID_GNB_CU_CP_E1AP_ID_Item { + GNB_CU_CP_UE_E1AP_ID_t gNB_CU_CP_UE_E1AP_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_GNB_CU_CP_E1AP_ID_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_GNB_CU_CP_E1AP_ID_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.c b/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.c new file mode 100644 index 0000000..cbe0efa --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-GNB-CU-CP-E1AP-ID-List.h" + +#include "UEID-GNB-CU-CP-E1AP-ID-Item.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1 = { + sizeof(struct UEID_GNB_CU_CP_E1AP_ID_List), + offsetof(struct UEID_GNB_CU_CP_E1AP_ID_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List = { + "UEID-GNB-CU-CP-E1AP-ID-List", + "UEID-GNB-CU-CP-E1AP-ID-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1, + sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[0]), /* 1 */ + asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1, + 1, /* Single element */ + &asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.h b/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.h new file mode 100644 index 0000000..27646f7 --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-CP-E1AP-ID-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_GNB_CU_CP_E1AP_ID_List_H_ +#define _UEID_GNB_CU_CP_E1AP_ID_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UEID_GNB_CU_CP_E1AP_ID_Item; + +/* UEID-GNB-CU-CP-E1AP-ID-List */ +typedef struct UEID_GNB_CU_CP_E1AP_ID_List { + A_SEQUENCE_OF(struct UEID_GNB_CU_CP_E1AP_ID_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_GNB_CU_CP_E1AP_ID_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List; +extern asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1[1]; +extern asn_per_constraints_t asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_GNB_CU_CP_E1AP_ID_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.c b/e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.c new file mode 100644 index 0000000..7f0afa6 --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-GNB-CU-CP-F1AP-ID-Item.h" + +asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_CP_F1AP_ID_Item, gNB_CU_UE_F1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNB_CU_UE_F1AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-UE-F1AP-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_CP_F1AP_ID_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-UE-F1AP-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1 = { + sizeof(struct UEID_GNB_CU_CP_F1AP_ID_Item), + offsetof(struct UEID_GNB_CU_CP_F1AP_ID_Item, _asn_ctx), + asn_MAP_UEID_GNB_CU_CP_F1AP_ID_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item = { + "UEID-GNB-CU-CP-F1AP-ID-Item", + "UEID-GNB-CU-CP-F1AP-ID-Item", + &asn_OP_SEQUENCE, + asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1, + sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[0]), /* 1 */ + asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1, + 1, /* Elements count */ + &asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.h b/e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.h new file mode 100644 index 0000000..e3b48c2 --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-CP-F1AP-ID-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_GNB_CU_CP_F1AP_ID_Item_H_ +#define _UEID_GNB_CU_CP_F1AP_ID_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GNB-CU-UE-F1AP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEID-GNB-CU-CP-F1AP-ID-Item */ +typedef struct UEID_GNB_CU_CP_F1AP_ID_Item { + GNB_CU_UE_F1AP_ID_t gNB_CU_UE_F1AP_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_GNB_CU_CP_F1AP_ID_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_GNB_CU_CP_F1AP_ID_Item_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.c b/e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.c new file mode 100644 index 0000000..004d938 --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-GNB-CU-F1AP-ID-List.h" + +#include "UEID-GNB-CU-CP-F1AP-ID-Item.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_UEID_GNB_CU_F1AP_ID_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1 = { + sizeof(struct UEID_GNB_CU_F1AP_ID_List), + offsetof(struct UEID_GNB_CU_F1AP_ID_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_F1AP_ID_List = { + "UEID-GNB-CU-F1AP-ID-List", + "UEID-GNB-CU-F1AP-ID-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1, + sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[0]), /* 1 */ + asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_UEID_GNB_CU_F1AP_ID_List_1, + 1, /* Single element */ + &asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.h b/e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.h new file mode 100644 index 0000000..46713ad --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-F1AP-ID-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_GNB_CU_F1AP_ID_List_H_ +#define _UEID_GNB_CU_F1AP_ID_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UEID_GNB_CU_CP_F1AP_ID_Item; + +/* UEID-GNB-CU-F1AP-ID-List */ +typedef struct UEID_GNB_CU_F1AP_ID_List { + A_SEQUENCE_OF(struct UEID_GNB_CU_CP_F1AP_ID_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_GNB_CU_F1AP_ID_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_F1AP_ID_List; +extern asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_F1AP_ID_List_1[1]; +extern asn_per_constraints_t asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_GNB_CU_F1AP_ID_List_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-GNB-CU-UP.c b/e2sim/asn1c/UEID-GNB-CU-UP.c new file mode 100644 index 0000000..557b99d --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-UP.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-GNB-CU-UP.h" + +asn_TYPE_member_t asn_MBR_UEID_GNB_CU_UP_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_UP, gNB_CU_CP_UE_E1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNB_CU_CP_UE_E1AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-CP-UE-E1AP-ID" + }, + { ATF_POINTER, 1, offsetof(struct UEID_GNB_CU_UP, ran_UEID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANUEID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ran-UEID" + }, +}; +static const int asn_MAP_UEID_GNB_CU_UP_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_UP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_UP_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-UEID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_UP_specs_1 = { + sizeof(struct UEID_GNB_CU_UP), + offsetof(struct UEID_GNB_CU_UP, _asn_ctx), + asn_MAP_UEID_GNB_CU_UP_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UEID_GNB_CU_UP_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_UP = { + "UEID-GNB-CU-UP", + "UEID-GNB-CU-UP", + &asn_OP_SEQUENCE, + asn_DEF_UEID_GNB_CU_UP_tags_1, + sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1[0]), /* 1 */ + asn_DEF_UEID_GNB_CU_UP_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1) + /sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEID_GNB_CU_UP_1, + 2, /* Elements count */ + &asn_SPC_UEID_GNB_CU_UP_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-GNB-CU-UP.h b/e2sim/asn1c/UEID-GNB-CU-UP.h new file mode 100644 index 0000000..ddfce78 --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-CU-UP.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_GNB_CU_UP_H_ +#define _UEID_GNB_CU_UP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GNB-CU-CP-UE-E1AP-ID.h" +#include "RANUEID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEID-GNB-CU-UP */ +typedef struct UEID_GNB_CU_UP { + GNB_CU_CP_UE_E1AP_ID_t gNB_CU_CP_UE_E1AP_ID; + RANUEID_t *ran_UEID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_GNB_CU_UP_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_UP; +extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_UP_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_UP_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_GNB_CU_UP_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-GNB-DU.c b/e2sim/asn1c/UEID-GNB-DU.c new file mode 100644 index 0000000..27f2d19 --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-DU.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-GNB-DU.h" + +asn_TYPE_member_t asn_MBR_UEID_GNB_DU_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_DU, gNB_CU_UE_F1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNB_CU_UE_F1AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-UE-F1AP-ID" + }, + { ATF_POINTER, 1, offsetof(struct UEID_GNB_DU, ran_UEID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANUEID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ran-UEID" + }, +}; +static const int asn_MAP_UEID_GNB_DU_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UEID_GNB_DU_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_DU_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-UE-F1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-UEID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_DU_specs_1 = { + sizeof(struct UEID_GNB_DU), + offsetof(struct UEID_GNB_DU, _asn_ctx), + asn_MAP_UEID_GNB_DU_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UEID_GNB_DU_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_GNB_DU = { + "UEID-GNB-DU", + "UEID-GNB-DU", + &asn_OP_SEQUENCE, + asn_DEF_UEID_GNB_DU_tags_1, + sizeof(asn_DEF_UEID_GNB_DU_tags_1) + /sizeof(asn_DEF_UEID_GNB_DU_tags_1[0]), /* 1 */ + asn_DEF_UEID_GNB_DU_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_GNB_DU_tags_1) + /sizeof(asn_DEF_UEID_GNB_DU_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEID_GNB_DU_1, + 2, /* Elements count */ + &asn_SPC_UEID_GNB_DU_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-GNB-DU.h b/e2sim/asn1c/UEID-GNB-DU.h new file mode 100644 index 0000000..5a0f364 --- /dev/null +++ b/e2sim/asn1c/UEID-GNB-DU.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_GNB_DU_H_ +#define _UEID_GNB_DU_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GNB-CU-UE-F1AP-ID.h" +#include "RANUEID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEID-GNB-DU */ +typedef struct UEID_GNB_DU { + GNB_CU_UE_F1AP_ID_t gNB_CU_UE_F1AP_ID; + RANUEID_t *ran_UEID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_GNB_DU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_DU; +extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_DU_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_GNB_DU_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_GNB_DU_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-GNB.c b/e2sim/asn1c/UEID-GNB.c new file mode 100644 index 0000000..3f2d8de --- /dev/null +++ b/e2sim/asn1c/UEID-GNB.c @@ -0,0 +1,198 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-GNB.h" + +#include "UEID-GNB-CU-F1AP-ID-List.h" +#include "UEID-GNB-CU-CP-E1AP-ID-List.h" +#include "GlobalGNB-ID.h" +#include "GlobalNGRANNodeID.h" +asn_TYPE_member_t asn_MBR_UEID_GNB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB, amf_UE_NGAP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AMF_UE_NGAP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "amf-UE-NGAP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB, guami), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GUAMI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "guami" + }, + { ATF_POINTER, 6, offsetof(struct UEID_GNB, gNB_CU_UE_F1AP_ID_List), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_GNB_CU_F1AP_ID_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-UE-F1AP-ID-List" + }, + { ATF_POINTER, 5, offsetof(struct UEID_GNB, gNB_CU_CP_UE_E1AP_ID_List), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-CP-UE-E1AP-ID-List" + }, + { ATF_POINTER, 4, offsetof(struct UEID_GNB, ran_UEID), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANUEID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ran-UEID" + }, + { ATF_POINTER, 3, offsetof(struct UEID_GNB, m_NG_RAN_UE_XnAP_ID), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NG_RANnodeUEXnAPID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "m-NG-RAN-UE-XnAP-ID" + }, + { ATF_POINTER, 2, offsetof(struct UEID_GNB, globalGNB_ID), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalGNB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "globalGNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct UEID_GNB, globalNG_RANNode_ID), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GlobalNGRANNodeID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "globalNG-RANNode-ID" + }, +}; +static const int asn_MAP_UEID_GNB_oms_1[] = { 2, 3, 4, 5, 6, 7 }; +static const ber_tlv_tag_t asn_DEF_UEID_GNB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* amf-UE-NGAP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* guami */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UE-F1AP-ID-List */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID-List */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ran-UEID */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* m-NG-RAN-UE-XnAP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* globalGNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* globalNG-RANNode-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_specs_1 = { + sizeof(struct UEID_GNB), + offsetof(struct UEID_GNB, _asn_ctx), + asn_MAP_UEID_GNB_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_UEID_GNB_oms_1, /* Optional members */ + 5, 1, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_GNB = { + "UEID-GNB", + "UEID-GNB", + &asn_OP_SEQUENCE, + asn_DEF_UEID_GNB_tags_1, + sizeof(asn_DEF_UEID_GNB_tags_1) + /sizeof(asn_DEF_UEID_GNB_tags_1[0]), /* 1 */ + asn_DEF_UEID_GNB_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_GNB_tags_1) + /sizeof(asn_DEF_UEID_GNB_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEID_GNB_1, + 8, /* Elements count */ + &asn_SPC_UEID_GNB_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-GNB.h b/e2sim/asn1c/UEID-GNB.h new file mode 100644 index 0000000..4acb78a --- /dev/null +++ b/e2sim/asn1c/UEID-GNB.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_GNB_H_ +#define _UEID_GNB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AMF-UE-NGAP-ID.h" +#include "GUAMI.h" +#include "RANUEID.h" +#include "NG-RANnodeUEXnAPID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UEID_GNB_CU_F1AP_ID_List; +struct UEID_GNB_CU_CP_E1AP_ID_List; +struct GlobalGNB_ID; +struct GlobalNGRANNodeID; + +/* UEID-GNB */ +typedef struct UEID_GNB { + AMF_UE_NGAP_ID_t amf_UE_NGAP_ID; + GUAMI_t guami; + struct UEID_GNB_CU_F1AP_ID_List *gNB_CU_UE_F1AP_ID_List; /* OPTIONAL */ + struct UEID_GNB_CU_CP_E1AP_ID_List *gNB_CU_CP_UE_E1AP_ID_List; /* OPTIONAL */ + RANUEID_t *ran_UEID; /* OPTIONAL */ + NG_RANnodeUEXnAPID_t *m_NG_RAN_UE_XnAP_ID; /* OPTIONAL */ + struct GlobalGNB_ID *globalGNB_ID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + struct GlobalNGRANNodeID *globalNG_RANNode_ID; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_GNB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB; +extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_GNB_1[8]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_GNB_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-NG-ENB-DU.c b/e2sim/asn1c/UEID-NG-ENB-DU.c new file mode 100644 index 0000000..538978e --- /dev/null +++ b/e2sim/asn1c/UEID-NG-ENB-DU.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-NG-ENB-DU.h" + +asn_TYPE_member_t asn_MBR_UEID_NG_ENB_DU_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB_DU, ng_eNB_CU_UE_W1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NGENB_CU_UE_W1AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ng-eNB-CU-UE-W1AP-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEID_NG_ENB_DU_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_NG_ENB_DU_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ng-eNB-CU-UE-W1AP-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_DU_specs_1 = { + sizeof(struct UEID_NG_ENB_DU), + offsetof(struct UEID_NG_ENB_DU, _asn_ctx), + asn_MAP_UEID_NG_ENB_DU_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB_DU = { + "UEID-NG-ENB-DU", + "UEID-NG-ENB-DU", + &asn_OP_SEQUENCE, + asn_DEF_UEID_NG_ENB_DU_tags_1, + sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1) + /sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1[0]), /* 1 */ + asn_DEF_UEID_NG_ENB_DU_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1) + /sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEID_NG_ENB_DU_1, + 1, /* Elements count */ + &asn_SPC_UEID_NG_ENB_DU_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-NG-ENB-DU.h b/e2sim/asn1c/UEID-NG-ENB-DU.h new file mode 100644 index 0000000..76524e1 --- /dev/null +++ b/e2sim/asn1c/UEID-NG-ENB-DU.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_NG_ENB_DU_H_ +#define _UEID_NG_ENB_DU_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NGENB-CU-UE-W1AP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEID-NG-ENB-DU */ +typedef struct UEID_NG_ENB_DU { + NGENB_CU_UE_W1AP_ID_t ng_eNB_CU_UE_W1AP_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_NG_ENB_DU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB_DU; +extern asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_DU_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_NG_ENB_DU_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_NG_ENB_DU_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID-NG-ENB.c b/e2sim/asn1c/UEID-NG-ENB.c new file mode 100644 index 0000000..9bb4f29 --- /dev/null +++ b/e2sim/asn1c/UEID-NG-ENB.c @@ -0,0 +1,160 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID-NG-ENB.h" + +#include "GlobalNgENB-ID.h" +#include "GlobalNGRANNodeID.h" +asn_TYPE_member_t asn_MBR_UEID_NG_ENB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB, amf_UE_NGAP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AMF_UE_NGAP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "amf-UE-NGAP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB, guami), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GUAMI, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "guami" + }, + { ATF_POINTER, 4, offsetof(struct UEID_NG_ENB, ng_eNB_CU_UE_W1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NGENB_CU_UE_W1AP_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ng-eNB-CU-UE-W1AP-ID" + }, + { ATF_POINTER, 3, offsetof(struct UEID_NG_ENB, m_NG_RAN_UE_XnAP_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NG_RANnodeUEXnAPID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "m-NG-RAN-UE-XnAP-ID" + }, + { ATF_POINTER, 2, offsetof(struct UEID_NG_ENB, globalNgENB_ID), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalNgENB_ID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "globalNgENB-ID" + }, + { ATF_POINTER, 1, offsetof(struct UEID_NG_ENB, globalNG_RANNode_ID), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GlobalNGRANNodeID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "globalNG-RANNode-ID" + }, +}; +static const int asn_MAP_UEID_NG_ENB_oms_1[] = { 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_UEID_NG_ENB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_NG_ENB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* amf-UE-NGAP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* guami */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB-CU-UE-W1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m-NG-RAN-UE-XnAP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* globalNgENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* globalNG-RANNode-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_specs_1 = { + sizeof(struct UEID_NG_ENB), + offsetof(struct UEID_NG_ENB, _asn_ctx), + asn_MAP_UEID_NG_ENB_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_UEID_NG_ENB_oms_1, /* Optional members */ + 3, 1, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB = { + "UEID-NG-ENB", + "UEID-NG-ENB", + &asn_OP_SEQUENCE, + asn_DEF_UEID_NG_ENB_tags_1, + sizeof(asn_DEF_UEID_NG_ENB_tags_1) + /sizeof(asn_DEF_UEID_NG_ENB_tags_1[0]), /* 1 */ + asn_DEF_UEID_NG_ENB_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_NG_ENB_tags_1) + /sizeof(asn_DEF_UEID_NG_ENB_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEID_NG_ENB_1, + 6, /* Elements count */ + &asn_SPC_UEID_NG_ENB_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID-NG-ENB.h b/e2sim/asn1c/UEID-NG-ENB.h new file mode 100644 index 0000000..99c4432 --- /dev/null +++ b/e2sim/asn1c/UEID-NG-ENB.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_NG_ENB_H_ +#define _UEID_NG_ENB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AMF-UE-NGAP-ID.h" +#include "GUAMI.h" +#include "NGENB-CU-UE-W1AP-ID.h" +#include "NG-RANnodeUEXnAPID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GlobalNgENB_ID; +struct GlobalNGRANNodeID; + +/* UEID-NG-ENB */ +typedef struct UEID_NG_ENB { + AMF_UE_NGAP_ID_t amf_UE_NGAP_ID; + GUAMI_t guami; + NGENB_CU_UE_W1AP_ID_t *ng_eNB_CU_UE_W1AP_ID; /* OPTIONAL */ + NG_RANnodeUEXnAPID_t *m_NG_RAN_UE_XnAP_ID; /* OPTIONAL */ + struct GlobalNgENB_ID *globalNgENB_ID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + struct GlobalNGRANNodeID *globalNG_RANNode_ID; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_NG_ENB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB; +extern asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_NG_ENB_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_NG_ENB_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEID.c b/e2sim/asn1c/UEID.c new file mode 100644 index 0000000..66bbaa5 --- /dev/null +++ b/e2sim/asn1c/UEID.c @@ -0,0 +1,185 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEID.h" + +#include "UEID-GNB.h" +#include "UEID-GNB-DU.h" +#include "UEID-GNB-CU-UP.h" +#include "UEID-NG-ENB.h" +#include "UEID-NG-ENB-DU.h" +#include "UEID-EN-GNB.h" +#include "UEID-ENB.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_UEID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_UEID_1[] = { + { ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_UEID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_GNB, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-UEID" + }, + { ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_DU_UEID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_GNB_DU, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-DU-UEID" + }, + { ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_CU_UP_UEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_GNB_CU_UP, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "gNB-CU-UP-UEID" + }, + { ATF_POINTER, 0, offsetof(struct UEID, choice.ng_eNB_UEID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_NG_ENB, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ng-eNB-UEID" + }, + { ATF_POINTER, 0, offsetof(struct UEID, choice.ng_eNB_DU_UEID), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_NG_ENB_DU, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ng-eNB-DU-UEID" + }, + { ATF_POINTER, 0, offsetof(struct UEID, choice.en_gNB_UEID), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_EN_GNB, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "en-gNB-UEID" + }, + { ATF_POINTER, 0, offsetof(struct UEID, choice.eNB_UEID), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID_ENB, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eNB-UEID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_UEID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-UEID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-DU-UEID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UP-UEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ng-eNB-UEID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ng-eNB-DU-UEID */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* en-gNB-UEID */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* eNB-UEID */ +}; +asn_CHOICE_specifics_t asn_SPC_UEID_specs_1 = { + sizeof(struct UEID), + offsetof(struct UEID, _asn_ctx), + offsetof(struct UEID, present), + sizeof(((struct UEID *)0)->present), + asn_MAP_UEID_tag2el_1, + 7, /* Count of tags in the map */ + 0, 0, + 7 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_UEID = { + "UEID", + "UEID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_UEID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_UEID_1, + 7, /* Elements count */ + &asn_SPC_UEID_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEID.h b/e2sim/asn1c/UEID.h new file mode 100644 index 0000000..f69cc5b --- /dev/null +++ b/e2sim/asn1c/UEID.h @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-COMMON-IEs" + * found in "e2sm-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEID_H_ +#define _UEID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UEID_PR { + UEID_PR_NOTHING, /* No components present */ + UEID_PR_gNB_UEID, + UEID_PR_gNB_DU_UEID, + UEID_PR_gNB_CU_UP_UEID, + UEID_PR_ng_eNB_UEID, + UEID_PR_ng_eNB_DU_UEID, + UEID_PR_en_gNB_UEID, + UEID_PR_eNB_UEID + /* Extensions may appear below */ + +} UEID_PR; + +/* Forward declarations */ +struct UEID_GNB; +struct UEID_GNB_DU; +struct UEID_GNB_CU_UP; +struct UEID_NG_ENB; +struct UEID_NG_ENB_DU; +struct UEID_EN_GNB; +struct UEID_ENB; + +/* UEID */ +typedef struct UEID { + UEID_PR present; + union UEID_u { + struct UEID_GNB *gNB_UEID; + struct UEID_GNB_DU *gNB_DU_UEID; + struct UEID_GNB_CU_UP *gNB_CU_UP_UEID; + struct UEID_NG_ENB *ng_eNB_UEID; + struct UEID_NG_ENB_DU *ng_eNB_DU_UEID; + struct UEID_EN_GNB *en_gNB_UEID; + struct UEID_ENB *eNB_UEID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEID; +extern asn_CHOICE_specifics_t asn_SPC_UEID_specs_1; +extern asn_TYPE_member_t asn_MBR_UEID_1[7]; +extern asn_per_constraints_t asn_PER_type_UEID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEMeasurementReportItem.c b/e2sim/asn1c/UEMeasurementReportItem.c new file mode 100644 index 0000000..e158a38 --- /dev/null +++ b/e2sim/asn1c/UEMeasurementReportItem.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEMeasurementReportItem.h" + +asn_TYPE_member_t asn_MBR_UEMeasurementReportItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEMeasurementReportItem, ueID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_UEID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ueID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEMeasurementReportItem, measReport), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_KPM_IndicationMessage_Format1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measReport" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEMeasurementReportItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEMeasurementReportItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measReport */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEMeasurementReportItem_specs_1 = { + sizeof(struct UEMeasurementReportItem), + offsetof(struct UEMeasurementReportItem, _asn_ctx), + asn_MAP_UEMeasurementReportItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportItem = { + "UEMeasurementReportItem", + "UEMeasurementReportItem", + &asn_OP_SEQUENCE, + asn_DEF_UEMeasurementReportItem_tags_1, + sizeof(asn_DEF_UEMeasurementReportItem_tags_1) + /sizeof(asn_DEF_UEMeasurementReportItem_tags_1[0]), /* 1 */ + asn_DEF_UEMeasurementReportItem_tags_1, /* Same as above */ + sizeof(asn_DEF_UEMeasurementReportItem_tags_1) + /sizeof(asn_DEF_UEMeasurementReportItem_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UEMeasurementReportItem_1, + 2, /* Elements count */ + &asn_SPC_UEMeasurementReportItem_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEMeasurementReportItem.h b/e2sim/asn1c/UEMeasurementReportItem.h new file mode 100644 index 0000000..8b8dae8 --- /dev/null +++ b/e2sim/asn1c/UEMeasurementReportItem.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEMeasurementReportItem_H_ +#define _UEMeasurementReportItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UEID.h" +#include "E2SM-KPM-IndicationMessage-Format1.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEMeasurementReportItem */ +typedef struct UEMeasurementReportItem { + UEID_t ueID; + E2SM_KPM_IndicationMessage_Format1_t measReport; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEMeasurementReportItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportItem; +extern asn_SEQUENCE_specifics_t asn_SPC_UEMeasurementReportItem_specs_1; +extern asn_TYPE_member_t asn_MBR_UEMeasurementReportItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEMeasurementReportItem_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UEMeasurementReportList.c b/e2sim/asn1c/UEMeasurementReportList.c new file mode 100644 index 0000000..a8d67be --- /dev/null +++ b/e2sim/asn1c/UEMeasurementReportList.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UEMeasurementReportList.h" + +#include "UEMeasurementReportItem.h" +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_UEMeasurementReportList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_UEMeasurementReportList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEMeasurementReportItem, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEMeasurementReportList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UEMeasurementReportList_specs_1 = { + sizeof(struct UEMeasurementReportList), + offsetof(struct UEMeasurementReportList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportList = { + "UEMeasurementReportList", + "UEMeasurementReportList", + &asn_OP_SEQUENCE_OF, + asn_DEF_UEMeasurementReportList_tags_1, + sizeof(asn_DEF_UEMeasurementReportList_tags_1) + /sizeof(asn_DEF_UEMeasurementReportList_tags_1[0]), /* 1 */ + asn_DEF_UEMeasurementReportList_tags_1, /* Same as above */ + sizeof(asn_DEF_UEMeasurementReportList_tags_1) + /sizeof(asn_DEF_UEMeasurementReportList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_UEMeasurementReportList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_UEMeasurementReportList_1, + 1, /* Single element */ + &asn_SPC_UEMeasurementReportList_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UEMeasurementReportList.h b/e2sim/asn1c/UEMeasurementReportList.h new file mode 100644 index 0000000..081afc6 --- /dev/null +++ b/e2sim/asn1c/UEMeasurementReportList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-KPM-IEs" + * found in "e2sm-kpm-v03.00.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UEMeasurementReportList_H_ +#define _UEMeasurementReportList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UEMeasurementReportItem; + +/* UEMeasurementReportList */ +typedef struct UEMeasurementReportList { + A_SEQUENCE_OF(struct UEMeasurementReportItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEMeasurementReportList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportList; +extern asn_SET_OF_specifics_t asn_SPC_UEMeasurementReportList_specs_1; +extern asn_TYPE_member_t asn_MBR_UEMeasurementReportList_1[1]; +extern asn_per_constraints_t asn_PER_type_UEMeasurementReportList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEMeasurementReportList_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/UnsuccessfulOutcome.c b/e2sim/asn1c/UnsuccessfulOutcome.c new file mode 100644 index 0000000..75678bb --- /dev/null +++ b/e2sim/asn1c/UnsuccessfulOutcome.c @@ -0,0 +1,592 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "e2ap-epd-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#include "UnsuccessfulOutcome.h" + +static const long asn_VAL_1_id_RICsubscription = 8; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_RICsubscriptionDelete = 9; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_RICsubscriptionModification = 14; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_RICsubscriptionModificationRequired = 15; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_RICquery = 16; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_RICserviceUpdate = 7; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_RICcontrol = 4; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_8_id_E2setup = 1; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_9_id_E2nodeConfigurationUpdate = 10; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_10_id_E2connectionUpdate = 11; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_11_id_Reset = 3; +static const long asn_VAL_11_reject = 0; +static const long asn_VAL_12_id_E2removal = 13; +static const long asn_VAL_12_reject = 0; +static const long asn_VAL_13_id_RICindication = 5; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_14_id_RICserviceQuery = 6; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_15_id_ErrorIndication = 2; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_16_id_RICsubscriptionDeleteRequired = 12; +static const long asn_VAL_16_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionModificationRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICsubscriptionModification }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionModificationRequired }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationConfirm }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionModificationRefuse }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICsubscriptionModificationRequired }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICQueryRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICQueryResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICQueryFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_RICquery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_RICserviceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICcontrol }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_E2setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2nodeConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_E2nodeConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2connectionUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_E2connectionUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2RemovalRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2RemovalResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2RemovalFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_E2removal }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_13_id_RICindication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_14_id_RICserviceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_15_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequired }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_16_id_RICsubscriptionDeleteRequired }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 16, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0L && value <= 255L)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 2; /* &UnsuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionDeleteFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionModificationFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionModificationFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionModificationRefuse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionModificationRefuse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICsubscriptionModificationRefuse" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICQueryFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICQueryFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICQueryFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICserviceUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICserviceUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICcontrolFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "RICcontrolFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2setupFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2setupFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2nodeConfigurationUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2nodeConfigurationUpdateFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2nodeConfigurationUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2connectionUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2connectionUpdateFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2connectionUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2RemovalFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2RemovalFailure, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "E2RemovalFailure" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 10 }, /* RICsubscriptionFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 9 }, /* RICsubscriptionDeleteFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 8 }, /* RICsubscriptionModificationFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 7 }, /* RICsubscriptionModificationRefuse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 6 }, /* RICQueryFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 5 }, /* RICserviceUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 4 }, /* RICcontrolFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 3 }, /* E2setupFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 2 }, /* E2nodeConfigurationUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 1 }, /* E2connectionUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 0 } /* E2RemovalFailure */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct UnsuccessfulOutcome__value), + offsetof(struct UnsuccessfulOutcome__value, _asn_ctx), + offsetof(struct UnsuccessfulOutcome__value, present), + sizeof(((struct UnsuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 11, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_value_4, + 11, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_procedureCode_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_procedureCode_constraint_1 + }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UnsuccessfulOutcome_criticality_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_criticality_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_criticality_constraint_1 + }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_UnsuccessfulOutcome_value_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_value_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_value_constraint_1 + }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = { + sizeof(struct UnsuccessfulOutcome), + offsetof(struct UnsuccessfulOutcome, _asn_ctx), + asn_MAP_UnsuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = { + "UnsuccessfulOutcome", + "UnsuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_UnsuccessfulOutcome_tags_1, + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_UnsuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/e2sim/asn1c/UnsuccessfulOutcome.h b/e2sim/asn1c/UnsuccessfulOutcome.h new file mode 100644 index 0000000..9d7c6e3 --- /dev/null +++ b/e2sim/asn1c/UnsuccessfulOutcome.h @@ -0,0 +1,120 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "e2ap-epd-v03.01.asn" + * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -no-gen-example -no-gen-OER -D /tmp/workspace/oransim-gerrit/e2sim/asn1c/` + */ + +#ifndef _UnsuccessfulOutcome_H_ +#define _UnsuccessfulOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICsubscriptionModificationRequest.h" +#include "RICsubscriptionModificationResponse.h" +#include "RICsubscriptionModificationFailure.h" +#include "RICsubscriptionModificationRequired.h" +#include "RICsubscriptionModificationConfirm.h" +#include "RICsubscriptionModificationRefuse.h" +#include "RICQueryRequest.h" +#include "RICQueryResponse.h" +#include "RICQueryFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "E2setupRequest.h" +#include "E2setupResponse.h" +#include "E2setupFailure.h" +#include "E2nodeConfigurationUpdate.h" +#include "E2nodeConfigurationUpdateAcknowledge.h" +#include "E2nodeConfigurationUpdateFailure.h" +#include "E2connectionUpdate.h" +#include "E2connectionUpdateAcknowledge.h" +#include "E2connectionUpdateFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "E2RemovalRequest.h" +#include "E2RemovalResponse.h" +#include "E2RemovalFailure.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "ErrorIndication.h" +#include "RICsubscriptionDeleteRequired.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UnsuccessfulOutcome__value_PR { + UnsuccessfulOutcome__value_PR_NOTHING, /* No components present */ + UnsuccessfulOutcome__value_PR_RICsubscriptionFailure, + UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure, + UnsuccessfulOutcome__value_PR_RICsubscriptionModificationFailure, + UnsuccessfulOutcome__value_PR_RICsubscriptionModificationRefuse, + UnsuccessfulOutcome__value_PR_RICQueryFailure, + UnsuccessfulOutcome__value_PR_RICserviceUpdateFailure, + UnsuccessfulOutcome__value_PR_RICcontrolFailure, + UnsuccessfulOutcome__value_PR_E2setupFailure, + UnsuccessfulOutcome__value_PR_E2nodeConfigurationUpdateFailure, + UnsuccessfulOutcome__value_PR_E2connectionUpdateFailure, + UnsuccessfulOutcome__value_PR_E2RemovalFailure +} UnsuccessfulOutcome__value_PR; + +/* UnsuccessfulOutcome */ +typedef struct UnsuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct UnsuccessfulOutcome__value { + UnsuccessfulOutcome__value_PR present; + union UnsuccessfulOutcome__value_u { + RICsubscriptionFailure_t RICsubscriptionFailure; + RICsubscriptionDeleteFailure_t RICsubscriptionDeleteFailure; + RICsubscriptionModificationFailure_t RICsubscriptionModificationFailure; + RICsubscriptionModificationRefuse_t RICsubscriptionModificationRefuse; + RICQueryFailure_t RICQueryFailure; + RICserviceUpdateFailure_t RICserviceUpdateFailure; + RICcontrolFailure_t RICcontrolFailure; + E2setupFailure_t E2setupFailure; + E2nodeConfigurationUpdateFailure_t E2nodeConfigurationUpdateFailure; + E2connectionUpdateFailure_t E2connectionUpdateFailure; + E2RemovalFailure_t E2RemovalFailure; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UnsuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UnsuccessfulOutcome_H_ */ +#include "asn_internal.h" diff --git a/e2sim/asn1c/aper_decoder.c b/e2sim/asn1c/aper_decoder.c new file mode 100644 index 0000000..0637b6a --- /dev/null +++ b/e2sim/asn1c/aper_decoder.c @@ -0,0 +1,91 @@ +#include +#include +#include + +asn_dec_rval_t +aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +aper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %zu, counted %zu", + rval.consumed, pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} diff --git a/e2sim/asn1c/aper_decoder.h b/e2sim/asn1c/aper_decoder.h new file mode 100644 index 0000000..10352c7 --- /dev/null +++ b/e2sim/asn1c/aper_decoder.h @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_DECODER_H_ +#define _APER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ + ); + +/* + * Aligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t aper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of data buffer */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ + ); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_DECODER_H_ */ diff --git a/e2sim/asn1c/aper_encoder.c b/e2sim/asn1c/aper_encoder.c new file mode 100644 index 0000000..d9b1c1d --- /dev/null +++ b/e2sim/asn1c/aper_encoder.c @@ -0,0 +1,129 @@ +#include +#include +#include + +/* + * Argument type and callback necessary for aper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); + + return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_aper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + if (po->output) { + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); + } + return 0; +} + +asn_enc_rval_t +aper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->aper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_aper_encode_flush_outp(&po)) + ASN__ENCODE_FAILED; + } + + return er; +} diff --git a/e2sim/asn1c/aper_encoder.h b/e2sim/asn1c/aper_encoder.h new file mode 100644 index 0000000..957b0bd --- /dev/null +++ b/e2sim/asn1c/aper_encoder.h @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_ENCODER_H_ +#define _APER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Aligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t aper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of aper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t aper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +/* + * A variant of aper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of aper_encode() and aper_encode_to_buffer(). + */ +ssize_t +aper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *td, + const asn_per_constraints_t *constraints, + const void *sptr, + void **buffer_r +); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_ENCODER_H_ */ diff --git a/e2sim/asn1c/aper_opentype.c b/e2sim/asn1c/aper_opentype.c new file mode 100644 index 0000000..cdd5999 --- /dev/null +++ b/e2sim/asn1c/aper_opentype.c @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +static asn_dec_rval_t +aper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = aper_get_length(pd, -1, -1, -1, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +int +aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + size_t toGo; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + int need_eom = 0; + ssize_t maySave = aper_put_length(po, -1, -1, toGo, &need_eom); + if(maySave < 0) break; + if(per_put_many_bits(po, bptr, maySave * 8)) break; + bptr = (char *)bptr + maySave; + toGo -= maySave; + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) { + FREEMEM(buf); + return -1; + } + } + + FREEMEM(buf); + if(toGo) return -1; + + ASN_DEBUG("Open type put %s of length %zd + overhead (1byte?)", + td->name, size); + + return 0; +} + +asn_dec_rval_t +aper_open_type_get(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + asn_TYPE_operation_t op_t; + + memset(&op_t, 0, sizeof(op_t)); + s_td.name = ""; + s_td.op = &op_t; + s_td.op->aper_decoder = uper_sot_suck; + + rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} diff --git a/e2sim/asn1c/aper_opentype.h b/e2sim/asn1c/aper_opentype.h new file mode 100644 index 0000000..451b01c --- /dev/null +++ b/e2sim/asn1c/aper_opentype.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_OPENTYPE_H_ +#define _APER_OPENTYPE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + + +int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_OPENTYPE_H_ */ diff --git a/e2sim/asn1c/aper_support.c b/e2sim/asn1c/aper_support.c new file mode 100644 index 0000000..1f34c60 --- /dev/null +++ b/e2sim/asn1c/aper_support.c @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int32_t +aper_get_align(asn_per_data_t *pd) { + + if(pd->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); + return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); + } + return 0; +} + +ssize_t +aper_get_length(asn_per_data_t *pd, ssize_t lb, ssize_t ub, + int ebits, int *repeat) { + int constrained = (lb >= 0) && (ub >= 0); + ssize_t value; + + *repeat = 0; + + if (constrained && ub < 65536) { + int range = ub - lb + 1; + return aper_get_nsnnwn(pd, range); + } + + if (aper_get_align(pd) < 0) + return -1; + + if(ebits >= 0) return per_get_few_bits(pd, ebits); + + value = per_get_few_bits(pd, 8); + if(value < 0) return -1; + if((value & 128) == 0) /* #11.9.3.6 */ + return (value & 0x7F); + if((value & 64) == 0) { /* #11.9.3.7 */ + value = ((value & 63) << 8) | per_get_few_bits(pd, 8); + if(value < 0) return -1; + return value; + } + value &= 63; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) + return -1; + *repeat = 1; + return (16384 * value); +} + +ssize_t +aper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%zd", length); + return length; + } else { + int repeat; + length = aper_get_length(pd, -1, -1, -1, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +ssize_t +aper_get_nsnnwn(asn_per_data_t *pd, int range) { + ssize_t value; + int bytes = 0; + + ASN_DEBUG("getting nsnnwn with range %d", range); + + if(range <= 255) { + int i; + + if (range < 0) return -1; + /* 1 -> 8 bits */ + for (i = 1; i <= 8; i++) { + int upper = 1 << i; + if (upper >= range) + break; + } + value = per_get_few_bits(pd, i); + return value; + } else if (range == 256){ + /* 1 byte */ + bytes = 1; + } else if (range <= 65536) { + /* 2 bytes */ + bytes = 2; + } else { + //return -1; + int length; + + /* handle indefinite range */ + length = per_get_few_bits(pd, 1); + if (length == 0) + return per_get_few_bits(pd, 6); + + if (aper_get_align(pd) < 0) + return -1; + + length = per_get_few_bits(pd, 8); + /* the length is not likely to be that big */ + if (length > 4) + return -1; + value = 0; + if (per_get_many_bits(pd, (uint8_t *)&value, 0, length * 8) < 0) + return -1; + return value; + } + if (aper_get_align(pd) < 0) + return -1; + value = per_get_few_bits(pd, 8 * bytes); + return value; +} + +int aper_put_align(asn_per_outp_t *po) { + + if(po->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); + if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) + return -1; + } + return 0; +} + +ssize_t +aper_put_length(asn_per_outp_t *po, ssize_t lb, ssize_t ub, size_t n, int *need_eom) { + int constrained = (lb >= 0) && (ub >= 0); + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + *need_eom = 0; + + + ASN_DEBUG("APER put length %zu with range (%zd..%zd)", n, lb, ub); + + /* 11.9 X.691 Note 2 */ + if (constrained && ub < 65536) { + int range = ub - lb + 1; + return aper_put_nsnnwn(po, range, n) ? -1 : (ssize_t)n; + } + + if (aper_put_align(po) < 0) + return -1; + + if(n <= 127) { /* #11.9.3.6 */ + return per_put_few_bits(po, n, 8) + ? -1 : (ssize_t)n; + } + else if(n < 16384) /* #11.9.3.7 */ + return per_put_few_bits(po, n|0x8000, 16) + ? -1 : (ssize_t)n; + + *need_eom = 0 == (n & 16383); + n >>= 14; + if(n > 4) { + *need_eom = 0; + n = 4; + } + + return per_put_few_bits(po, 0xC0 | n, 8) + ? -1 : (ssize_t)(n << 14); +} + + +int +aper_put_nslength(asn_per_outp_t *po, size_t length) { + + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(aper_put_length(po, -1, -1, length, NULL) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +int +aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { + int bytes; + + ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); + /* 10.5.7.1 X.691 */ + if(range < 0) { + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (number <= bits) + break; + } + bytes = i; + assert(i <= 4); + } + if(range <= 255) { + int i; + for (i = 1; i <= 8; i++) { + int bits = 1 << i; + if (range <= bits) + break; + } + return per_put_few_bits(po, number, i); + } else if(range == 256) { + if (number >= range) + return -1; + bytes = 1; + } else if(range <= 65536) { + if (number >= range) + return -1; + bytes = 2; + } else { /* Ranges > 64K */ + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (range <= bits) + break; + } + assert(i <= 4); + bytes = i; + } + if(aper_put_align(po) < 0) /* Aligning on octet */ + return -1; +/* if(per_put_few_bits(po, bytes, 8)) + return -1; +*/ + return per_put_few_bits(po, number, 8 * bytes); +} diff --git a/e2sim/asn1c/aper_support.h b/e2sim/asn1c/aper_support.h new file mode 100644 index 0000000..a372445 --- /dev/null +++ b/e2sim/asn1c/aper_support.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_SUPPORT_H_ +#define _APER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Aligned PER stream. + */ +ssize_t aper_get_length(asn_per_data_t *pd, ssize_t lb, ssize_t ub, + int effective_bound_bits, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t aper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" to the Aligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-n is needed. + * In that case, invoke aper_put_length(po, -1, -1, 0, NULL) after encoding the + * last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t aper_put_length(asn_per_outp_t *po, ssize_t lb, ssize_t ub, size_t n, + int *opt_need_eom); + +/* Align the current bit position to octet bundary */ +int aper_put_align(asn_per_outp_t *po); +int32_t aper_get_align(asn_per_data_t *pd); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int aper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_SUPPORT_H_ */ diff --git a/e2sim/asn1c/asn/v03/e2ap-common-v03.01.asn b/e2sim/asn1c/asn/v03/e2ap-common-v03.01.asn new file mode 100755 index 0000000..ee0c79f --- /dev/null +++ b/e2sim/asn1c/asn/v03/e2ap-common-v03.01.asn @@ -0,0 +1,27 @@ +-- ASN1START +-- ************************************************************** +-- +-- Common definitions +-- Derived from 3GPP 38.413 (NGAP) +-- +-- ************************************************************** + +E2AP-CommonDataTypes { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-CommonDataTypes (3) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +Criticality ::= ENUMERATED { reject, ignore, notify } + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +ProcedureCode ::= INTEGER (0..255) + +ProtocolIE-ID ::= INTEGER (0..65535) + +TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome } + +END +-- ASN1STOP diff --git a/e2sim/asn1c/asn/v03/e2ap-constant-v03.01.asn b/e2sim/asn1c/asn/v03/e2ap-constant-v03.01.asn new file mode 100755 index 0000000..27b071a --- /dev/null +++ b/e2sim/asn1c/asn/v03/e2ap-constant-v03.01.asn @@ -0,0 +1,165 @@ +-- ASN1START +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + +E2AP-Constants { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-Constants (4) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + ProcedureCode, + ProtocolIE-ID +FROM E2AP-CommonDataTypes; + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** +id-E2setup ProcedureCode ::= 1 +id-ErrorIndication ProcedureCode ::= 2 +id-Reset ProcedureCode ::= 3 +id-RICcontrol ProcedureCode ::= 4 +id-RICindication ProcedureCode ::= 5 +id-RICserviceQuery ProcedureCode ::= 6 +id-RICserviceUpdate ProcedureCode ::= 7 +id-RICsubscription ProcedureCode ::= 8 +id-RICsubscriptionDelete ProcedureCode ::= 9 +id-E2nodeConfigurationUpdate ProcedureCode ::= 10 +id-E2connectionUpdate ProcedureCode ::= 11 +id-RICsubscriptionDeleteRequired ProcedureCode ::= 12 +id-E2removal ProcedureCode ::= 13 +id-RICsubscriptionModification ProcedureCode ::= 14 +id-RICsubscriptionModificationRequired ProcedureCode ::= 15 +id-RICquery ProcedureCode ::= 16 + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +maxProtocolIEs INTEGER ::= 65535 + + +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** +maxnoofErrors INTEGER ::= 256 +maxofE2nodeComponents INTEGER ::= 1024 +maxofRANfunctionID INTEGER ::= 256 +maxofRICactionID INTEGER ::= 16 +maxofTNLA INTEGER ::= 32 +maxofRICrequestID INTEGER ::= 1024 + + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** +id-Cause ProtocolIE-ID ::= 1 +id-CriticalityDiagnostics ProtocolIE-ID ::= 2 +id-GlobalE2node-ID ProtocolIE-ID ::= 3 +id-GlobalRIC-ID ProtocolIE-ID ::= 4 +id-RANfunctionID ProtocolIE-ID ::= 5 +id-RANfunctionID-Item ProtocolIE-ID ::= 6 +id-RANfunctionIEcause-Item ProtocolIE-ID ::= 7 +id-RANfunction-Item ProtocolIE-ID ::= 8 +id-RANfunctionsAccepted ProtocolIE-ID ::= 9 +id-RANfunctionsAdded ProtocolIE-ID ::= 10 +id-RANfunctionsDeleted ProtocolIE-ID ::= 11 +id-RANfunctionsModified ProtocolIE-ID ::= 12 +id-RANfunctionsRejected ProtocolIE-ID ::= 13 +id-RICaction-Admitted-Item ProtocolIE-ID ::= 14 +id-RICactionID ProtocolIE-ID ::= 15 +id-RICaction-NotAdmitted-Item ProtocolIE-ID ::= 16 +id-RICactions-Admitted ProtocolIE-ID ::= 17 +id-RICactions-NotAdmitted ProtocolIE-ID ::= 18 +id-RICaction-ToBeSetup-Item ProtocolIE-ID ::= 19 +id-RICcallProcessID ProtocolIE-ID ::= 20 +id-RICcontrolAckRequest ProtocolIE-ID ::= 21 +id-RICcontrolHeader ProtocolIE-ID ::= 22 +id-RICcontrolMessage ProtocolIE-ID ::= 23 +id-RICcontrolStatus ProtocolIE-ID ::= 24 +id-RICindicationHeader ProtocolIE-ID ::= 25 +id-RICindicationMessage ProtocolIE-ID ::= 26 +id-RICindicationSN ProtocolIE-ID ::= 27 +id-RICindicationType ProtocolIE-ID ::= 28 +id-RICrequestID ProtocolIE-ID ::= 29 +id-RICsubscriptionDetails ProtocolIE-ID ::= 30 +id-TimeToWait ProtocolIE-ID ::= 31 +id-RICcontrolOutcome ProtocolIE-ID ::= 32 +id-E2nodeComponentConfigUpdate ProtocolIE-ID ::= 33 +id-E2nodeComponentConfigUpdate-Item ProtocolIE-ID ::= 34 +id-E2nodeComponentConfigUpdateAck ProtocolIE-ID ::= 35 +id-E2nodeComponentConfigUpdateAck-Item ProtocolIE-ID ::= 36 +id-E2connectionSetup ProtocolIE-ID ::= 39 +id-E2connectionSetupFailed ProtocolIE-ID ::= 40 +id-E2connectionSetupFailed-Item ProtocolIE-ID ::= 41 +id-E2connectionFailed-Item ProtocolIE-ID ::= 42 +id-E2connectionUpdate-Item ProtocolIE-ID ::= 43 +id-E2connectionUpdateAdd ProtocolIE-ID ::= 44 +id-E2connectionUpdateModify ProtocolIE-ID ::= 45 +id-E2connectionUpdateRemove ProtocolIE-ID ::= 46 +id-E2connectionUpdateRemove-Item ProtocolIE-ID ::= 47 +id-TNLinformation ProtocolIE-ID ::= 48 +id-TransactionID ProtocolIE-ID ::= 49 +id-E2nodeComponentConfigAddition ProtocolIE-ID ::= 50 +id-E2nodeComponentConfigAddition-Item ProtocolIE-ID ::= 51 +id-E2nodeComponentConfigAdditionAck ProtocolIE-ID ::= 52 +id-E2nodeComponentConfigAdditionAck-Item ProtocolIE-ID ::= 53 +id-E2nodeComponentConfigRemoval ProtocolIE-ID ::= 54 +id-E2nodeComponentConfigRemoval-Item ProtocolIE-ID ::= 55 +id-E2nodeComponentConfigRemovalAck ProtocolIE-ID ::= 56 +id-E2nodeComponentConfigRemovalAck-Item ProtocolIE-ID ::= 57 +id-E2nodeTNLassociationRemoval ProtocolIE-ID ::= 58 +id-E2nodeTNLassociationRemoval-Item ProtocolIE-ID ::= 59 +id-RICsubscriptionToBeRemoved ProtocolIE-ID ::= 60 +id-RICsubscription-withCause-Item ProtocolIE-ID ::= 61 +id-RICsubscriptionStartTime ProtocolIE-ID ::= 62 +id-RICsubscriptionEndTime ProtocolIE-ID ::= 63 +id-RICeventTriggerDefinitionToBeModified ProtocolIE-ID ::= 64 +id-RICactionsToBeRemovedForModification-List ProtocolIE-ID ::= 65 +id-RICaction-ToBeRemovedForModification-Item ProtocolIE-ID ::= 66 +id-RICactionsToBeModifiedForModification-List ProtocolIE-ID ::= 67 +id-RICaction-ToBeModifiedForModification-Item ProtocolIE-ID ::= 68 +id-RICactionsToBeAddedForModification-List ProtocolIE-ID ::= 69 +id-RICaction-ToBeAddedForModification-Item ProtocolIE-ID ::= 70 +id-RICactionsRemovedForModification-List ProtocolIE-ID ::= 71 +id-RICaction-RemovedForModification-Item ProtocolIE-ID ::= 72 +id-RICactionsFailedToBeRemovedForModification-List ProtocolIE-ID ::= 73 +id-RICaction-FailedToBeRemovedForModification-Item ProtocolIE-ID ::= 74 +id-RICactionsModifiedForModification-List ProtocolIE-ID ::= 75 +id-RICaction-ModifiedForModification-Item ProtocolIE-ID ::= 76 +id-RICactionsFailedToBeModifiedForModification-List ProtocolIE-ID ::= 77 +id-RICaction-FailedToBeModifiedForModification-Item ProtocolIE-ID ::= 78 +id-RICactionsAddedForModification-List ProtocolIE-ID ::= 79 +id-RICaction-AddedForModification-Item ProtocolIE-ID ::= 80 +id-RICactionsFailedToBeAddedForModification-List ProtocolIE-ID ::= 81 +id-RICaction-FailedToBeAddedForModification-Item ProtocolIE-ID ::= 82 +id-RICactionsRequiredToBeModified-List ProtocolIE-ID ::= 83 +id-RICaction-RequiredToBeModified-Item ProtocolIE-ID ::= 84 +id-RICactionsRequiredToBeRemoved-List ProtocolIE-ID ::= 85 +id-RICaction-RequiredToBeRemoved-Item ProtocolIE-ID ::= 86 +id-RICactionsConfirmedForModification-List ProtocolIE-ID ::= 87 +id-RICaction-ConfirmedForModification-Item ProtocolIE-ID ::= 88 +id-RICactionsRefusedToBeModified-List ProtocolIE-ID ::= 89 +id-RICaction-RefusedToBeModified-Item ProtocolIE-ID ::= 90 +id-RICactionsConfirmedForRemoval-List ProtocolIE-ID ::= 91 +id-RICaction-ConfirmedForRemoval-Item ProtocolIE-ID ::= 92 +id-RICactionsRefusedToBeRemoved-List ProtocolIE-ID ::= 93 +id-RICaction-RefusedToBeRemoved-Item ProtocolIE-ID ::= 94 +id-RICqueryHeader ProtocolIE-ID ::= 95 +id-RICqueryDefinition ProtocolIE-ID ::= 96 +id-RICqueryOutcome ProtocolIE-ID ::= 97 +END +-- ASN1STOP diff --git a/e2sim/asn1c/asn/v03/e2ap-container-v03.01.asn b/e2sim/asn1c/asn/v03/e2ap-container-v03.01.asn new file mode 100755 index 0000000..27b36f3 --- /dev/null +++ b/e2sim/asn1c/asn/v03/e2ap-container-v03.01.asn @@ -0,0 +1,130 @@ +-- ASN1START +-- ************************************************************** +-- +-- Container definitions +-- +-- derived from 3GPP 38.413 (NGAP) +-- ************************************************************** + +E2AP-Containers { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-Containers (5) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + Criticality, + Presence, + ProtocolIE-ID +FROM E2AP-CommonDataTypes + + maxProtocolIEs +FROM E2AP-Constants; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +E2AP-PROTOCOL-IES ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +E2AP-PROTOCOL-IES-PAIR ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &firstCriticality Criticality, + &FirstValue, + &secondCriticality Criticality, + &SecondValue, + &presence Presence +} +WITH SYNTAX { + ID &id + FIRST CRITICALITY &firstCriticality + FIRST TYPE &FirstValue + SECOND CRITICALITY &secondCriticality + SECOND TYPE &SecondValue + PRESENCE &presence +} + + + + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + +ProtocolIE-Container {E2AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-SingleContainer {E2AP-PROTOCOL-IES : IEsSetParam} ::= + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field {E2AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id E2AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality E2AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value E2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Protocol IE Pairs +-- +-- ************************************************************** + +ProtocolIE-ContainerPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-FieldPair {{IEsSetParam}} + +ProtocolIE-FieldPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE { + id E2AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}), + firstCriticality E2AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}), + firstValue E2AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}), + secondCriticality E2AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}), + secondValue E2AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-SingleContainer {{IEsSetParam}} + +ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-ContainerPair {{IEsSetParam}} + + +END +-- ASN1STOP diff --git a/e2sim/asn1c/asn/v03/e2ap-epd-v03.01.asn b/e2sim/asn1c/asn/v03/e2ap-epd-v03.01.asn new file mode 100755 index 0000000..b7d5b83 --- /dev/null +++ b/e2sim/asn1c/asn/v03/e2ap-epd-v03.01.asn @@ -0,0 +1,304 @@ +-- ASN1START +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- Derived from 3GPP 38.413 v15.4.0 NGAP +-- ************************************************************** + +E2AP-PDU-Descriptions { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-PDU-Descriptions (0) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureCode +FROM E2AP-CommonDataTypes + + + + E2connectionUpdate, + E2connectionUpdateAcknowledge, + E2connectionUpdateFailure, + E2nodeConfigurationUpdate, + E2nodeConfigurationUpdateAcknowledge, + E2nodeConfigurationUpdateFailure, + E2RemovalRequest, + E2RemovalResponse, + E2RemovalFailure, + E2setupFailure, + E2setupRequest, + E2setupResponse, + ErrorIndication, + ResetRequest, + ResetResponse, + RICcontrolAcknowledge, + RICcontrolFailure, + RICcontrolRequest, + RICindication, + RICserviceQuery, + RICserviceUpdate, + RICserviceUpdateAcknowledge, + RICserviceUpdateFailure, + RICsubscriptionFailure, + RICsubscriptionRequest, + RICsubscriptionResponse, + RICsubscriptionDeleteFailure, + RICsubscriptionDeleteRequest, + RICsubscriptionDeleteResponse, + RICsubscriptionDeleteRequired, + RICsubscriptionModificationRequest, + RICsubscriptionModificationResponse, + RICsubscriptionModificationFailure, + RICsubscriptionModificationRequired, + RICsubscriptionModificationConfirm, + RICsubscriptionModificationRefuse, + RICqueryRequest, + RICqueryResponse, + RICqueryFailure +FROM E2AP-PDU-Contents + + id-E2connectionUpdate, + id-E2nodeConfigurationUpdate, + id-E2removal, + id-E2setup, + id-ErrorIndication, + id-Reset, + id-RICcontrol, + id-RICindication, + id-RICserviceQuery, + id-RICserviceUpdate, + id-RICsubscription, + id-RICsubscriptionDelete, + id-RICsubscriptionDeleteRequired, + id-RICsubscriptionModification, + id-RICsubscriptionModificationRequired, + id-RICquery +FROM E2AP-Constants; + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +E2AP-ELEMENTARY-PROCEDURE ::= CLASS { + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL , + &UnsuccessfulOutcome OPTIONAL , + &procedureCode ProcedureCode UNIQUE , + &criticality Criticality DEFAULT ignore +} + +WITH SYNTAX { + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] +} + +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** + +E2AP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}), + criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}), + criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}), + criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +E2AP-ELEMENTARY-PROCEDURES E2AP-ELEMENTARY-PROCEDURE ::= { + E2AP-ELEMENTARY-PROCEDURES-CLASS-1 | + E2AP-ELEMENTARY-PROCEDURES-CLASS-2, + ... +} + +E2AP-ELEMENTARY-PROCEDURES-CLASS-1 E2AP-ELEMENTARY-PROCEDURE ::= { + ricSubscription | + ricSubscriptionDelete | + ricSubscriptionModification | + ricSubscriptionModificationRequired | + ricQuery | + ricServiceUpdate | + ricControl | + e2setup | + e2nodeConfigurationUpdate | + e2connectionUpdate | + reset | + e2removal, + ... +} + +E2AP-ELEMENTARY-PROCEDURES-CLASS-2 E2AP-ELEMENTARY-PROCEDURE ::= { + ricIndication | + ricServiceQuery | + errorIndication | + ricSubscriptionDeleteRequired, + ... +} + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + +-- New for v01.01 +e2connectionUpdate E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E2connectionUpdate + SUCCESSFUL OUTCOME E2connectionUpdateAcknowledge + UNSUCCESSFUL OUTCOME E2connectionUpdateFailure + PROCEDURE CODE id-E2connectionUpdate + CRITICALITY reject +} + +e2nodeConfigurationUpdate E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E2nodeConfigurationUpdate + SUCCESSFUL OUTCOME E2nodeConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME E2nodeConfigurationUpdateFailure + PROCEDURE CODE id-E2nodeConfigurationUpdate + CRITICALITY reject +} + +-- New for v02.01 +e2removal E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E2RemovalRequest + SUCCESSFUL OUTCOME E2RemovalResponse + UNSUCCESSFUL OUTCOME E2RemovalFailure + PROCEDURE CODE id-E2removal + CRITICALITY reject +} + +e2setup E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E2setupRequest + SUCCESSFUL OUTCOME E2setupResponse + UNSUCCESSFUL OUTCOME E2setupFailure + PROCEDURE CODE id-E2setup + CRITICALITY reject +} + +errorIndication E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + PROCEDURE CODE id-ErrorIndication + CRITICALITY ignore +} + +reset E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ResetRequest + SUCCESSFUL OUTCOME ResetResponse + PROCEDURE CODE id-Reset + CRITICALITY reject +} + +ricControl E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICcontrolRequest + SUCCESSFUL OUTCOME RICcontrolAcknowledge + UNSUCCESSFUL OUTCOME RICcontrolFailure + PROCEDURE CODE id-RICcontrol + CRITICALITY reject +} + +ricIndication E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICindication + PROCEDURE CODE id-RICindication + CRITICALITY ignore +} + +ricServiceQuery E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICserviceQuery + PROCEDURE CODE id-RICserviceQuery + CRITICALITY ignore +} + +ricServiceUpdate E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICserviceUpdate + SUCCESSFUL OUTCOME RICserviceUpdateAcknowledge + UNSUCCESSFUL OUTCOME RICserviceUpdateFailure + PROCEDURE CODE id-RICserviceUpdate + CRITICALITY reject +} + +ricSubscription E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICsubscriptionRequest + SUCCESSFUL OUTCOME RICsubscriptionResponse + UNSUCCESSFUL OUTCOME RICsubscriptionFailure + PROCEDURE CODE id-RICsubscription + CRITICALITY reject +} + +ricSubscriptionDelete E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICsubscriptionDeleteRequest + SUCCESSFUL OUTCOME RICsubscriptionDeleteResponse + UNSUCCESSFUL OUTCOME RICsubscriptionDeleteFailure + PROCEDURE CODE id-RICsubscriptionDelete + CRITICALITY reject +} + +ricSubscriptionDeleteRequired E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICsubscriptionDeleteRequired + PROCEDURE CODE id-RICsubscriptionDeleteRequired + CRITICALITY ignore +} + +ricSubscriptionModification E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICsubscriptionModificationRequest + SUCCESSFUL OUTCOME RICsubscriptionModificationResponse + UNSUCCESSFUL OUTCOME RICsubscriptionModificationFailure + PROCEDURE CODE id-RICsubscriptionModification + CRITICALITY reject +} + +ricSubscriptionModificationRequired E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICsubscriptionModificationRequired + SUCCESSFUL OUTCOME RICsubscriptionModificationConfirm + UNSUCCESSFUL OUTCOME RICsubscriptionModificationRefuse + PROCEDURE CODE id-RICsubscriptionModificationRequired + CRITICALITY reject +} + +ricQuery E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICQueryRequest + SUCCESSFUL OUTCOME RICQueryResponse + UNSUCCESSFUL OUTCOME RICQueryFailure + PROCEDURE CODE id-RICquery + CRITICALITY reject +} + +END +-- ASN1STOP diff --git a/e2sim/asn1c/asn/v03/e2ap-ied-v03.01.asn b/e2sim/asn1c/asn/v03/e2ap-ied-v03.01.asn new file mode 100755 index 0000000..79213fc --- /dev/null +++ b/e2sim/asn1c/asn/v03/e2ap-ied-v03.01.asn @@ -0,0 +1,530 @@ +-- ASN1START +-- ************************************************************** +-- E2AP +-- Information Element Definitions +-- +-- ************************************************************** + +E2AP-IEs { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-IEs (2)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + Criticality, + Presence, + ProcedureCode, + ProtocolIE-ID, + TriggeringMessage +FROM E2AP-CommonDataTypes + + maxnoofErrors, + maxProtocolIEs +FROM E2AP-Constants; + +-- A + +-- ************************************************************** +-- [New for E2AP v02.00] copied from 3GPP 38.413 (NGAP) IEs +-- ************************************************************** +AMFName ::= PrintableString (SIZE(1..150, ...)) + +-- B +-- C +Cause ::= CHOICE { + ricRequest CauseRICrequest, + ricService CauseRICservice, + e2Node CauseE2node, + transport CauseTransport, + protocol CauseProtocol, + misc CauseMisc, + ... +} + +CauseE2node ::= ENUMERATED { + e2node-component-unknown, + ... +} + +CauseMisc ::= ENUMERATED { + control-processing-overload, + hardware-failure, + om-intervention, + unspecified, + ... +} + +CauseProtocol ::= ENUMERATED { + transfer-syntax-error, + abstract-syntax-error-reject, + abstract-syntax-error-ignore-and-notify, + message-not-compatible-with-receiver-state, + semantic-error, + abstract-syntax-error-falsely-constructed-message, + unspecified, + ... +} + +CauseRICrequest ::= ENUMERATED { + ran-function-id-invalid, + action-not-supported, + excessive-actions, + duplicate-action, + duplicate-event-trigger, + function-resource-limit, + request-id-unknown, + inconsistent-action-subsequent-action-sequence, + control-message-invalid, + ric-call-process-id-invalid, + control-timer-expired, + control-failed-to-execute, + system-not-ready, + unspecified, + ... , + ric-subscription-end-time-expired, + ric-subscription-end-time-invalid, + duplicate-ric-request-id, + eventTriggerNotSupported, + requested-information-unavailable, + invalid-information-request +} + +CauseRICservice ::= ENUMERATED{ + ran-function-not-supported, + excessive-functions, + ric-resource-limit, + ... +} +CauseTransport ::= ENUMERATED { + unspecified, + transport-resource-unavailable, + ... +} + +-- ************************************************************** +-- copied from 3GPP 38.413 (NGAP) IEs +-- note: ie-Extensions removed +-- ************************************************************** +CriticalityDiagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + ricRequestorID RICrequestID OPTIONAL, + iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + ... +} + +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE(1..maxnoofErrors)) OF CriticalityDiagnostics-IE-Item + +CriticalityDiagnostics-IE-Item ::= SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + ... +} + +-- D +-- E + +-- Following IE used to carry 3GPP defined SETUP and RAN Configuration messages defined in F1AP, E1AP, XnAP, etc. +E2nodeComponentConfiguration ::= SEQUENCE{ + e2nodeComponentRequestPart OCTET STRING, + e2nodeComponentResponsePart OCTET STRING, + ... +} + +E2nodeComponentConfigurationAck ::= SEQUENCE{ + updateOutcome ENUMERATED {success, failure, ...}, + failureCause Cause OPTIONAL, + ... +} + +E2nodeComponentInterfaceType ::= ENUMERATED {ng, xn, e1, f1, w1, s1, x2,...} + +E2nodeComponentID ::= CHOICE{ + e2nodeComponentInterfaceTypeNG E2nodeComponentInterfaceNG, + e2nodeComponentInterfaceTypeXn E2nodeComponentInterfaceXn, + e2nodeComponentInterfaceTypeE1 E2nodeComponentInterfaceE1, + e2nodeComponentInterfaceTypeF1 E2nodeComponentInterfaceF1, + e2nodeComponentInterfaceTypeW1 E2nodeComponentInterfaceW1, + e2nodeComponentInterfaceTypeS1 E2nodeComponentInterfaceS1, + e2nodeComponentInterfaceTypeX2 E2nodeComponentInterfaceX2, + ... +} + +E2nodeComponentInterfaceE1 ::= SEQUENCE{ + gNB-CU-UP-ID GNB-CU-UP-ID, + ... +} + +E2nodeComponentInterfaceF1 ::= SEQUENCE{ + gNB-DU-ID GNB-DU-ID, + ... +} + +E2nodeComponentInterfaceNG ::= SEQUENCE{ + amf-name AMFName, + ... +} + +E2nodeComponentInterfaceS1 ::= SEQUENCE{ + mme-name MMEname, + ... +} + +E2nodeComponentInterfaceX2 ::= SEQUENCE{ + global-eNB-ID GlobalENB-ID OPTIONAL, + global-en-gNB-ID GlobalenGNB-ID OPTIONAL, + ... +} + +E2nodeComponentInterfaceXn ::= SEQUENCE{ + global-NG-RAN-Node-ID GlobalNG-RANNode-ID, + ... +} + +E2nodeComponentInterfaceW1 ::= SEQUENCE{ + ng-eNB-DU-ID NGENB-DU-ID, + ... +} + +-- ************************************************************** +-- copied from 3GPP 36.423 (X2AP) IEs +-- note: ie-Extensions removed +-- ************************************************************** +ENB-ID ::= CHOICE { + macro-eNB-ID BIT STRING (SIZE (20)), + home-eNB-ID BIT STRING (SIZE (28)), + ... , + short-Macro-eNB-ID BIT STRING (SIZE(18)), + long-Macro-eNB-ID BIT STRING (SIZE(21)) +} +-- ************************************************************** +-- copied from 3GPP 38.423 (XnAP) IEs +-- note: choice-extension removed +-- ************************************************************** +ENB-ID-Choice ::= CHOICE { + enb-ID-macro BIT STRING (SIZE(20)), + enb-ID-shortmacro BIT STRING (SIZE(18)), + enb-ID-longmacro BIT STRING (SIZE(21)), + ... +} + +-- ************************************************************** +-- copied from 3GPP 36.423 (X2AP) IEs +-- note: ie-Extensions removed +-- Note: to avoid duplicate names with XnAP, GNB-ID renamed ENGNB-ID, GlobalGNB-ID renamed GlobalenGNB-ID +-- ************************************************************** +ENGNB-ID ::= CHOICE { + gNB-ID BIT STRING (SIZE (22..32)), + ... +} + +-- F +-- G +GlobalE2node-ID ::= CHOICE{ + gNB GlobalE2node-gNB-ID, + en-gNB GlobalE2node-en-gNB-ID, + ng-eNB GlobalE2node-ng-eNB-ID, + eNB GlobalE2node-eNB-ID, + ... +} + +GlobalE2node-en-gNB-ID ::= SEQUENCE{ + global-en-gNB-ID GlobalenGNB-ID, + en-gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL, + en-gNB-DU-ID GNB-DU-ID OPTIONAL, + ... +} +GlobalE2node-eNB-ID ::= SEQUENCE{ + global-eNB-ID GlobalENB-ID, + ... +} +GlobalE2node-gNB-ID ::= SEQUENCE{ + global-gNB-ID GlobalgNB-ID, + global-en-gNB-ID GlobalenGNB-ID OPTIONAL, + gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL, + gNB-DU-ID GNB-DU-ID OPTIONAL, + ... +} +GlobalE2node-ng-eNB-ID ::= SEQUENCE{ + global-ng-eNB-ID GlobalngeNB-ID, + global-eNB-ID GlobalENB-ID OPTIONAL, + ngENB-DU-ID NGENB-DU-ID OPTIONAL, + ... +} +-- ************************************************************** +-- copied from 3GPP 36.423 (X2AP) IEs +-- note: ie-Extensions removed +-- ************************************************************** + +GlobalENB-ID ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + eNB-ID ENB-ID, + ... +} +-- ************************************************************** +-- copied from 3GPP 36.423 (X2AP) IEs +-- Note: to avoid duplicate names with XnAP, GNB-ID renamed ENGNB-ID, GlobalGNB-ID renamed GlobalenGNB-ID +-- ************************************************************** +GlobalenGNB-ID ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + gNB-ID ENGNB-ID, + ... +} +-- ************************************************************** +-- copied from 3GPP 38.423 (XnAP) IEs +-- note: choice-extension removed +-- ************************************************************** +GlobalgNB-ID ::= SEQUENCE { + plmn-id PLMN-Identity, + gnb-id GNB-ID-Choice, + ... +} + + +-- ************************************************************** +-- copied from 3GPP 38.423 (XnAP) IEs +-- note: choice-extension removed +-- ************************************************************** +GlobalngeNB-ID ::= SEQUENCE { + plmn-id PLMN-Identity, + enb-id ENB-ID-Choice, + ... +} + +-- ************************************************************** +-- [NEW for E2AP v02.00] copied from 3GPP 38.423 (XnAP) IEs +-- Note: extension field removed +-- ************************************************************** + +GlobalNG-RANNode-ID ::= CHOICE { + gNB GlobalgNB-ID, + ng-eNB GlobalngeNB-ID, + ... +} + +GlobalRIC-ID ::= SEQUENCE{ + pLMN-Identity PLMN-Identity, + ric-ID BIT STRING (SIZE (20)), + ... +} + +-- ************************************************************** +-- copied from 3GPP 37.483 (E1AP) IEs +-- ************************************************************** +GNB-CU-UP-ID::= INTEGER (0..68719476735) + +-- ************************************************************** +-- copied from 3GPP 38.473 (F1AP) IEs +-- ************************************************************** +GNB-DU-ID::= INTEGER (0..68719476735) + +-- ************************************************************** +-- copied from 3GPP 38.423 (XnAP) IEs +-- note: choice-extension removed +-- ************************************************************** +GNB-ID-Choice ::= CHOICE { + gnb-ID BIT STRING (SIZE(22..32)), + ... +} +-- H +-- I +-- J +-- K +-- L +-- M + +-- ************************************************************** +-- [New for E2AP v02.00] copied from 3GPP 36.413 (S1AP) IEs +-- ************************************************************** +MMEname ::= PrintableString (SIZE (1..150,...)) + +-- N + +-- ************************************************************** +-- copied from 3GPP 37.473 (W1AP) IEs +-- ************************************************************** +NGENB-DU-ID ::= INTEGER (0..68719476735) + + +-- O +-- P +-- ************************************************************** +-- copied from 3GPP 36.423 (X2AP) IEs +-- ************************************************************** +PLMN-Identity ::= OCTET STRING (SIZE(3)) + +-- Q +-- R +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RANfunctionDefinition ::= OCTET STRING + +RANfunctionID ::= INTEGER (0..4095) + +RANfunctionOID ::= PrintableString(SIZE(1..1000,...)) + +RANfunctionRevision ::= INTEGER (0..4095) + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICactionDefinition ::= OCTET STRING + +-- new in E2AP-v03.00 +RICactionExecutionOrder ::= INTEGER (0..255, ...) + +RICactionID ::= INTEGER (0..255) + +RICactionType ::= ENUMERATED{ + report, + insert, + policy, + ... +} + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICcallProcessID ::= OCTET STRING + +RICcontrolAckRequest ::= ENUMERATED{ + noAck, + ack, + ... +} + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICcontrolHeader ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICcontrolMessage ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICcontrolOutcome ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICeventTriggerDefinition ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICindicationHeader ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICindicationMessage ::= OCTET STRING + +RICindicationSN ::= INTEGER (0..65535) + +RICindicationType ::= ENUMERATED{ + report, + insert, + ... +} + +RICrequestID ::= SEQUENCE { + ricRequestorID INTEGER (0..65535), + ricInstanceID INTEGER (0..65535), + ... +} + +RICsubscriptionTime ::= OCTET STRING (SIZE(8)) + +RICsubsequentAction ::=SEQUENCE{ + ricSubsequentActionType RICsubsequentActionType, + ricTimeToWait RICtimeToWait, + ... +} + +RICsubsequentActionType ::= ENUMERATED{ + continue, + wait, + ... +} + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICqueryHeader ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICqueryDefinition ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICqueryOutcome ::= OCTET STRING + + +RICtimeToWait ::= ENUMERATED{ + w1ms, + w2ms, + w5ms, + w10ms, + w20ms, + w30ms, + w40ms, + w50ms, + w100ms, + w200ms, + w500ms, + w1s, + w2s, + w5s, + w10s, + w20s, + w60s, + ... +} +-- S +-- T +-- ************************************************************** +-- copied from 3GPP 38.413 (NGAP) IEs +-- ************************************************************** +TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...} + + +TNLinformation ::= SEQUENCE{ + tnlAddress BIT STRING (SIZE(1..160,...)), + tnlPort BIT STRING (SIZE(16)) OPTIONAL, + ... +} + +TNLusage ::= ENUMERATED{ric-service, support-function, both, ...} + +TransactionID ::= INTEGER (0..255,...) + +-- ************************************************************** +-- copied from 3GPP 38.413 (NGAP) IEs +-- ************************************************************** +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} + +-- U +-- V +-- W +-- X +-- Y +-- Z + +END +-- ASN1STOP diff --git a/e2sim/asn1c/asn/v03/e2ap-pdu-v03.01.asn b/e2sim/asn1c/asn/v03/e2ap-pdu-v03.01.asn new file mode 100755 index 0000000..80c7e06 --- /dev/null +++ b/e2sim/asn1c/asn/v03/e2ap-pdu-v03.01.asn @@ -0,0 +1,1412 @@ +-- ASN1START +-- ************************************************************** +-- +-- PDU definitions for E2AP +-- Derived from 3GPP 38.413 (NGAP) +-- +-- ************************************************************** + +E2AP-PDU-Contents { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-PDU-Contents (1) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Cause, + CriticalityDiagnostics, + E2nodeComponentConfiguration, + E2nodeComponentConfigurationAck, + E2nodeComponentID, + E2nodeComponentInterfaceType, + GlobalE2node-ID, + GlobalRIC-ID, + RANfunctionDefinition, + RANfunctionID, + RANfunctionOID, + RANfunctionRevision, + RICactionDefinition, + RICactionExecutionOrder, + RICactionID, + RICactionType, + RICcallProcessID, + RICcontrolAckRequest, + RICcontrolHeader, + RICcontrolMessage, + RICcontrolOutcome, + RICeventTriggerDefinition, + RICindicationHeader, + RICindicationMessage, + RICindicationSN, + RICindicationType, + RICrequestID, + RICsubsequentAction, + RICsubscriptionTime, + RICqueryHeader, + RICqueryDefinition, + RICqueryOutcome, + TimeToWait, + TNLinformation, + TNLusage, + TransactionID +FROM E2AP-IEs + + ProtocolIE-Container{}, + ProtocolIE-ContainerList{}, + ProtocolIE-SingleContainer{}, + E2AP-PROTOCOL-IES, + E2AP-PROTOCOL-IES-PAIR +FROM E2AP-Containers + + id-Cause, + id-CriticalityDiagnostics, + id-E2connectionSetup, + id-E2connectionSetupFailed, + id-E2connectionSetupFailed-Item, + id-E2connectionFailed-Item, + id-E2connectionUpdate-Item, + id-E2connectionUpdateAdd, + id-E2connectionUpdateModify, + id-E2connectionUpdateRemove, + id-E2connectionUpdateRemove-Item, + id-E2nodeComponentConfigAddition, + id-E2nodeComponentConfigAddition-Item, + id-E2nodeComponentConfigAdditionAck, + id-E2nodeComponentConfigAdditionAck-Item, + id-E2nodeComponentConfigRemoval, + id-E2nodeComponentConfigRemoval-Item, + id-E2nodeComponentConfigRemovalAck, + id-E2nodeComponentConfigRemovalAck-Item, + id-E2nodeComponentConfigUpdate, + id-E2nodeComponentConfigUpdate-Item, + id-E2nodeComponentConfigUpdateAck, + id-E2nodeComponentConfigUpdateAck-Item, + id-E2nodeTNLassociationRemoval, + id-E2nodeTNLassociationRemoval-Item, + id-GlobalE2node-ID, + id-GlobalRIC-ID, + id-RANfunctionID, + id-RANfunctionID-Item, + id-RANfunctionIEcause-Item, + id-RANfunction-Item, + id-RANfunctionsAccepted, + id-RANfunctionsAdded, + id-RANfunctionsDeleted, + id-RANfunctionsModified, + id-RANfunctionsRejected, + id-RICaction-Admitted-Item, + id-RICactionID, + id-RICaction-NotAdmitted-Item, + id-RICactions-Admitted, + id-RICactions-NotAdmitted, + id-RICaction-ToBeSetup-Item, + id-RICactionsToBeRemovedForModification-List, + id-RICaction-ToBeRemovedForModification-Item, + id-RICactionsToBeModifiedForModification-List, + id-RICaction-ToBeModifiedForModification-Item, + id-RICactionsToBeAddedForModification-List, + id-RICaction-ToBeAddedForModification-Item, + id-RICactionsRemovedForModification-List, + id-RICaction-RemovedForModification-Item, + id-RICactionsFailedToBeRemovedForModification-List, + id-RICaction-FailedToBeRemovedForModification-Item, + id-RICactionsModifiedForModification-List, + id-RICaction-ModifiedForModification-Item, + id-RICactionsFailedToBeModifiedForModification-List, + id-RICaction-FailedToBeModifiedForModification-Item, + id-RICactionsAddedForModification-List, + id-RICaction-AddedForModification-Item, + id-RICactionsFailedToBeAddedForModification-List, + id-RICaction-FailedToBeAddedForModification-Item, + id-RICactionsRequiredToBeModified-List, + id-RICaction-RequiredToBeModified-Item, + id-RICactionsRequiredToBeRemoved-List, + id-RICaction-RequiredToBeRemoved-Item, + id-RICactionsConfirmedForModification-List, + id-RICaction-ConfirmedForModification-Item, + id-RICactionsRefusedToBeModified-List, + id-RICaction-RefusedToBeModified-Item, + id-RICactionsConfirmedForRemoval-List, + id-RICaction-ConfirmedForRemoval-Item, + id-RICactionsRefusedToBeRemoved-List, + id-RICaction-RefusedToBeRemoved-Item, + id-RICcallProcessID, + id-RICcontrolAckRequest, + id-RICcontrolHeader, + id-RICcontrolMessage, + id-RICcontrolOutcome, + id-RICeventTriggerDefinitionToBeModified, + id-RICindicationHeader, + id-RICindicationMessage, + id-RICindicationSN, + id-RICindicationType, + id-RICrequestID, + id-RICserviceQuery, + id-RICsubscriptionDetails, + id-RICsubscriptionToBeRemoved, + id-RICsubscription-withCause-Item, + id-RICsubscriptionStartTime, + id-RICsubscriptionEndTime, + id-RICqueryHeader, + id-RICqueryDefinition, + id-RICqueryOutcome, + id-TimeToWait, + id-TNLinformation, + id-TransactionID, + + maxofE2nodeComponents, + maxofRANfunctionID, + maxofRICactionID, + maxofRICrequestID, + maxofTNLA +FROM E2AP-Constants; + + +-- ************************************************************** +-- +-- MESSAGES FOR RIC FUNCTIONAL PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- RIC Subscription Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SUBSCRIPTION REQUEST +-- +-- ************************************************************** +RICsubscriptionRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionRequest-IEs}}, + ... +} + +RICsubscriptionRequest-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}| + { ID id-RICsubscriptionDetails CRITICALITY reject TYPE RICsubscriptionDetails PRESENCE mandatory}, + ..., + { ID id-RICsubscriptionStartTime CRITICALITY reject TYPE RICsubscriptionTime PRESENCE optional}| + { ID id-RICsubscriptionEndTime CRITICALITY reject TYPE RICsubscriptionTime PRESENCE optional} +} + + +RICsubscriptionDetails ::= SEQUENCE { + ricEventTriggerDefinition RICeventTriggerDefinition, + ricAction-ToBeSetup-List RICactions-ToBeSetup-List, + ... +} + +RICactions-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-SingleContainer { {RICaction-ToBeSetup-ItemIEs} } + +RICaction-ToBeSetup-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-ToBeSetup-Item CRITICALITY ignore TYPE RICaction-ToBeSetup-Item PRESENCE mandatory }, + ... +} + +RICaction-ToBeSetup-Item ::= SEQUENCE { + ricActionID RICactionID, + ricActionType RICactionType, + ricActionDefinition RICactionDefinition OPTIONAL, + ricSubsequentAction RICsubsequentAction OPTIONAL, + ..., + ricActionExecutionOrder RICactionExecutionOrder OPTIONAL -- New in E2APv03.00 + +} + +-- ************************************************************** +-- +-- RIC SUBSCRIPTION RESPONSE +-- +-- ************************************************************** +RICsubscriptionResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container{{RICsubscriptionResponse-IEs}}, + ... +} + +RICsubscriptionResponse-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory } | + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory } | + { ID id-RICactions-Admitted CRITICALITY reject TYPE RICaction-Admitted-List PRESENCE mandatory } | + { ID id-RICactions-NotAdmitted CRITICALITY reject TYPE RICaction-NotAdmitted-List PRESENCE optional }, + ... +} + + + +RICaction-Admitted-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-SingleContainer{{RICaction-Admitted-ItemIEs}} + +RICaction-Admitted-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-Admitted-Item CRITICALITY ignore TYPE RICaction-Admitted-Item PRESENCE mandatory }, + ... +} + +RICaction-Admitted-Item ::= SEQUENCE { + ricActionID RICactionID, + ... +} + +RICaction-NotAdmitted-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer { {RICaction-NotAdmitted-ItemIEs} } + +RICaction-NotAdmitted-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-NotAdmitted-Item CRITICALITY ignore TYPE RICaction-NotAdmitted-Item PRESENCE mandatory }, + ... +} + +RICaction-NotAdmitted-Item ::= SEQUENCE { + ricActionID RICactionID, + cause Cause, + ... +} + +-- ************************************************************** +-- +-- RIC SUBSCRIPTION FAILURE +-- +-- ************************************************************** +RICsubscriptionFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionFailure-IEs}}, + ... +} + +RICsubscriptionFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Subscription Delete Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SUBSCRIPTION DELETE REQUEST +-- +-- ************************************************************** +RICsubscriptionDeleteRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteRequest-IEs}}, + ... +} + +RICsubscriptionDeleteRequest-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- RIC SUBSCRIPTION DELETE RESPONSE +-- +-- ************************************************************** +RICsubscriptionDeleteResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteResponse-IEs}}, + ... +} + +RICsubscriptionDeleteResponse-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }, + ... +} +-- ************************************************************** +-- +-- RIC SUBSCRIPTION DELETE FAILURE +-- +-- ************************************************************** +RICsubscriptionDeleteFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteFailure-IEs}}, + ... +} + +RICsubscriptionDeleteFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Subscription Delete Required Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SUBSCRIPTION DELETE REQUIRED +-- +-- ************************************************************** + +RICsubscriptionDeleteRequired ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteRequired-IEs}}, + ... +} + +RICsubscriptionDeleteRequired-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICsubscriptionToBeRemoved CRITICALITY ignore TYPE RICsubscription-List-withCause PRESENCE mandatory }, + ... +} + +RICsubscription-List-withCause ::= SEQUENCE (SIZE(1..maxofRICrequestID)) OF ProtocolIE-SingleContainer { {RICsubscription-withCause-ItemIEs} } + +RICsubscription-withCause-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICsubscription-withCause-Item CRITICALITY ignore TYPE RICsubscription-withCause-Item PRESENCE mandatory }, + ... +} + +RICsubscription-withCause-Item ::= SEQUENCE { + ricRequestID RICrequestID, + ranFunctionID RANfunctionID, + cause Cause, + ... +} + +-- ************************************************************** +-- +-- RIC Subscription Modification Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SUBSCRIPTION MODIFICATION REQUEST +-- +-- ************************************************************** +RICsubscriptionModificationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionModificationRequest-IEs}}, + ... +} + +RICsubscriptionModificationRequest-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}| + { ID id-RICeventTriggerDefinitionToBeModified CRITICALITY ignore TYPE RICeventTriggerDefinition PRESENCE optional}| + { ID id-RICactionsToBeRemovedForModification-List CRITICALITY ignore TYPE RICactions-ToBeRemovedForModification-List PRESENCE optional}| + { ID id-RICactionsToBeModifiedForModification-List CRITICALITY ignore TYPE RICactions-ToBeModifiedForModification-List PRESENCE optional}| + { ID id-RICactionsToBeAddedForModification-List CRITICALITY ignore TYPE RICactions-ToBeAddedForModification-List PRESENCE optional}, + ... +} + +RICactions-ToBeRemovedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ToBeRemovedForModification-ItemIEs} } + +RICaction-ToBeRemovedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-ToBeRemovedForModification-Item CRITICALITY ignore TYPE RICaction-ToBeRemovedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-ToBeRemovedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + ... +} + +RICactions-ToBeModifiedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ToBeModifiedForModification-ItemIEs} } + +RICaction-ToBeModifiedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-ToBeModifiedForModification-Item CRITICALITY ignore TYPE RICaction-ToBeModifiedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-ToBeModifiedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + ricActionDefinition RICactionDefinition OPTIONAL, + ricActionExecutionOrder RICactionExecutionOrder OPTIONAL, + ricSubsequentAction RICsubsequentAction OPTIONAL, + ... +} + + +RICactions-ToBeAddedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ToBeAddedForModification-ItemIEs} } + +RICaction-ToBeAddedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-ToBeAddedForModification-Item CRITICALITY ignore TYPE RICaction-ToBeAddedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-ToBeAddedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + ricActionType RICactionType, + ricActionDefinition RICactionDefinition, + ricActionExecutionOrder RICactionExecutionOrder, + ricSubsequentAction RICsubsequentAction OPTIONAL, + ... +} +-- ************************************************************** +-- +-- RIC SUBSCRIPTION MODIFICATION RESPONSE +-- +-- ************************************************************** +RICsubscriptionModificationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionModificationResponse-IEs}}, + ... +} + +RICsubscriptionModificationResponse-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}| + { ID id-RICactionsRemovedForModification-List CRITICALITY ignore TYPE RICactions-RemovedForModification-List PRESENCE optional}| + { ID id-RICactionsFailedToBeRemovedForModification-List CRITICALITY ignore TYPE RICactions-FailedToBeRemovedForModification-List PRESENCE optional}| + { ID id-RICactionsModifiedForModification-List CRITICALITY ignore TYPE RICactions-ModifiedForModification-List PRESENCE optional}| + { ID id-RICactionsFailedToBeModifiedForModification-List CRITICALITY ignore TYPE RICactions-FailedToBeModifiedForModification-List PRESENCE optional}| + { ID id-RICactionsAddedForModification-List CRITICALITY ignore TYPE RICactions-AddedForModification-List PRESENCE optional}| + { ID id-RICactionsFailedToBeAddedForModification-List CRITICALITY ignore TYPE RICactions-FailedToBeAddedForModification-List PRESENCE optional}, + ... +} + +RICactions-RemovedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RemovedForModification-ItemIEs} } + +RICaction-RemovedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-RemovedForModification-Item CRITICALITY ignore TYPE RICaction-RemovedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-RemovedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + ... +} +RICactions-FailedToBeRemovedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-FailedToBeRemovedForModification-ItemIEs} } + +RICaction-FailedToBeRemovedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-FailedToBeRemovedForModification-Item CRITICALITY ignore TYPE RICaction-FailedToBeRemovedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-FailedToBeRemovedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + cause Cause, + ... +} + +RICactions-ModifiedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ModifiedForModification-ItemIEs} } + +RICaction-ModifiedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-ModifiedForModification-Item CRITICALITY ignore TYPE RICaction-ModifiedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-ModifiedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + ... +} + +RICactions-FailedToBeModifiedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-FailedToBeModifiedForModification-ItemIEs} } + +RICaction-FailedToBeModifiedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-FailedToBeModifiedForModification-Item CRITICALITY ignore TYPE RICaction-FailedToBeModifiedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-FailedToBeModifiedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + cause Cause, + ... +} + +RICactions-AddedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-AddedForModification-ItemIEs} } + +RICaction-AddedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-AddedForModification-Item CRITICALITY ignore TYPE RICaction-AddedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-AddedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + ... +} + +RICactions-FailedToBeAddedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-FailedToBeAddedForModification-ItemIEs} } + +RICaction-FailedToBeAddedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-FailedToBeAddedForModification-Item CRITICALITY ignore TYPE RICaction-FailedToBeAddedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-FailedToBeAddedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + cause Cause, + ... +} + +-- ************************************************************** +-- +-- RIC SUBSCRIPTION MODIFICATION FAILURE +-- +-- ************************************************************** +RICsubscriptionModificationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionModificationFailure-IEs}}, + ... +} + +RICsubscriptionModificationFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}| + { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- RIC Subscription Modification Required Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SUBSCRIPTION MODIFICATION REQUIRED +-- +-- ************************************************************** +RICsubscriptionModificationRequired ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionModificationRequired-IEs}}, + ... +} + +RICsubscriptionModificationRequired-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}| + { ID id-RICactionsRequiredToBeModified-List CRITICALITY ignore TYPE RICactions-RequiredToBeModified-List PRESENCE optional}| + { ID id-RICactionsRequiredToBeRemoved-List CRITICALITY ignore TYPE RICactions-RequiredToBeRemoved-List PRESENCE optional}, + ... +} + +RICactions-RequiredToBeModified-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RequiredToBeModified-ItemIEs} } + +RICaction-RequiredToBeModified-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-RequiredToBeModified-Item CRITICALITY ignore TYPE RICaction-RequiredToBeModified-Item PRESENCE mandatory }, + ... +} + +RICaction-RequiredToBeModified-Item ::= SEQUENCE { + ricActionID RICactionID, + ricTimeToWait RICtimeToWait, + ... +} + +RICactions-RequiredToBeRemoved-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RequiredToBeRemoved-ItemIEs} } + +RICaction-RequiredToBeRemoved-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-RequiredToBeRemoved-Item CRITICALITY ignore TYPE RICaction-RequiredToBeRemoved-Item PRESENCE mandatory }, + ... +} + +RICaction-RequiredToBeRemoved-Item ::= SEQUENCE { + ricActionID RICactionID, + cause Cause, + ... +} + +-- ************************************************************** +-- +-- RIC SUBSCRIPTION MODIFICATION CONFIRM +-- +-- ************************************************************** +RICsubscriptionModificationConfirm ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionModificationConfirm-IEs}}, + ... +} + +RICsubscriptionModificationConfirm-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}| + { ID id-RICactionsConfirmedForModification-List CRITICALITY ignore TYPE RICactions-ConfirmedForModification-List PRESENCE optional}| + { ID id-RICactionsRefusedToBeModified-List CRITICALITY ignore TYPE RICactions-RefusedToBeModified-List PRESENCE optional}| + { ID id-RICactionsConfirmedForRemoval-List CRITICALITY ignore TYPE RICactions-ConfirmedForRemoval-List PRESENCE optional}| + { ID id-RICactionsRefusedToBeRemoved-List CRITICALITY ignore TYPE RICactions-RefusedToBeRemoved-List PRESENCE optional}, + ... +} + +RICactions-ConfirmedForModification-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ConfirmedForModification-ItemIEs} } + +RICaction-ConfirmedForModification-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-ConfirmedForModification-Item CRITICALITY ignore TYPE RICaction-ConfirmedForModification-Item PRESENCE mandatory }, + ... +} + +RICaction-ConfirmedForModification-Item ::= SEQUENCE { + ricActionID RICactionID, + ... +} +RICactions-RefusedToBeModified-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RefusedToBeModified-ItemIEs} } + +RICaction-RefusedToBeModified-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-RefusedToBeModified-Item CRITICALITY ignore TYPE RICaction-RefusedToBeModified-Item PRESENCE mandatory }, + ... +} + +RICaction-RefusedToBeModified-Item ::= SEQUENCE { + ricActionID RICactionID, + cause Cause, + ... +} + +RICactions-ConfirmedForRemoval-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-ConfirmedForRemoval-ItemIEs} } + +RICaction-ConfirmedForRemoval-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-ConfirmedForRemoval-Item CRITICALITY ignore TYPE RICaction-ConfirmedForRemoval-Item PRESENCE mandatory }, + ... +} + +RICaction-ConfirmedForRemoval-Item ::= SEQUENCE { + ricActionID RICactionID, + ... +} + +RICactions-RefusedToBeRemoved-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer {{RICaction-RefusedToBeRemoved-ItemIEs} } + +RICaction-RefusedToBeRemoved-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-RefusedToBeRemoved-Item CRITICALITY ignore TYPE RICaction-RefusedToBeRemoved-Item PRESENCE mandatory }, + ... +} + +RICaction-RefusedToBeRemoved-Item ::= SEQUENCE { + ricActionID RICactionID, + cause Cause, + ... +} + +-- ************************************************************** +-- +-- RIC SUBSCRIPTION MODIFICATION REFUSE +-- +-- ************************************************************** +RICsubscriptionModificationRefuse ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionModificationRefuse-IEs}}, + ... +} + + +RICsubscriptionModificationRefuse-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}| + { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- RIC Indication Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC INDICATION +-- +-- ************************************************************** +RICindication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICindication-IEs}}, + ... +} + +RICindication-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICactionID CRITICALITY reject TYPE RICactionID PRESENCE mandatory }| + { ID id-RICindicationSN CRITICALITY reject TYPE RICindicationSN PRESENCE optional }| + { ID id-RICindicationType CRITICALITY reject TYPE RICindicationType PRESENCE mandatory }| + { ID id-RICindicationHeader CRITICALITY reject TYPE RICindicationHeader PRESENCE mandatory }| + { ID id-RICindicationMessage CRITICALITY reject TYPE RICindicationMessage PRESENCE mandatory }| + { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Control Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC CONTROL REQUEST +-- +-- ************************************************************** +RICcontrolRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICcontrolRequest-IEs}}, + ... +} + +RICcontrolRequest-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }| + { ID id-RICcontrolHeader CRITICALITY reject TYPE RICcontrolHeader PRESENCE mandatory }| + { ID id-RICcontrolMessage CRITICALITY reject TYPE RICcontrolMessage PRESENCE mandatory }| + { ID id-RICcontrolAckRequest CRITICALITY reject TYPE RICcontrolAckRequest PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- RIC CONTROL ACKNOWLEDGE +-- +-- ************************************************************** +RICcontrolAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICcontrolAcknowledge-IEs}}, + ... +} + +RICcontrolAcknowledge-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }| + { ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- RIC CONTROL FAILURE +-- +-- ************************************************************** +RICcontrolFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICcontrolFailure-IEs}}, + ... +} + +RICcontrolFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional }, + ..., + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } +} + +-- ************************************************************** +-- +-- RIC QUERY Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC QUERY REQUEST +-- +-- ************************************************************** +RICQueryRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICQueryRequest-IEs}}, + ... +} + +RICQueryRequest-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICqueryHeader CRITICALITY reject TYPE RICqueryHeader PRESENCE mandatory }| + { ID id-RICqueryDefinition CRITICALITY reject TYPE RICqueryDefinition PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- RIC QUERY RESPONSE +-- +-- ************************************************************** +RICQueryResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICQueryResponse-IEs}}, + ... +} + +RICQueryResponse-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICqueryOutcome CRITICALITY reject TYPE RICqueryOutcome PRESENCE mandatory }, + ... +} +-- ************************************************************** +-- +-- RIC QUERY FAILURE +-- +-- ************************************************************** +RICQueryFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICQueryFailure-IEs}}, + ... +} + +RICQueryFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MESSAGES FOR GLOBAL PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Error Indication Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- ERROR INDICATION +-- +-- ************************************************************** +ErrorIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}}, + ... +} + +ErrorIndication-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE optional }| + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE optional }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E2 Setup Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- E2 SETUP REQUEST +-- +-- ************************************************************** + +E2setupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E2setupRequestIEs} }, + ... +} + +E2setupRequestIEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-GlobalE2node-ID CRITICALITY reject TYPE GlobalE2node-ID PRESENCE mandatory }| + { ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE mandatory }| + { ID id-E2nodeComponentConfigAddition CRITICALITY reject TYPE E2nodeComponentConfigAddition-List PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- E2 SETUP RESPONSE +-- +-- ************************************************************** + +E2setupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E2setupResponseIEs} }, + ... +} + +E2setupResponseIEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-GlobalRIC-ID CRITICALITY reject TYPE GlobalRIC-ID PRESENCE mandatory }| + { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }| + { ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional }| + { ID id-E2nodeComponentConfigAdditionAck CRITICALITY reject TYPE E2nodeComponentConfigAdditionAck-List PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- E2 SETUP FAILURE +-- +-- ************************************************************** + +E2setupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E2setupFailureIEs} }, + ... +} + +E2setupFailureIEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| + { ID id-TNLinformation CRITICALITY ignore TYPE TNLinformation PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E2 Connection Update Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- E2 CONNECTION UPDATE +-- +-- ************************************************************** +E2connectionUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E2connectionUpdate-IEs}}, + ... +} + +E2connectionUpdate-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-E2connectionUpdateAdd CRITICALITY reject TYPE E2connectionUpdate-List PRESENCE optional }| + { ID id-E2connectionUpdateRemove CRITICALITY reject TYPE E2connectionUpdateRemove-List PRESENCE optional }| + { ID id-E2connectionUpdateModify CRITICALITY reject TYPE E2connectionUpdate-List PRESENCE optional }, + ... +} + +E2connectionUpdate-List ::= SEQUENCE (SIZE(1..maxofTNLA)) OF ProtocolIE-SingleContainer { {E2connectionUpdate-ItemIEs} } + +E2connectionUpdate-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2connectionUpdate-Item CRITICALITY ignore TYPE E2connectionUpdate-Item PRESENCE mandatory }, + ... +} + +E2connectionUpdate-Item ::= SEQUENCE { + tnlInformation TNLinformation, + tnlUsage TNLusage, + ... +} + +E2connectionUpdateRemove-List ::= SEQUENCE (SIZE(1..maxofTNLA)) OF ProtocolIE-SingleContainer { {E2connectionUpdateRemove-ItemIEs} } + +E2connectionUpdateRemove-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2connectionUpdateRemove-Item CRITICALITY ignore TYPE E2connectionUpdateRemove-Item PRESENCE mandatory }, + ... +} + +E2connectionUpdateRemove-Item ::= SEQUENCE { + tnlInformation TNLinformation, + ... +} + + + +-- ************************************************************** +-- +-- E2 CONNECTION UPDATE ACKNOWLEDGE +-- +-- ************************************************************** +E2connectionUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E2connectionUpdateAck-IEs}}, + ... +} + +E2connectionUpdateAck-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-E2connectionSetup CRITICALITY reject TYPE E2connectionUpdate-List PRESENCE optional }| + { ID id-E2connectionSetupFailed CRITICALITY reject TYPE E2connectionSetupFailed-List PRESENCE optional }, + ... +} + +E2connectionSetupFailed-List ::= SEQUENCE (SIZE(1..maxofTNLA)) OF ProtocolIE-SingleContainer { {E2connectionSetupFailed-ItemIEs} } + +E2connectionSetupFailed-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2connectionSetupFailed-Item CRITICALITY ignore TYPE E2connectionSetupFailed-Item PRESENCE mandatory }, + ... +} + +E2connectionSetupFailed-Item ::= SEQUENCE { + tnlInformation TNLinformation, + cause Cause, + ... +} + +-- ************************************************************** +-- +-- E2 CONNECTION UPDATE FAILURE +-- +-- ************************************************************** +E2connectionUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E2connectionUpdateFailure-IEs}}, + ... +} + +E2connectionUpdateFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE optional }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E2 Node Configuration Update Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- E2 NODE CONFIGURATION UPDATE +-- +-- ************************************************************** +E2nodeConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E2nodeConfigurationUpdate-IEs}}, + ... +} + +E2nodeConfigurationUpdate-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-GlobalE2node-ID CRITICALITY reject TYPE GlobalE2node-ID PRESENCE optional }| + { ID id-E2nodeComponentConfigAddition CRITICALITY reject TYPE E2nodeComponentConfigAddition-List PRESENCE optional }| + { ID id-E2nodeComponentConfigUpdate CRITICALITY reject TYPE E2nodeComponentConfigUpdate-List PRESENCE optional }| + { ID id-E2nodeComponentConfigRemoval CRITICALITY reject TYPE E2nodeComponentConfigRemoval-List PRESENCE optional }| + { ID id-E2nodeTNLassociationRemoval CRITICALITY reject TYPE E2nodeTNLassociationRemoval-List PRESENCE optional }, + ... +} + +E2nodeComponentConfigAddition-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigAddition-ItemIEs} } + +E2nodeComponentConfigAddition-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2nodeComponentConfigAddition-Item CRITICALITY reject TYPE E2nodeComponentConfigAddition-Item PRESENCE mandatory }, + ... +} + +E2nodeComponentConfigAddition-Item ::= SEQUENCE { + e2nodeComponentInterfaceType E2nodeComponentInterfaceType, + e2nodeComponentID E2nodeComponentID, + e2nodeComponentConfiguration E2nodeComponentConfiguration, + ... +} + +E2nodeComponentConfigUpdate-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigUpdate-ItemIEs} } + +E2nodeComponentConfigUpdate-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2nodeComponentConfigUpdate-Item CRITICALITY reject TYPE E2nodeComponentConfigUpdate-Item PRESENCE mandatory }, + ... +} + +E2nodeComponentConfigUpdate-Item ::= SEQUENCE { + e2nodeComponentInterfaceType E2nodeComponentInterfaceType, + e2nodeComponentID E2nodeComponentID, + e2nodeComponentConfiguration E2nodeComponentConfiguration, + ... +} + +E2nodeComponentConfigRemoval-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigRemoval-ItemIEs} } + +E2nodeComponentConfigRemoval-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2nodeComponentConfigRemoval-Item CRITICALITY reject TYPE E2nodeComponentConfigRemoval-Item PRESENCE mandatory }, + ... +} + +E2nodeComponentConfigRemoval-Item ::= SEQUENCE { + e2nodeComponentInterfaceType E2nodeComponentInterfaceType, + e2nodeComponentID E2nodeComponentID, + ... +} + +E2nodeTNLassociationRemoval-List ::= SEQUENCE (SIZE(1..maxofTNLA)) OF ProtocolIE-SingleContainer { {E2nodeTNLassociationRemoval-ItemIEs} } + +E2nodeTNLassociationRemoval-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2nodeTNLassociationRemoval-Item CRITICALITY reject TYPE E2nodeTNLassociationRemoval-Item PRESENCE mandatory }, + ... +} + +E2nodeTNLassociationRemoval-Item ::= SEQUENCE { + tnlInformation TNLinformation, + tnlInformationRIC TNLinformation, + ... +} + +-- ************************************************************** +-- +-- E2 NODE CONFIGURATION UPDATE ACKNOWLEDGE +-- +-- ************************************************************** +E2nodeConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E2nodeConfigurationUpdateAcknowledge-IEs}}, + ... +} + +E2nodeConfigurationUpdateAcknowledge-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-E2nodeComponentConfigAdditionAck CRITICALITY reject TYPE E2nodeComponentConfigAdditionAck-List PRESENCE optional }| + { ID id-E2nodeComponentConfigUpdateAck CRITICALITY reject TYPE E2nodeComponentConfigUpdateAck-List PRESENCE optional }| + { ID id-E2nodeComponentConfigRemovalAck CRITICALITY reject TYPE E2nodeComponentConfigRemovalAck-List PRESENCE optional }, + ... +} + +E2nodeComponentConfigAdditionAck-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigAdditionAck-ItemIEs} } + +E2nodeComponentConfigAdditionAck-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2nodeComponentConfigAdditionAck-Item CRITICALITY reject TYPE E2nodeComponentConfigAdditionAck-Item PRESENCE mandatory }, + ... +} + +E2nodeComponentConfigAdditionAck-Item ::= SEQUENCE { + e2nodeComponentInterfaceType E2nodeComponentInterfaceType, + e2nodeComponentID E2nodeComponentID, + e2nodeComponentConfigurationAck E2nodeComponentConfigurationAck, + ... +} + +E2nodeComponentConfigUpdateAck-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigUpdateAck-ItemIEs} } + +E2nodeComponentConfigUpdateAck-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2nodeComponentConfigUpdateAck-Item CRITICALITY reject TYPE E2nodeComponentConfigUpdateAck-Item PRESENCE mandatory }, + ... +} + +E2nodeComponentConfigUpdateAck-Item ::= SEQUENCE { + e2nodeComponentInterfaceType E2nodeComponentInterfaceType, + e2nodeComponentID E2nodeComponentID, + e2nodeComponentConfigurationAck E2nodeComponentConfigurationAck, + ... +} + +E2nodeComponentConfigRemovalAck-List ::= SEQUENCE (SIZE(1..maxofE2nodeComponents)) OF ProtocolIE-SingleContainer { {E2nodeComponentConfigRemovalAck-ItemIEs} } + +E2nodeComponentConfigRemovalAck-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-E2nodeComponentConfigRemovalAck-Item CRITICALITY reject TYPE E2nodeComponentConfigRemovalAck-Item PRESENCE mandatory }, + ... +} + +E2nodeComponentConfigRemovalAck-Item ::= SEQUENCE { + e2nodeComponentInterfaceType E2nodeComponentInterfaceType, + e2nodeComponentID E2nodeComponentID, + e2nodeComponentConfigurationAck E2nodeComponentConfigurationAck, + ... +} + +-- ************************************************************** +-- +-- E2 NODE CONFIGURATION UPDATE FAILURE +-- +-- ************************************************************** +E2nodeConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{E2nodeConfigurationUpdateFailure-IEs}}, + ... +} + +E2nodeConfigurationUpdateFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Reset Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- RESET REQUEST +-- +-- ************************************************************** + +ResetRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetRequestIEs} }, + ... +} + +ResetRequestIEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- RESET RESPONSE +-- +-- ************************************************************** + +ResetResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetResponseIEs} }, + ... +} + +ResetResponseIEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Service Update Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SERVICE UPDATE +-- +-- ************************************************************** +RICserviceUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICserviceUpdate-IEs}}, + ... +} + +RICserviceUpdate-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }| + { ID id-RANfunctionsModified CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }| + { ID id-RANfunctionsDeleted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }, + ... +} + +RANfunctions-List ::= SEQUENCE (SIZE(1..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunction-ItemIEs} } + +RANfunction-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunction-Item CRITICALITY ignore TYPE RANfunction-Item PRESENCE mandatory }, + ... +} + + +RANfunction-Item ::= SEQUENCE { + ranFunctionID RANfunctionID, + ranFunctionDefinition RANfunctionDefinition, + ranFunctionRevision RANfunctionRevision, + ranFunctionOID RANfunctionOID, + ... +} + +RANfunctionsID-List ::= SEQUENCE (SIZE(1..maxofRANfunctionID)) OF ProtocolIE-SingleContainer{{RANfunctionID-ItemIEs}} + +RANfunctionID-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunctionID-Item CRITICALITY ignore TYPE RANfunctionID-Item PRESENCE mandatory }, + ... +} + +RANfunctionID-Item ::= SEQUENCE { + ranFunctionID RANfunctionID, + ranFunctionRevision RANfunctionRevision, + ... +} + +-- ************************************************************** +-- +-- RIC SERVICE UPDATE ACKNOWLEDGE +-- +-- ************************************************************** +RICserviceUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICserviceUpdateAcknowledge-IEs}}, + ... +} + +RICserviceUpdateAcknowledge-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }| + { ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional }, + ... +} + +RANfunctionsIDcause-List ::= SEQUENCE (SIZE(1..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunctionIDcause-ItemIEs} } + +RANfunctionIDcause-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunctionIEcause-Item CRITICALITY ignore TYPE RANfunctionIDcause-Item PRESENCE mandatory }, + ... +} + + +RANfunctionIDcause-Item ::= SEQUENCE { + ranFunctionID RANfunctionID, + cause Cause, + ... +} + + +-- ************************************************************** +-- +-- RIC SERVICE UPDATE FAILURE +-- +-- ************************************************************** +RICserviceUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICserviceUpdateFailure-IEs}}, + ... +} + +RICserviceUpdateFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Service Query Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SERVICE QUERY +-- +-- ************************************************************** +RICserviceQuery ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICserviceQuery-IEs}}, + ... +} + +RICserviceQuery-IEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E2 Removal Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- E2 REMOVAL REQUEST +-- +-- ************************************************************** + +E2RemovalRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E2RemovalRequestIEs} }, + ... +} + +E2RemovalRequestIEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- E2 REMOVAL RESPONSE +-- +-- ************************************************************** + +E2RemovalResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E2RemovalResponseIEs} }, + ... +} + +E2RemovalResponseIEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E2 REMOVAL FAILURE +-- +-- ************************************************************** + +E2RemovalFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E2RemovalFailureIEs} }, + ... +} + +E2RemovalFailureIEs E2AP-PROTOCOL-IES ::= { + { ID id-TransactionID CRITICALITY reject TYPE TransactionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +END +-- ASN1STOP diff --git a/e2sim/asn1c/asn/v03/e2sm-kpm-v03.00.asn b/e2sim/asn1c/asn/v03/e2sm-kpm-v03.00.asn new file mode 100755 index 0000000..a77905e --- /dev/null +++ b/e2sim/asn1c/asn/v03/e2sm-kpm-v03.00.asn @@ -0,0 +1,448 @@ +-- ASN1START +-- ************************************************************** +-- E2SM-KPM Information Element Definitions +-- ************************************************************** + +E2SM-KPM-IEs { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) oran(53148) e2(1) version3(3) e2sm(2) e2sm-KPMMON-IEs (2)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- IEs +-- ************************************************************** + +IMPORTS + CGI, + FiveQI, + PLMNIdentity, + QCI, + QosFlowIdentifier, + RANfunction-Name, + RIC-Format-Type, + RIC-Style-Name, + RIC-Style-Type, + S-NSSAI, + UEID +FROM E2SM-COMMON-IEs; + +TimeStamp ::= OCTET STRING (SIZE(8)) + +BinIndex ::= INTEGER (1.. 65535, ...) + +BinRangeValue ::= CHOICE { + valueInt INTEGER, + valueReal REAL, + ... +} + +GranularityPeriod ::= INTEGER (1.. 4294967295) + +LogicalOR ::= ENUMERATED {true, ...} + +MeasurementType ::= CHOICE { + measName MeasurementTypeName, + measID MeasurementTypeID, + ... +} + +MeasurementTypeName ::= PrintableString(SIZE(1.. 150, ...)) + +MeasurementTypeID ::= INTEGER (1.. 65536, ...) + +MeasurementLabel ::= SEQUENCE { + noLabel ENUMERATED {true, ...} OPTIONAL, + plmnID PLMNIdentity OPTIONAL, + sliceID S-NSSAI OPTIONAL, + fiveQI FiveQI OPTIONAL, + qFI QosFlowIdentifier OPTIONAL, + qCI QCI OPTIONAL, + qCImax QCI OPTIONAL, + qCImin QCI OPTIONAL, + aRPmax INTEGER (1.. 15, ...) OPTIONAL, + aRPmin INTEGER (1.. 15, ...) OPTIONAL, + bitrateRange INTEGER (1.. 65535, ...) OPTIONAL, + layerMU-MIMO INTEGER (1.. 65535, ...) OPTIONAL, + sUM ENUMERATED {true, ...} OPTIONAL, + distBinX INTEGER (1.. 65535, ...) OPTIONAL, + distBinY INTEGER (1.. 65535, ...) OPTIONAL, + distBinZ INTEGER (1.. 65535, ...) OPTIONAL, + preLabelOverride ENUMERATED {true, ...} OPTIONAL, + startEndInd ENUMERATED {start, end, ...} OPTIONAL, + min ENUMERATED {true, ...} OPTIONAL, + max ENUMERATED {true, ...} OPTIONAL, + avg ENUMERATED {true, ...} OPTIONAL, + ..., + ssbIndex INTEGER (1.. 65535, ...) OPTIONAL, + nonGoB-BFmode-Index INTEGER (1.. 65535, ...) OPTIONAL, + mIMO-mode-Index INTEGER (1.. 2, ...) OPTIONAL +} + +TestCondInfo ::= SEQUENCE{ + testType TestCond-Type, + testExpr TestCond-Expression OPTIONAL, + testValue TestCond-Value OPTIONAL, + ... +} + +TestCond-Type ::= CHOICE{ + gBR ENUMERATED {true, ...}, + aMBR ENUMERATED {true, ...}, + isStat ENUMERATED {true, ...}, + isCatM ENUMERATED {true, ...}, + rSRP ENUMERATED {true, ...}, + rSRQ ENUMERATED {true, ...}, + ..., + ul-rSRP ENUMERATED {true, ...}, + cQI ENUMERATED {true, ...}, + fiveQI ENUMERATED {true, ...}, + qCI ENUMERATED {true, ...}, + sNSSAI ENUMERATED {true, ...} +} + +TestCond-Expression ::= ENUMERATED { +equal, +greaterthan, +lessthan, +contains, +present, +... +} + +TestCond-Value ::= CHOICE{ + valueInt INTEGER, + valueEnum INTEGER, + valueBool BOOLEAN, + valueBitS BIT STRING, + valueOctS OCTET STRING, + valuePrtS PrintableString, + ..., + valueReal REAL +} + +-- ************************************************************** +-- Lists +-- ************************************************************** + +maxnoofCells INTEGER ::= 16384 +maxnoofRICStyles INTEGER ::= 63 +maxnoofMeasurementInfo INTEGER ::= 65535 +maxnoofLabelInfo INTEGER ::= 2147483647 +maxnoofMeasurementRecord INTEGER ::= 65535 +maxnoofMeasurementValue INTEGER ::= 2147483647 +maxnoofConditionInfo INTEGER ::= 32768 +maxnoofUEID INTEGER ::= 65535 +maxnoofConditionInfoPerSub INTEGER ::= 32768 +maxnoofUEIDPerSub INTEGER ::= 65535 +maxnoofUEMeasReport INTEGER ::= 65535 +maxnoofBin INTEGER ::= 65535 + +BinRangeDefinition ::= SEQUENCE { +binRangeListX BinRangeList, +binRangeListY BinRangeList OPTIONAL -- This IE shall not be present for a distribution measurement type that doesn't use Distribution Bin Y --, +binRangeListZ BinRangeList OPTIONAL -- This IE shall not be present for a distribution measurement type that doesn't use Distribution Bin Z --, +... +} + +BinRangeList ::= SEQUENCE (SIZE(1..maxnoofBin)) OF BinRangeItem + +BinRangeItem ::= SEQUENCE { + binIndex BinIndex, + startValue BinRangeValue, + endValue BinRangeValue, + ... +} + +DistMeasurementBinRangeList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF DistMeasurementBinRangeItem + +DistMeasurementBinRangeItem ::= SEQUENCE { + measType MeasurementType, + binRangeDef BinRangeDefinition, + ... +} + +MeasurementInfoList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementInfoItem + +MeasurementInfoItem ::= SEQUENCE { + measType MeasurementType, + labelInfoList LabelInfoList, + ... +} + +LabelInfoList ::= SEQUENCE (SIZE(1..maxnoofLabelInfo)) OF LabelInfoItem + +LabelInfoItem ::= SEQUENCE { + measLabel MeasurementLabel, + ... +} + +MeasurementData ::= SEQUENCE (SIZE(1..maxnoofMeasurementRecord)) OF MeasurementDataItem + +MeasurementDataItem ::= SEQUENCE { +measRecord MeasurementRecord, +incompleteFlag ENUMERATED {true, ...} OPTIONAL, +... +} + +MeasurementRecord ::= SEQUENCE (SIZE(1..maxnoofMeasurementValue)) OF MeasurementRecordItem + +MeasurementRecordItem ::= CHOICE { + integer INTEGER (0.. 4294967295), + real REAL, + noValue NULL, + ... +} + +MeasurementInfo-Action-List ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementInfo-Action-Item + +MeasurementInfo-Action-Item ::= SEQUENCE { + measName MeasurementTypeName, + measID MeasurementTypeID OPTIONAL, + ..., + binRangeDef BinRangeDefinition OPTIONAL +} + +MeasurementCondList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementCondItem + +MeasurementCondItem ::= SEQUENCE { + measType MeasurementType, + matchingCond MatchingCondList, + ..., + binRangeDef BinRangeDefinition OPTIONAL +} + +MeasurementCondUEidList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementCondUEidItem + +MeasurementCondUEidItem ::= SEQUENCE { + measType MeasurementType, + matchingCond MatchingCondList, + matchingUEidList MatchingUEidList OPTIONAL, + ..., + matchingUEidPerGP MatchingUEidPerGP OPTIONAL +} + +MatchingCondList ::= SEQUENCE (SIZE(1..maxnoofConditionInfo)) OF MatchingCondItem + +MatchingCondItem ::= SEQUENCE { +matchingCondChoice MatchingCondItem-Choice, +logicalOR LogicalOR OPTIONAL, +... +} + +MatchingCondItem-Choice ::= CHOICE{ + measLabel MeasurementLabel, + testCondInfo TestCondInfo, + ... +} + +MatchingUEidList ::= SEQUENCE (SIZE(1..maxnoofUEID)) OF MatchingUEidItem + +MatchingUEidItem ::= SEQUENCE{ + ueID UEID, + ... +} + +MatchingUEidPerGP ::= SEQUENCE (SIZE(1..maxnoofMeasurementRecord)) OF MatchingUEidPerGP-Item + +MatchingUEidPerGP-Item ::= SEQUENCE{ + matchedPerGP CHOICE{ + noUEmatched ENUMERATED {true, ...}, + oneOrMoreUEmatched MatchingUEidList-PerGP, + ... + }, + ... +} + +MatchingUEidList-PerGP ::= SEQUENCE (SIZE(1..maxnoofUEID)) OF MatchingUEidItem-PerGP + +MatchingUEidItem-PerGP ::= SEQUENCE{ + ueID UEID, + ... +} + + +MatchingUeCondPerSubList ::= SEQUENCE (SIZE(1..maxnoofConditionInfoPerSub)) OF MatchingUeCondPerSubItem + +MatchingUeCondPerSubItem ::= SEQUENCE{ + testCondInfo TestCondInfo, + ..., + logicalOR LogicalOR OPTIONAL +} + +MatchingUEidPerSubList ::= SEQUENCE (SIZE(2..maxnoofUEIDPerSub)) OF MatchingUEidPerSubItem + +MatchingUEidPerSubItem ::= SEQUENCE{ + ueID UEID, + ... +} + +UEMeasurementReportList ::= SEQUENCE (SIZE(1..maxnoofUEMeasReport)) OF UEMeasurementReportItem + +UEMeasurementReportItem ::= SEQUENCE{ + ueID UEID, + measReport E2SM-KPM-IndicationMessage-Format1, + ... +} + + + +-- ************************************************************** +-- E2SM-KPM Service Model IEs +-- ************************************************************** + +-- ************************************************************** +-- Event Trigger Definition OCTET STRING contents +-- ************************************************************** + +E2SM-KPM-EventTriggerDefinition ::= SEQUENCE{ + eventDefinition-formats CHOICE{ + eventDefinition-Format1 E2SM-KPM-EventTriggerDefinition-Format1, + ... + }, + ... +} + +E2SM-KPM-EventTriggerDefinition-Format1 ::= SEQUENCE{ + reportingPeriod INTEGER (1.. 4294967295), + ... +} + +-- ************************************************************** +-- Action Definition OCTET STRING contents +-- ************************************************************** + +E2SM-KPM-ActionDefinition ::= SEQUENCE{ + ric-Style-Type RIC-Style-Type, + actionDefinition-formats CHOICE{ + actionDefinition-Format1 E2SM-KPM-ActionDefinition-Format1, + actionDefinition-Format2 E2SM-KPM-ActionDefinition-Format2, + actionDefinition-Format3 E2SM-KPM-ActionDefinition-Format3, + ..., + actionDefinition-Format4 E2SM-KPM-ActionDefinition-Format4, + actionDefinition-Format5 E2SM-KPM-ActionDefinition-Format5 + }, + ... +} + +E2SM-KPM-ActionDefinition-Format1 ::= SEQUENCE { + measInfoList MeasurementInfoList, + granulPeriod GranularityPeriod, + cellGlobalID CGI OPTIONAL, + ..., + distMeasBinRangeInfo DistMeasurementBinRangeList OPTIONAL +} + +E2SM-KPM-ActionDefinition-Format2 ::= SEQUENCE { + ueID UEID, + subscriptInfo E2SM-KPM-ActionDefinition-Format1, + ... +} + +E2SM-KPM-ActionDefinition-Format3 ::= SEQUENCE { + measCondList MeasurementCondList, + granulPeriod GranularityPeriod, + cellGlobalID CGI OPTIONAL, + ... +} + +E2SM-KPM-ActionDefinition-Format4 ::= SEQUENCE { + matchingUeCondList MatchingUeCondPerSubList, + subscriptionInfo E2SM-KPM-ActionDefinition-Format1, + ... +} + +E2SM-KPM-ActionDefinition-Format5 ::= SEQUENCE { + matchingUEidList MatchingUEidPerSubList, + subscriptionInfo E2SM-KPM-ActionDefinition-Format1, + ... +} + + +-- ************************************************************** +-- Indication Header OCTET STRING contents +-- ************************************************************** + +E2SM-KPM-IndicationHeader ::= SEQUENCE{ + indicationHeader-formats CHOICE{ + indicationHeader-Format1 E2SM-KPM-IndicationHeader-Format1, + ... + }, + ... +} + +E2SM-KPM-IndicationHeader-Format1 ::= SEQUENCE{ + colletStartTime TimeStamp, + fileFormatversion PrintableString (SIZE (0..15), ...) OPTIONAL, + senderName PrintableString (SIZE (0..400), ...) OPTIONAL, + senderType PrintableString (SIZE (0..8), ...) OPTIONAL, + vendorName PrintableString (SIZE (0..32), ...) OPTIONAL, + ... +} + +-- ************************************************************** +-- Indication Message OCTET STRING contents +-- ************************************************************** + +E2SM-KPM-IndicationMessage ::= SEQUENCE{ + indicationMessage-formats CHOICE{ + indicationMessage-Format1 E2SM-KPM-IndicationMessage-Format1, + indicationMessage-Format2 E2SM-KPM-IndicationMessage-Format2, + ..., + indicationMessage-Format3 E2SM-KPM-IndicationMessage-Format3 + }, + ... +} + +E2SM-KPM-IndicationMessage-Format1 ::= SEQUENCE { + measData MeasurementData, + measInfoList MeasurementInfoList OPTIONAL, + granulPeriod GranularityPeriod OPTIONAL, + ... +} + +E2SM-KPM-IndicationMessage-Format2 ::= SEQUENCE { + measData MeasurementData, + measCondUEidList MeasurementCondUEidList, + granulPeriod GranularityPeriod OPTIONAL, + ... +} + +E2SM-KPM-IndicationMessage-Format3 ::= SEQUENCE { + ueMeasReportList UEMeasurementReportList, + ... +} + + +-- *************************************************************** +-- RAN Function Definition OCTET STRING contents +-- *************************************************************** + +E2SM-KPM-RANfunction-Description ::= SEQUENCE{ + ranFunction-Name RANfunction-Name, + ric-EventTriggerStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RIC-EventTriggerStyle-Item OPTIONAL, + ric-ReportStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RIC-ReportStyle-Item OPTIONAL, + ... +} + +RIC-EventTriggerStyle-Item ::= SEQUENCE{ + ric-EventTriggerStyle-Type RIC-Style-Type, + ric-EventTriggerStyle-Name RIC-Style-Name, + ric-EventTriggerFormat-Type RIC-Format-Type, + ... +} + +RIC-ReportStyle-Item ::= SEQUENCE{ + ric-ReportStyle-Type RIC-Style-Type, + ric-ReportStyle-Name RIC-Style-Name, + ric-ActionFormat-Type RIC-Format-Type, + measInfo-Action-List MeasurementInfo-Action-List, + ric-IndicationHeaderFormat-Type RIC-Format-Type, + ric-IndicationMessageFormat-Type RIC-Format-Type, + ... +} + +END + +-- ASN1STOP diff --git a/e2sim/asn1c/asn/v03/e2sm-v03.01.asn b/e2sim/asn1c/asn/v03/e2sm-v03.01.asn new file mode 100755 index 0000000..e969046 --- /dev/null +++ b/e2sim/asn1c/asn/v03/e2sm-v03.01.asn @@ -0,0 +1,573 @@ +-- ASN1START +-- ************************************************************** +-- E2SM +-- Information Element Definitions +-- +-- ************************************************************** + +E2SM-COMMON-IEs { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2sm(2) e2sm-COMMON-IEs (0)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- -------------------------------------------------- +-- Constants +-- -------------------------------------------------- + +maxE1APid INTEGER ::= 65535 +maxF1APid INTEGER ::= 4 + +-- IEs derived from 3GPP 36.423 (X2AP) +maxEARFCN INTEGER ::= 65535 + +-- IEs derived from 3GPP 38.473 (F1AP) +maxNRARFCN INTEGER ::= 3279165 +maxnoofNrCellBands INTEGER ::= 32 + + +-- -------------------------------------------------- +-- E2SM Commmon IEs +-- -------------------------------------------------- + +CGI ::= CHOICE { + nR-CGI NR-CGI, + eUTRA-CGI EUTRA-CGI, + ... +} + +CoreCPID ::= CHOICE { + fiveGC GUAMI, + ePC GUMMEI, + ... +} + +InterfaceIdentifier ::= CHOICE { + nG InterfaceID-NG, + xN InterfaceID-Xn, + f1 InterfaceID-F1, + e1 InterfaceID-E1, + s1 InterfaceID-S1, + x2 InterfaceID-X2, + w1 InterfaceID-W1, + ... +} + +InterfaceID-NG ::= SEQUENCE { + guami GUAMI, + ... +} + +InterfaceID-Xn ::= SEQUENCE { + global-NG-RAN-ID GlobalNGRANNodeID, + ... +} + +InterfaceID-F1 ::= SEQUENCE { + globalGNB-ID GlobalGNB-ID, + gNB-DU-ID GNB-DU-ID, + ... +} + +InterfaceID-E1 ::= SEQUENCE { + globalGNB-ID GlobalGNB-ID, + gNB-CU-UP-ID GNB-CU-UP-ID, + ... +} + +InterfaceID-S1 ::= SEQUENCE { + gUMMEI GUMMEI, + ... +} + +InterfaceID-X2 ::= SEQUENCE { + nodeType CHOICE { + global-eNB-ID GlobalENB-ID, + global-en-gNB-ID GlobalenGNB-ID, + ... + }, + ... +} + +InterfaceID-W1 ::= SEQUENCE { + global-ng-eNB-ID GlobalNgENB-ID, + ng-eNB-DU-ID NGENB-DU-ID, + ... +} + +Interface-MessageID ::= SEQUENCE { + interfaceProcedureID INTEGER, + messageType ENUMERATED {initiatingMessage, successfulOutcome, unsuccessfulOutcome, ...}, + ... +} + +InterfaceType ::= ENUMERATED {nG, xn, f1, e1, s1, x2, w1, ...} + +GroupID ::= CHOICE { + fiveGC FiveQI, + ePC QCI, + ... +} + +QoSID ::= CHOICE { + fiveGC FiveQI, + ePC QCI, + ... +} + +RANfunction-Name ::= SEQUENCE{ + ranFunction-ShortName PrintableString(SIZE(1..150,...)), + ranFunction-E2SM-OID PrintableString(SIZE(1..1000,...)), + ranFunction-Description PrintableString(SIZE(1..150,...)), + ranFunction-Instance INTEGER OPTIONAL, + ... +} + +RIC-Format-Type ::= INTEGER + +RIC-Style-Type ::= INTEGER + +RIC-Style-Name ::= PrintableString(SIZE(1..150,...)) + + +RRC-MessageID ::= SEQUENCE { + rrcType CHOICE { + lTE RRCclass-LTE, + nR RRCclass-NR, + ... + }, + messageID INTEGER, + ... +} + +RRCclass-LTE ::= ENUMERATED {bCCH-BCH, bCCH-BCH-MBMS, bCCH-DL-SCH, bCCH-DL-SCH-BR, bCCH-DL-SCH-MBMS, mCCH, pCCH, dL-CCCH, dL-DCCH, uL-CCCH, uL-DCCH, sC-MCCH, ...} + +RRCclass-NR ::= ENUMERATED {bCCH-BCH, bCCH-DL-SCH, dL-CCCH, dL-DCCH, pCCH, uL-CCCH, uL-CCCH1, uL-DCCH, ...} + +ServingCell-ARFCN ::= CHOICE { + nR NR-ARFCN, + eUTRA E-UTRA-ARFCN, + ... +} + +ServingCell-PCI ::= CHOICE { + nR NR-PCI, + eUTRA E-UTRA-PCI, + ... +} + + +UEID ::= CHOICE{ + gNB-UEID UEID-GNB, + gNB-DU-UEID UEID-GNB-DU, + gNB-CU-UP-UEID UEID-GNB-CU-UP, + ng-eNB-UEID UEID-NG-ENB, + ng-eNB-DU-UEID UEID-NG-ENB-DU, + en-gNB-UEID UEID-EN-GNB, + eNB-UEID UEID-ENB, + ... +} + +UEID-GNB ::= SEQUENCE{ + amf-UE-NGAP-ID AMF-UE-NGAP-ID, + guami GUAMI, + gNB-CU-UE-F1AP-ID-List UEID-GNB-CU-F1AP-ID-List OPTIONAL, +-- C-ifCUDUseparated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CU-DU separated gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. More than 1 F1AP ID shall be reported by E2 Node only when NR-DC is established. + gNB-CU-CP-UE-E1AP-ID-List UEID-GNB-CU-CP-E1AP-ID-List OPTIONAL, +-- C-ifCPUPseparated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CP-UP separated gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. + ran-UEID RANUEID OPTIONAL, + m-NG-RAN-UE-XnAP-ID NG-RANnodeUEXnAPID OPTIONAL, +-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported by both MN and SN. + globalGNB-ID GlobalGNB-ID OPTIONAL, +-- This IE shall not be used. This IE is replaced with globalNG-RANNode-ID. + ..., + globalNG-RANNode-ID GlobalNGRANNodeID OPTIONAL +-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported only by SN. +} + +UEID-GNB-CU-CP-E1AP-ID-List ::= SEQUENCE (SIZE(1..maxE1APid)) OF UEID-GNB-CU-CP-E1AP-ID-Item + +UEID-GNB-CU-CP-E1AP-ID-Item ::= SEQUENCE{ + gNB-CU-CP-UE-E1AP-ID GNB-CU-CP-UE-E1AP-ID, + ... +} + +UEID-GNB-CU-F1AP-ID-List ::= SEQUENCE (SIZE(1..maxF1APid)) OF UEID-GNB-CU-CP-F1AP-ID-Item + +UEID-GNB-CU-CP-F1AP-ID-Item ::= SEQUENCE{ + gNB-CU-UE-F1AP-ID GNB-CU-UE-F1AP-ID, + ... +} + +UEID-GNB-DU ::= SEQUENCE{ + gNB-CU-UE-F1AP-ID GNB-CU-UE-F1AP-ID, + ran-UEID RANUEID OPTIONAL, + ... +} + +UEID-GNB-CU-UP ::= SEQUENCE{ + gNB-CU-CP-UE-E1AP-ID GNB-CU-CP-UE-E1AP-ID, + ran-UEID RANUEID OPTIONAL, + ... +} + +UEID-NG-ENB ::= SEQUENCE{ + amf-UE-NGAP-ID AMF-UE-NGAP-ID, + guami GUAMI, + ng-eNB-CU-UE-W1AP-ID NGENB-CU-UE-W1AP-ID OPTIONAL, +-- C-ifCUDUseperated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CU-DU seperated ng-eNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. + m-NG-RAN-UE-XnAP-ID NG-RANnodeUEXnAPID OPTIONAL, +-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported by both MN and SN. + globalNgENB-ID GlobalNgENB-ID OPTIONAL, +-- This IE shall not be used. This IE is replaced with globalNG-RANNode-ID. + ..., + globalNG-RANNode-ID GlobalNGRANNodeID OPTIONAL +-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported only by SN. +} + + +UEID-NG-ENB-DU ::= SEQUENCE{ + ng-eNB-CU-UE-W1AP-ID NGENB-CU-UE-W1AP-ID, + ... +} + +UEID-EN-GNB ::= SEQUENCE{ + m-eNB-UE-X2AP-ID ENB-UE-X2AP-ID, + m-eNB-UE-X2AP-ID-Extension ENB-UE-X2AP-ID-Extension OPTIONAL, + globalENB-ID GlobalENB-ID, + gNB-CU-UE-F1AP-ID GNB-CU-UE-F1AP-ID OPTIONAL, +-- C-ifCUDUseperated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CU-DU seperated en-gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. + gNB-CU-CP-UE-E1AP-ID-List UEID-GNB-CU-CP-E1AP-ID-List OPTIONAL, +-- C-ifCPUPseparated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CP-UP separated en-gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. + ran-UEID RANUEID OPTIONAL, + ... +} + +UEID-ENB ::= SEQUENCE{ + mME-UE-S1AP-ID MME-UE-S1AP-ID, + gUMMEI GUMMEI, + m-eNB-UE-X2AP-ID ENB-UE-X2AP-ID OPTIONAL, +-- This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported by MeNB and SeNB. + m-eNB-UE-X2AP-ID-Extension ENB-UE-X2AP-ID-Extension OPTIONAL, + globalENB-ID GlobalENB-ID OPTIONAL, +-- This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported only by SeNB. + ... +} + +-- ************************************************************** +-- 3GPP derived IEs +-- ************************************************************** +-- NOTE: +-- - Extension fields removed and replaced with "..." +-- - IE names modified across all extracts to use "PLMNIdentity" + +-- ************************************************************** +-- IEs derived from 3GPP 36.413 (S1AP) +-- ************************************************************** +-- ************************************************************** + +-- copied from v16.5.0 +ENB-ID ::= CHOICE { + macro-eNB-ID BIT STRING (SIZE (20)), + home-eNB-ID BIT STRING (SIZE (28)), + ... , + short-Macro-eNB-ID BIT STRING (SIZE(18)), + long-Macro-eNB-ID BIT STRING (SIZE(21)) +} + +-- copied from v16.5.0 +GlobalENB-ID ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + eNB-ID ENB-ID, + ... +} + + +-- copied from v16.5.0 +GUMMEI ::= SEQUENCE { + pLMN-Identity PLMNIdentity, + mME-Group-ID MME-Group-ID, + mME-Code MME-Code, + ... +} + +-- copied from v16.5.0 +MME-Group-ID ::= OCTET STRING (SIZE (2)) + +-- copied from v16.5.0 +MME-Code ::= OCTET STRING (SIZE (1)) + +-- copied from v16.5.0 +MME-UE-S1AP-ID ::= INTEGER (0..4294967295) + +-- copied from v16.5.0 +QCI ::= INTEGER (0..255) + +-- copied from v16.5.0 +SubscriberProfileIDforRFP ::= INTEGER (1..256) + + + + +-- ************************************************************** +-- IEs derived from 3GPP 36.423 (X2AP) +-- ************************************************************** +-- Extension fields removed. +-- Note: to avoid duplicate names with NGAP, XnAP, etc.: +-- GNB-ID renamed ENGNB-ID, +-- GlobalGNB-ID renamed GlobalenGNB-ID, +-- UE-X2AP-ID renamed ENB-UE-X2AP-ID +-- UE-X2AP-ID-Extension renamed ENB-UE-X2AP-ID-Extension +-- ************************************************************** + +-- copied from v16.5.0 +EN-GNB-ID ::= CHOICE { + en-gNB-ID BIT STRING (SIZE (22..32)), + ... +} + +-- copied from v16.5.0 +ENB-UE-X2AP-ID ::= INTEGER (0..4095) + +-- copied from v16.5.0 +ENB-UE-X2AP-ID-Extension ::= INTEGER (0..4095, ...) + +-- copied from v16.5.0 +E-UTRA-ARFCN ::= INTEGER (0..maxEARFCN) + +-- copied from v16.5.0 +E-UTRA-PCI ::= INTEGER (0..503, ...) + +-- copied from v16.5.0 +E-UTRA-TAC ::= OCTET STRING (SIZE(2)) + +-- copied from v16.5.0 +GlobalenGNB-ID ::= SEQUENCE { + pLMN-Identity PLMNIdentity, + en-gNB-ID EN-GNB-ID, + ... +} + + + + + +-- ************************************************************** +-- IEs derived from 3GPP 37.473 (W1AP) +-- ************************************************************** + +-- copied from v16.3.0 +NGENB-CU-UE-W1AP-ID ::= INTEGER (0..4294967295) + +-- copied from v16.3.0 +NGENB-DU-ID ::= INTEGER (0..68719476735) + + + + + +-- ************************************************************** +-- IEs derived from 3GPP 38.413 (NGAP) +-- Extension fields removed and replaced with ... +-- ************************************************************** + +-- copied from v16.2.0 +AMFPointer ::= BIT STRING (SIZE(6)) + +-- copied from v16.2.0 +AMFRegionID ::= BIT STRING (SIZE(8)) + +-- copied from v16.2.0 +AMFSetID ::= BIT STRING (SIZE(10)) + +-- copied from v16.2.0 +AMF-UE-NGAP-ID ::= INTEGER (0..1099511627775) + +-- copied from v16.2.0 +EUTRACellIdentity ::= BIT STRING (SIZE(28)) + +-- copied from v16.2.0 +EUTRA-CGI ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + eUTRACellIdentity EUTRACellIdentity, + ... +} + +-- copied from v16.2.0 +FiveQI ::= INTEGER (0..255, ...) + +-- copied from v16.2.0 +GlobalGNB-ID ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + gNB-ID GNB-ID, + ... +} + +-- copied from v16.2.0 +GlobalNgENB-ID ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + ngENB-ID NgENB-ID, + ... +} + + +-- copied from v16.2.0 +GNB-ID ::= CHOICE { + gNB-ID BIT STRING (SIZE(22..32)), + ... +} + +-- copied from v16.2.0 +GUAMI ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + aMFRegionID AMFRegionID, + aMFSetID AMFSetID, + aMFPointer AMFPointer, + ... +} + +-- copied from v16.2.0 +IndexToRFSP ::= INTEGER (1..256, ...) + +-- copied from v16.2.0 +NgENB-ID ::= CHOICE { + macroNgENB-ID BIT STRING (SIZE(20)), + shortMacroNgENB-ID BIT STRING (SIZE(18)), + longMacroNgENB-ID BIT STRING (SIZE(21)), + ... +} + +-- copied from v16.2.0 +NRCellIdentity ::= BIT STRING (SIZE(36)) + +-- copied from v16.2.0 +NR-CGI ::= SEQUENCE { + pLMNIdentity PLMNIdentity, + nRCellIdentity NRCellIdentity, + ... +} + +-- copied from v16.2.0 +PLMNIdentity ::= OCTET STRING (SIZE(3)) + +-- copied from v16.2.0 +QosFlowIdentifier ::= INTEGER (0..63, ...) + +-- copied from v16.2.0 +SD ::= OCTET STRING (SIZE(3)) + +-- copied from v16.2.0 +S-NSSAI ::= SEQUENCE { + sST SST, + sD SD OPTIONAL, + ... +} + +-- copied from v16.2.0 +SST ::= OCTET STRING (SIZE(1)) + + + + + +-- ************************************************************** +-- IEs derived from 3GPP 38.423 (XnAP) +-- ************************************************************** + +-- copied from v16.2.0 +NG-RANnodeUEXnAPID ::= INTEGER (0.. 4294967295) + +GlobalNGRANNodeID ::= CHOICE { + gNB GlobalGNB-ID, + ng-eNB GlobalNgENB-ID, + ... +} + + + + +-- ************************************************************** +-- IEs derived from 3GPP 37.483 (E1AP) +-- ************************************************************** + +-- copied from v17.1.0 +GNB-CU-CP-UE-E1AP-ID ::= INTEGER (0..4294967295) + +-- copied from v17.1.0 +GNB-CU-UP-ID ::= INTEGER (0..68719476735) + + + + + + +-- ************************************************************** +-- IEs derived from 3GPP 38.473 (F1AP) +-- ************************************************************** + +-- copied from v16.5.0 +FiveGS-TAC ::= OCTET STRING (SIZE(3)) + +-- copied from v16.5.0 +FreqBandNrItem ::= SEQUENCE { + freqBandIndicatorNr INTEGER (1..1024, ...), + ... +} + + +-- copied from v16.5.0 +GNB-CU-UE-F1AP-ID ::= INTEGER (0..4294967295) + +-- copied from v16.5.0 +GNB-DU-ID ::= INTEGER (0..68719476735) + +-- copied from v16.5.0 +NR-PCI ::= INTEGER (0..1007) + +-- copied from v16.5.0 +NR-ARFCN ::= SEQUENCE { + nRARFCN INTEGER (0..maxNRARFCN), + ... +} +-- copied from v16.5.0 +NRFrequencyBand-List ::= SEQUENCE (SIZE(1..maxnoofNrCellBands)) OF NRFrequencyBandItem + +-- copied from v16.5.0 +NRFrequencyBandItem ::= SEQUENCE { + freqBandIndicatorNr INTEGER (1..1024,...), + supportedSULBandList SupportedSULBandList, + ... +} + +-- copied from v16.5.0 +NRFrequencyInfo ::= SEQUENCE { + nrARFCN NR-ARFCN, + frequencyBand-List NRFrequencyBand-List, + frequencyShift7p5khz NRFrequencyShift7p5khz OPTIONAL, + ... +} + +-- copied from v16.5.0 +NRFrequencyShift7p5khz ::= ENUMERATED {false, true, ...} + + +-- copied from v16.5.0 +RANUEID ::= OCTET STRING (SIZE (8)) + + +-- copied from v16.5.0 +SupportedSULBandList ::= SEQUENCE (SIZE(0..maxnoofNrCellBands)) OF SupportedSULFreqBandItem + +-- copied from v16.5.0 +SupportedSULFreqBandItem ::= SEQUENCE { + freqBandIndicatorNr INTEGER (1..1024,...), + ... +} + + + + + +END +-- ASN1STOP diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_SEQUENCE_OF.c b/e2sim/asn1c/asn_SEQUENCE_OF.c similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_SEQUENCE_OF.c rename to e2sim/asn1c/asn_SEQUENCE_OF.c diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_SEQUENCE_OF.h b/e2sim/asn1c/asn_SEQUENCE_OF.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_SEQUENCE_OF.h rename to e2sim/asn1c/asn_SEQUENCE_OF.h diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_SET_OF.c b/e2sim/asn1c/asn_SET_OF.c similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_SET_OF.c rename to e2sim/asn1c/asn_SET_OF.c diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_SET_OF.h b/e2sim/asn1c/asn_SET_OF.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_SET_OF.h rename to e2sim/asn1c/asn_SET_OF.h diff --git a/e2sim/asn1c/asn_application.c b/e2sim/asn1c/asn_application.c new file mode 100644 index 0000000..7992185 --- /dev/null +++ b/e2sim/asn1c/asn_application.c @@ -0,0 +1,538 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_app_consume_bytes_f *callback, + void *callback_key); + + +struct callback_count_bytes_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + size_t computed_size; +}; + +/* + * Encoder which just counts bytes that come through it. + */ +static int +callback_count_bytes_cb(const void *data, size_t size, void *keyp) { + struct callback_count_bytes_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret >= 0) { + key->computed_size += size; + } + + return ret; +} + +struct overrun_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct dynamic_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct callback_failure_catch_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + int callback_failed; +}; + +/* + * Encoder which doesn't stop counting bytes + * even if it reaches the end of the buffer. + */ +static int +overrun_encoder_cb(const void *data, size_t size, void *keyp) { + struct overrun_encoder_key *key = keyp; + + if(key->computed_size + size > key->buffer_size) { + /* + * Avoid accident on the next call: + * stop adding bytes to the buffer. + */ + key->buffer_size = 0; + } else { + memcpy((char *)key->buffer + key->computed_size, data, size); + } + key->computed_size += size; + + return 0; +} + +/* + * Encoder which dynamically allocates output, and continues + * to count even if allocation failed. + */ +static int +dynamic_encoder_cb(const void *data, size_t size, void *keyp) { + struct dynamic_encoder_key *key = keyp; + + if(key->buffer) { + if(key->computed_size + size >= key->buffer_size) { + void *p; + size_t new_size = key->buffer_size; + + do { + new_size *= 2; + } while(new_size <= key->computed_size + size); + + p = REALLOC(key->buffer, new_size); + if(p) { + key->buffer = p; + key->buffer_size = new_size; + } else { + FREEMEM(key->buffer); + key->buffer = 0; + key->buffer_size = 0; + key->computed_size += size; + return 0; + } + } + memcpy((char *)key->buffer + key->computed_size, data, size); + } + + key->computed_size += size; + + return 0; +} + +/* + * Encoder which help convert the application level encoder failure into EIO. + */ +static int +callback_failure_catch_cb(const void *data, size_t size, void *keyp) { + struct callback_failure_catch_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret < 0) { + key->callback_failed = 1; + } + + return ret; +} + +asn_enc_rval_t +asn_encode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { + struct callback_failure_catch_key cb_key; + asn_enc_rval_t er = {0,0,0}; + + if(!callback) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.callback_failed = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + callback_failure_catch_cb, &cb_key); + if(cb_key.callback_failed) { + assert(er.encoded == -1); + assert(errno == EBADF); + errno = EIO; + } + + return er; +} + +asn_enc_rval_t +asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + void *buffer, size_t buffer_size) { + struct overrun_encoder_key buf_key; + asn_enc_rval_t er = {0,0,0}; + + if(buffer_size > 0 && !buffer) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + buf_key.buffer = buffer; + buf_key.buffer_size = buffer_size; + buf_key.computed_size = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + overrun_encoder_cb, &buf_key); + + if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + er.encoded, buf_key.computed_size); + assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); + } + + return er; +} + +asn_encode_to_new_buffer_result_t +asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr) { + struct dynamic_encoder_key buf_key; + asn_encode_to_new_buffer_result_t res; + + buf_key.buffer_size = 16; + buf_key.buffer = MALLOC(buf_key.buffer_size); + buf_key.computed_size = 0; + + res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + dynamic_encoder_cb, &buf_key); + + if(res.result.encoded >= 0 + && (size_t)res.result.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + res.result.encoded, buf_key.computed_size); + assert(res.result.encoded < 0 + || (size_t)res.result.encoded == buf_key.computed_size); + } + + res.buffer = buf_key.buffer; + + /* 0-terminate just in case. */ + if(res.buffer) { + assert(buf_key.computed_size < buf_key.buffer_size); + ((char *)res.buffer)[buf_key.computed_size] = '\0'; + } + + return res; +} + +static asn_enc_rval_t +asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *callback, void *callback_key) { + asn_enc_rval_t er = {0,0,0}; +#if !defined(ASN_DISABLE_XER_SUPPORT) + enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + + (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; + +#if !defined(ASN_DISABLE_BER_SUPPORT) + 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; +#else + case ATS_BER: + case ATS_DER: + case ATS_CER: + errno = ENOENT; /* BER is not defined. */ + ASN__ENCODE_FAILED; + +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(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; +#else + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + errno = ENOENT; /* OER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_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; +#else + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + errno = ENOENT; /* UPER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + 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; +#else + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: + errno = ENOENT; /* APER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_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; +#else + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + errno = ENOENT; /* XER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) + case ATS_JER: + if(td->op->jer_encoder) { + er = jer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->jer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* JER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + 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 !defined(ASN_DISABLE_RFILL_SUPPORT) + 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; +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + + case ATS_DER: + case ATS_BER: +#if !defined(ASN_DISABLE_BER_SUPPORT) + return ber_decode(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: +#if !defined(ASN_DISABLE_OER_SUPPORT) + return oer_decode(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: +#if !defined(ASN_DISABLE_UPER_SUPPORT) + return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ + + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: +#if !defined(ASN_DISABLE_APER_SUPPORT) + return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: +#if !defined(ASN_DISABLE_XER_SUPPORT) + return xer_decode(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + } +} + diff --git a/e2sim/asn1c/asn_application.h b/e2sim/asn1c/asn_application.h new file mode 100644 index 0000000..bf10cd3 --- /dev/null +++ b/e2sim/asn1c/asn_application.h @@ -0,0 +1,173 @@ +/*- + * 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 */ +#include "asn_config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A selection of ASN.1 Transfer Syntaxes to use with generalized + * encoders and decoders declared further in this .h file. + */ +enum asn_transfer_syntax { + /* Avoid appearance of a default transfer syntax. */ + ATS_INVALID = 0, + /* Plaintext output (not conforming to any standard), for debugging. */ + ATS_NONSTANDARD_PLAINTEXT, + /* Returns a randomly generated structure. */ + ATS_RANDOM, + /* + * X.690: + * BER: Basic Encoding Rules. + * DER: Distinguished Encoding Rules. + * CER: Canonical Encoding Rules. + * DER and CER are more strict variants of BER. + */ + ATS_BER, + ATS_DER, + ATS_CER, /* Only decoding is supported */ + /* + * X.696: + * OER: Octet Encoding Rules. + * CANONICAL-OER is a more strict variant of BASIC-OER. + */ + ATS_BASIC_OER, + ATS_CANONICAL_OER, + /* + * X.691: + * PER: Packed Encoding Rules. + * CANONICAL-PER is a more strict variant of BASIC-PER. + * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). + */ + ATS_UNALIGNED_BASIC_PER, + ATS_UNALIGNED_CANONICAL_PER, + ATS_ALIGNED_BASIC_PER, + ATS_ALIGNED_CANONICAL_PER, + /* + * X.693: + * XER: XML Encoding Rules. + * CANONICAL-XER is a more strict variant of BASIC-XER. + */ + ATS_BASIC_XER, + ATS_CANONICAL_XER, + ATS_JER, +}; + +/* + * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_bit_data.c b/e2sim/asn1c/asn_bit_data.c similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_bit_data.c rename to e2sim/asn1c/asn_bit_data.c diff --git a/e2sim/asn1c/asn_bit_data.h b/e2sim/asn1c/asn_bit_data.h new file mode 100644 index 0000000..f14714b --- /dev/null +++ b/e2sim/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 preceding "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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs.h b/e2sim/asn1c/asn_codecs.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs.h rename to e2sim/asn1c/asn_codecs.h diff --git a/e2sim/asn1c/asn_codecs_prim.c b/e2sim/asn1c/asn_codecs_prim.c new file mode 100644 index 0000000..f3fdbfd --- /dev/null +++ b/e2sim/asn1c/asn_codecs_prim.c @@ -0,0 +1,31 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; + } +} diff --git a/e2sim/asn1c/asn_codecs_prim.h b/e2sim/asn1c/asn_codecs_prim.h new file mode 100644 index 0000000..5bbd9cf --- /dev/null +++ b/e2sim/asn1c/asn_codecs_prim.h @@ -0,0 +1,56 @@ +/*- + * 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; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f ber_decode_primitive; +der_type_encoder_f der_encode_primitive; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +/* + * 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); +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_PRIM_H */ diff --git a/e2sim/asn1c/asn_codecs_prim_ber.c b/e2sim/asn1c/asn_codecs_prim_ber.c new file mode 100644 index 0000000..c5c2cef --- /dev/null +++ b/e2sim/asn1c/asn_codecs_prim_ber.c @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode an always-primitive type. + */ +asn_dec_rval_t +ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval; + ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ + + /* + * If the structure is not there, allocate it. + */ + if(st == NULL) { + st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) ASN__DECODE_FAILED; + *sptr = (void *)st; + } + + ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", + td->name, tag_mode); + + /* + * Check tags and extract value length. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + st->size = (int)length; + /* The following better be optimized away. */ + if(sizeof(st->size) != sizeof(length) + && (ber_tlv_len_t)st->size != length) { + st->size = 0; + ASN__DECODE_FAILED; + } + + st->buf = (uint8_t *)MALLOC(length + 1); + if(!st->buf) { + st->size = 0; + ASN__DECODE_FAILED; + } + + memcpy(st->buf, buf_ptr, length); + st->buf[length] = '\0'; /* Just in case */ + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s", + (long)rval.consumed, + (long)length, td->name); + + return rval; +} + +/* + * Encode an always-primitive type using DER. + */ +asn_enc_rval_t +der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + + ASN_DEBUG("%s %s as a primitive type (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, + cb, app_key); + ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb && st->buf) { + if(cb(st->buf, st->size, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } else { + assert(st->buf || st->size == 0); + } + + erval.encoded += st->size; + ASN__ENCODED_OK(erval); +} diff --git a/e2sim/asn1c/asn_codecs_prim_xer.c b/e2sim/asn1c/asn_codecs_prim_xer.c new file mode 100644 index 0000000..70c91bc --- /dev/null +++ b/e2sim/asn1c/asn_codecs_prim_xer.c @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * 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 = (chunk_buf == NULL)? NULL : ((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/e2sim/asn1c/asn_config.h b/e2sim/asn1c/asn_config.h new file mode 100644 index 0000000..9e38708 --- /dev/null +++ b/e2sim/asn1c/asn_config.h @@ -0,0 +1,3 @@ +// Generated automatically. Don't edit manually! + +#define ASN_DISABLE_OER_SUPPORT 1 diff --git a/e2sim/asn1c/asn_constant.h b/e2sim/asn1c/asn_constant.h new file mode 100644 index 0000000..0162b7a --- /dev/null +++ b/e2sim/asn1c/asn_constant.h @@ -0,0 +1,90 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +#ifndef _ASN_CONSTANT_H +#define _ASN_CONSTANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define min_val_ProcedureCode (0) +#define max_val_ProcedureCode (255) +#define min_val_ProtocolIE_ID (0) +#define max_val_ProtocolIE_ID (65535) +#define maxProtocolIEs (65535) +#define maxnoofErrors (256) +#define maxofE2nodeComponents (1024) +#define maxofRANfunctionID (256) +#define maxofRICactionID (16) +#define maxofTNLA (32) +#define maxofRICrequestID (1024) +#define min_val_E2AP_IEs_GNB_CU_UP_ID (0) +#define max_val_E2AP_IEs_GNB_CU_UP_ID (68719476735) +#define min_val_E2AP_IEs_GNB_DU_ID (0) +#define max_val_E2AP_IEs_GNB_DU_ID (68719476735) +#define min_val_E2AP_IEs_NGENB_DU_ID (0) +#define max_val_E2AP_IEs_NGENB_DU_ID (68719476735) +#define min_val_RANfunctionID (0) +#define max_val_RANfunctionID (4095) +#define min_val_RANfunctionRevision (0) +#define max_val_RANfunctionRevision (4095) +#define min_val_RICactionID (0) +#define max_val_RICactionID (255) +#define min_val_RICindicationSN (0) +#define max_val_RICindicationSN (65535) +#define min_val_GranularityPeriod (1) +#define max_val_GranularityPeriod (4294967295) +#define maxnoofCells (16384) +#define maxnoofRICStyles (63) +#define maxnoofMeasurementInfo (65535) +#define maxnoofLabelInfo (2147483647) +#define maxnoofMeasurementRecord (65535) +#define maxnoofMeasurementValue (2147483647) +#define maxnoofConditionInfo (32768) +#define maxnoofUEID (65535) +#define maxnoofConditionInfoPerSub (32768) +#define maxnoofUEIDPerSub (65535) +#define maxnoofUEMeasReport (65535) +#define maxnoofBin (65535) +#define maxE1APid (65535) +#define maxF1APid (4) +#define maxEARFCN (65535) +#define maxNRARFCN (3279165) +#define maxnoofNrCellBands (32) +#define min_val_MME_UE_S1AP_ID (0) +#define max_val_MME_UE_S1AP_ID (4294967295) +#define min_val_QCI (0) +#define max_val_QCI (255) +#define min_val_SubscriberProfileIDforRFP (1) +#define max_val_SubscriberProfileIDforRFP (256) +#define min_val_ENB_UE_X2AP_ID (0) +#define max_val_ENB_UE_X2AP_ID (4095) +#define min_val_E_UTRA_ARFCN (0) +#define max_val_E_UTRA_ARFCN (65535) +#define min_val_NGENB_CU_UE_W1AP_ID (0) +#define max_val_NGENB_CU_UE_W1AP_ID (4294967295) +#define min_val_E2SM_COMMON_IEs_NGENB_DU_ID (0) +#define max_val_E2SM_COMMON_IEs_NGENB_DU_ID (68719476735) +#define min_val_AMF_UE_NGAP_ID (0) +#define max_val_AMF_UE_NGAP_ID (1099511627775) +#define min_val_NG_RANnodeUEXnAPID (0) +#define max_val_NG_RANnodeUEXnAPID (4294967295) +#define min_val_GNB_CU_CP_UE_E1AP_ID (0) +#define max_val_GNB_CU_CP_UE_E1AP_ID (4294967295) +#define min_val_E2SM_COMMON_IEs_GNB_CU_UP_ID (0) +#define max_val_E2SM_COMMON_IEs_GNB_CU_UP_ID (68719476735) +#define min_val_GNB_CU_UE_F1AP_ID (0) +#define max_val_GNB_CU_UE_F1AP_ID (4294967295) +#define min_val_E2SM_COMMON_IEs_GNB_DU_ID (0) +#define max_val_E2SM_COMMON_IEs_GNB_DU_ID (68719476735) +#define min_val_NR_PCI (0) +#define max_val_NR_PCI (1007) + + +#ifdef __cplusplus +} +#endif + +#endif /* _ASN_CONSTANT_H */ diff --git a/e2sim/asn1c/asn_internal.c b/e2sim/asn1c/asn_internal.c new file mode 100644 index 0000000..c2a8108 --- /dev/null +++ b/e2sim/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/e2sim/asn1c/asn_internal.h b/e2sim/asn1c/asn_internal.h new file mode 100644 index 0000000..d6ce619 --- /dev/null +++ b/e2sim/asn1c/asn_internal.h @@ -0,0 +1,187 @@ +/* + * 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 +#ifndef __EXTENSIONS__ +#define __EXTENSIONS__ /* for Sun */ +#endif + +#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 + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#include +#include +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#include +#include +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +/* 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. + */ + +/* Since GCC 13, AddressSanitizer started defaulting to +* ASAN_OPTIONS="detect_stack_use_after_return=1", which makes this check +* fail due to apparently jumping stack pointers. +* Hence, disable this check if building with ASan, as documented in: +* GCC: https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html +* Clang: https://clang.llvm.org/docs/AddressSanitizer.html#conditional-compilation-with-has-feature-address-sanitizer +*/ +#if defined(__SANITIZE_ADDRESS__) + #define ASN__SANITIZE_ENABLED 1 +#elif defined(__has_feature) +#if __has_feature(address_sanitizer) + #define ASN__SANITIZE_ENABLED 1 +#endif +#endif + +#define ASN__DEFAULT_STACK_MAX (30000) + +#if defined(ASN__SANITIZE_ENABLED) || defined(ASN_DISABLE_STACK_OVERFLOW_CHECK) +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + (void)ctx; + return 0; +} +#else +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; +} +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_INTERNAL_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_ioc.h b/e2sim/asn1c/asn_ioc.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_ioc.h rename to e2sim/asn1c/asn_ioc.h diff --git a/e2sim/asn1c/asn_random_fill.c b/e2sim/asn1c/asn_random_fill.c new file mode 100644 index 0000000..15771b6 --- /dev/null +++ b/e2sim/asn1c/asn_random_fill.c @@ -0,0 +1,66 @@ +/* + * 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; + (void)intmax_max; + int max = 0xffffff; + +#ifdef __WIN32__ + max = RAND_MAX-1; +#endif + + assert(RAND_MAX > max); /* Seen 7ffffffd! */ + assert(range < intmax_max); + + for(; got_entropy < range;) { + got_entropy = (got_entropy << 24) | max; +#ifdef HAVE_RANDOM + value = (value << 24) | (random() % max); +#else + value = (value << 24) | (rand() % max); +#endif + } + + return lb + (intmax_t)(value % (range + 1)); + } +} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_random_fill.h b/e2sim/asn1c/asn_random_fill.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_random_fill.h rename to e2sim/asn1c/asn_random_fill.h diff --git a/e2sim/asn1c/asn_system.h b/e2sim/asn1c/asn_system.h new file mode 100644 index 0000000..0f0d495 --- /dev/null +++ b/e2sim/asn1c/asn_system.h @@ -0,0 +1,169 @@ +/* + * 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 */ +#include /* for PRIdMAX */ + +#ifdef _WIN32 + +#include +#ifndef __MINGW32__ +#define snprintf _snprintf +#define vsnprintf _vsnprintf +#endif + +/* 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 */ +#ifdef HAVE_NETINET_IN_H +#include /* for ntohl() */ +#endif +#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 +#if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__>= 4) || __GNUC__ > 4) +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(gnu_printf, fmt, var)) +#elif defined(__GNUC__) +#if defined(ANDROID) +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(__format__(__printf__, fmt, var)) +#else +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) +#endif +#else +#define CC_PRINTFLIKE(fmt, var) +#endif +#define CC_NOTUSED CC_ATTRIBUTE(unused) +#ifndef CC_ATTR_NO_SANITIZE +#if __GNUC__ < 8 +#define CC_ATTR_NO_SANITIZE(what) +#else +#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) +#endif +#endif + +/* Figure out if thread safety is requested */ +#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) +#define ASN_THREAD_SAFE +#endif /* Thread safety */ + +#ifndef offsetof /* If not defined by */ +#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) +#endif /* offsetof */ + +#ifndef MIN /* Suitable for comparing primitive types (integers) */ +#if defined(__GNUC__) +#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ + ((_a)<(_b)?(_a):(_b)); }) +#else /* !__GNUC__ */ +#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ +#endif /* __GNUC__ */ +#endif /* MIN */ + +#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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_decoder.c b/e2sim/asn1c/ber_decoder.c similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_decoder.c rename to e2sim/asn1c/ber_decoder.c diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_decoder.h b/e2sim/asn1c/ber_decoder.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_decoder.h rename to e2sim/asn1c/ber_decoder.h diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_length.c b/e2sim/asn1c/ber_tlv_length.c similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_length.c rename to e2sim/asn1c/ber_tlv_length.c diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_length.h b/e2sim/asn1c/ber_tlv_length.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_length.h rename to e2sim/asn1c/ber_tlv_length.h diff --git a/e2sim/asn1c/ber_tlv_tag.c b/e2sim/asn1c/ber_tlv_tag.c new file mode 100644 index 0000000..64ec14f --- /dev/null +++ b/e2sim/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 accommodate + * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_tag.h b/e2sim/asn1c/ber_tlv_tag.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_tag.h rename to e2sim/asn1c/ber_tlv_tag.h diff --git a/e2sim/asn1c/constr_CHOICE.c b/e2sim/asn1c/constr_CHOICE.c new file mode 100644 index 0000000..5f52e3d --- /dev/null +++ b/e2sim/asn1c/constr_CHOICE.c @@ -0,0 +1,358 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_TYPE_operation_t asn_OP_CHOICE = { + CHOICE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + CHOICE_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + CHOICE_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + CHOICE_decode_ber, + CHOICE_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + CHOICE_decode_xer, + CHOICE_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + CHOICE_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + CHOICE_decode_oer, + CHOICE_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + CHOICE_decode_uper, + CHOICE_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + CHOICE_decode_aper, + CHOICE_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + CHOICE_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + CHOICE_outmost_tag +}; + +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; + } +} + +/* + * See the definitions. + */ +static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, + const void *sptr, asn_TYPE_member_t **elm, + unsigned *present); + +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; + } +} + +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. + */ +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; +} + +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; +} diff --git a/e2sim/asn1c/constr_CHOICE.h b/e2sim/asn1c/constr_CHOICE.h new file mode 100644 index 0000000..03d606c --- /dev/null +++ b/e2sim/asn1c/constr_CHOICE.h @@ -0,0 +1,119 @@ +/* + * 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; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f CHOICE_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f CHOICE_compare; + +asn_constr_check_f CHOICE_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f CHOICE_decode_ber; +der_type_encoder_f CHOICE_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f CHOICE_decode_xer; +xer_type_encoder_f CHOICE_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f CHOICE_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f CHOICE_decode_oer; +oer_type_encoder_f CHOICE_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f CHOICE_decode_uper; +per_type_encoder_f CHOICE_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f CHOICE_decode_aper; +per_type_encoder_f CHOICE_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f CHOICE_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +asn_outmost_tag_f CHOICE_outmost_tag; + +extern asn_TYPE_operation_t asn_OP_CHOICE; + +unsigned _fetch_present_idx( + const void *struct_ptr, + unsigned off, + unsigned size); + +void _set_present_idx( + void *sptr, + unsigned offset, + unsigned size, + unsigned present); + +/* + * 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/e2sim/asn1c/constr_CHOICE_aper.c b/e2sim/asn1c/constr_CHOICE_aper.c new file mode 100644 index 0000000..41040aa --- /dev/null +++ b/e2sim/asn1c/constr_CHOICE_aper.c @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +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 = NULL; + asn_TYPE_member_t *elm = NULL; /* CHOICE's element */ + void *memb_ptr = NULL; + void **memb_ptr2 = NULL; + void *st = *sptr; + int value = 0; + + 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; + + if(specs && specs->tag2el_count > specs->ext_start) { + value = aper_get_nsnnwn(pd, specs->tag2el_count - specs->ext_start); /* extension elements range */ + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) + value = specs->from_canonical_order[value]; + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + 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 = {0,0,0}; + if(specs->ext_start == -1) + ASN__ENCODE_FAILED; + int n = present - specs->ext_start; + if(n <= 63) { + if(n < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n, 7)) ASN__ENCODE_FAILED; + } else + 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); + } +} diff --git a/e2sim/asn1c/constr_CHOICE_ber.c b/e2sim/asn1c/constr_CHOICE_ber.c new file mode 100644 index 0000000..7ad42c7 --- /dev/null +++ b/e2sim/asn1c/constr_CHOICE_ber.c @@ -0,0 +1,447 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#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) + +/* + * 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) { + /* ?Subtracted below! */ + ctx->left += rval.consumed; + } + ADVANCE(rval.consumed); + } else { + ctx->left = -1; + } + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key; + + key.el_tag = tlv_tag; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG("Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + + ASN_DEBUG("Skipping unknown tag %s", + ber_tlv_tag_string(tlv_tag)); + + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + RETURN(RC_OK); + } + } while(0); + + case 2: + /* + * PHASE 2. + * Read in the element. + */ + do { + asn_TYPE_member_t *elm;/* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &elements[ctx->step]; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + /* Set presence to be able to free it properly at any time */ + _set_present_idx(st, specs->pres_offset, + specs->pres_size, ctx->step + 1); + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, + memb_ptr2, ptr, LEFT, + elm->tag_mode); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + RETURN(RC_FAIL); + case RC_FAIL: /* Fatal error */ + RETURN(rval.code); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } while(0); + + NEXT_PHASE(ctx); + + /* Fall through */ + case 3: + ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", + td->name, (long)ctx->left, (long)size, + tag_mode, td->tags_count); + + if(ctx->left > 0) { + /* + * The type must be fully decoded + * by the CHOICE member-specific decoder. + */ + RETURN(RC_FAIL); + } + + if(ctx->left == -1 + && !(tag_mode || td->tags_count)) { + /* + * This is an untagged CHOICE. + * It doesn't contain nothing + * except for the member itself, including all its tags. + * The decoding is completed. + */ + NEXT_PHASE(ctx); + break; + } + + /* + * Read in the "end of data chunks"'s. + */ + while(ctx->left < 0) { + ssize_t tl; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * Expected <0><0>... + */ + if(((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + continue; + } + } else { + ASN_DEBUG("Unexpected continuation in %s", + td->name); + RETURN(RC_FAIL); + } + + /* UNREACHABLE */ + } + + NEXT_PHASE(ctx); + case 4: + /* No meaningful work here */ + break; + } + + RETURN(RC_OK); +} + +asn_enc_rval_t +CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval = {0,0,0}; + const void *memb_ptr; + size_t computed_size = 0; + unsigned present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("%s %s as CHOICE", + cb ? "Encoding" : "Estimating", td->name); + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) { + if(present == 0 && td->elements_count == 0) { + /* The CHOICE is empty?! */ + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + ASN__ENCODE_FAILED; + } + + /* + * Seek over the present member of the structure. + */ + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + if(elm->optional) { + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* + * If the CHOICE itself is tagged EXPLICIT: + * T ::= [2] EXPLICIT CHOICE { ... } + * Then emit the appropriate tags. + */ + if(tag_mode == 1 || td->tags_count) { + /* + * For this, we need to pre-compute the member. + */ + ssize_t ret; + + /* Encode member with its tag */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, + elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + + /* Encode CHOICE with parent or my own tag */ + ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, + cb, app_key); + if(ret == -1) + ASN__ENCODE_FAILED; + computed_size += ret; + } + + /* + * Encode the single underlying member. + */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + + ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", + (long)erval.encoded, (long)computed_size); + + erval.encoded += computed_size; + + return erval; +} diff --git a/e2sim/asn1c/constr_CHOICE_jer.c b/e2sim/asn1c/constr_CHOICE_jer.c new file mode 100644 index 0000000..22d5090 --- /dev/null +++ b/e2sim/asn1c/constr_CHOICE_jer.c @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef JER_ADVANCE +#define JER_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) + +asn_enc_rval_t +CHOICE_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + ASN__CALLBACK3("{\n\"", 3, mname, mlen, "\": ", 2); + + tmper = elm->type->op->jer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK("}", 1); + // ASN__CALLBACK3("", 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/e2sim/asn1c/constr_CHOICE_print.c b/e2sim/asn1c/constr_CHOICE_print.c new file mode 100644 index 0000000..a97202f --- /dev/null +++ b/e2sim/asn1c/constr_CHOICE_print.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; + } +} diff --git a/e2sim/asn1c/constr_CHOICE_rfill.c b/e2sim/asn1c/constr_CHOICE_rfill.c new file mode 100644 index 0000000..fd0a101 --- /dev/null +++ b/e2sim/asn1c/constr_CHOICE_rfill.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; +} diff --git a/e2sim/asn1c/constr_CHOICE_uper.c b/e2sim/asn1c/constr_CHOICE_uper.c new file mode 100644 index 0000000..77aab6d --- /dev/null +++ b/e2sim/asn1c/constr_CHOICE_uper.c @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) { + ASN_DEBUG("CHOICE presence from wire %d", value); + value = specs->from_canonical_order[value]; + ASN_DEBUG("CHOICE presence index effective %d", value); + } + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + if(ct && ct->range_bits >= 0) { + if(present_enc < ct->lower_bound + || present_enc > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG( + "CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + + elm = &td->elements[present]; + ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, + present_enc); + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) ASN__ENCODE_FAILED; + if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} diff --git a/e2sim/asn1c/constr_CHOICE_xer.c b/e2sim/asn1c/constr_CHOICE_xer.c new file mode 100644 index 0000000..45b4290 --- /dev/null +++ b/e2sim/asn1c/constr_CHOICE_xer.c @@ -0,0 +1,316 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value of a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + if(ctx->phase == 0 && !*xml_tag) + ctx->phase = 1; /* Skip the outer tag checking phase */ + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Only waiting for closing tag. + * Phase 4: Skipping unknown extensions. + * Phase 5: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 4;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the member. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + unsigned old_present; + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Start/Continue decoding the inner member */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, + elm->name, + buf_ptr, size); + XER_ADVANCE(tmprval.consumed); + ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", + elm->type->name, tmprval.code); + old_present = _fetch_present_idx(st, + specs->pres_offset, + specs->pres_size); + assert(old_present == 0 || old_present == edx + 1); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, + specs->pres_size, edx + 1); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 3; + /* Fall through */ + } + + /* No need to wait for closing tag; special mode. */ + if(ctx->phase == 3 && !*xml_tag) { + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + xml_tag, tcv); + + /* Skip the extensions section */ + if(ctx->phase == 4) { + ASN_DEBUG("skip_unknown(%d, %ld)", + tcv, (long)ctx->left); + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 5; + RETURN(RC_FAIL); + case 1: + ctx->phase = 3; + /* Fall through */ + case 0: + XER_ADVANCE(ch_size); + continue; + case 2: + ctx->phase = 3; + break; + } + } + + switch(tcv) { + case XCT_BOTH: + break; /* No CHOICE? */ + case XCT_CLOSING: + if(ctx->phase != 3) + break; + XER_ADVANCE(ch_size); + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + if(ctx->phase != 1) + break; /* Really unexpected */ + + /* + * Search which inner member corresponds to this tag. + */ + for(edx = 0; edx < td->elements_count; edx++) { + elm = &td->elements[edx]; + tcv = xer_check_tag(buf_ptr,ch_size,elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + edx = td->elements_count; + break; /* Phase out */ + } + break; + } + if(edx != td->elements_count) + continue; + + /* It is expected extension */ + if(specs->ext_start != -1) { + ASN_DEBUG("Got anticipated extension"); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + ctx->phase = 3; /* Terminating */ + } else { + ctx->left = 1; + ctx->phase = 4; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" + " (ph=%d, tag=%s)", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + td->name, ctx->phase, xml_tag); + break; + } + + ctx->phase = 5; /* Phase out, just in case */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/e2sim/asn1c/constr_SEQUENCE.c b/e2sim/asn1c/constr_SEQUENCE.c new file mode 100644 index 0000000..8397d0c --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE.c @@ -0,0 +1,197 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_TYPE_operation_t asn_OP_SEQUENCE = { + SEQUENCE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + SEQUENCE_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + SEQUENCE_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + SEQUENCE_decode_ber, + SEQUENCE_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + SEQUENCE_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + SEQUENCE_decode_oer, + SEQUENCE_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + SEQUENCE_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; + +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; + asn_constr_check_f *constr; + int ret; + + 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); + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) + constr = elm->type->encoding_constraints.general_constraints; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +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; +} diff --git a/e2sim/asn1c/constr_SEQUENCE.h b/e2sim/asn1c/constr_SEQUENCE.h new file mode 100644 index 0000000..5ecfd8f --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE.h @@ -0,0 +1,95 @@ +/*- + * 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; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f SEQUENCE_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f SEQUENCE_compare; + +asn_constr_check_f SEQUENCE_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f SEQUENCE_decode_ber; +der_type_encoder_f SEQUENCE_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f SEQUENCE_decode_xer; +xer_type_encoder_f SEQUENCE_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f SEQUENCE_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f SEQUENCE_decode_oer; +oer_type_encoder_f SEQUENCE_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f SEQUENCE_decode_uper; +per_type_encoder_f SEQUENCE_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f SEQUENCE_decode_aper; +per_type_encoder_f SEQUENCE_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f SEQUENCE_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_SEQUENCE; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/e2sim/asn1c/constr_SEQUENCE_OF.c b/e2sim/asn1c/constr_SEQUENCE_OF.c new file mode 100644 index 0000000..9c5d6cd --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_OF.c @@ -0,0 +1,92 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { + SEQUENCE_OF_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + SEQUENCE_OF_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + SEQUENCE_OF_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + SEQUENCE_OF_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ + SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ + SEQUENCE_OF_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + SEQUENCE_OF_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; + +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; +} diff --git a/e2sim/asn1c/constr_SEQUENCE_OF.h b/e2sim/asn1c/constr_SEQUENCE_OF.h new file mode 100644 index 0000000..1768582 --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_OF.h @@ -0,0 +1,67 @@ +/*- + * 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. + */ +#define SEQUENCE_OF_free SET_OF_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define SEQUENCE_OF_print SET_OF_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f SEQUENCE_OF_compare; + +#define SEQUENCE_OF_constraint SET_OF_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define SEQUENCE_OF_decode_ber SET_OF_decode_ber +der_type_encoder_f SEQUENCE_OF_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define SEQUENCE_OF_decode_xer SET_OF_decode_xer +xer_type_encoder_f SEQUENCE_OF_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f SEQUENCE_OF_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#define SEQUENCE_OF_decode_oer SET_OF_decode_oer +#define SEQUENCE_OF_encode_oer SET_OF_encode_oer +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define SEQUENCE_OF_decode_uper SET_OF_decode_uper +per_type_encoder_f SEQUENCE_OF_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +per_type_encoder_f SEQUENCE_OF_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#define SEQUENCE_OF_random_fill SET_OF_random_fill +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/e2sim/asn1c/constr_SEQUENCE_OF_aper.c b/e2sim/asn1c/constr_SEQUENCE_OF_aper.c new file mode 100644 index 0000000..ff3ae8b --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_OF_aper.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + asn_TYPE_member_t *elm = td->elements; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = (list->count < ct->lower_bound + || list->count > ct->upper_bound); + ASN_DEBUG("lb %lld ub %lld %s", + (long long int)ct->lower_bound, + (long long int)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 (ct->lower_bound == ct->upper_bound && ct->upper_bound < 65536) { + /* No length determinant */ + } else if (aper_put_length(po, ct->lower_bound, ct->upper_bound, list->count - ct->lower_bound, 0) < 0) + ASN__ENCODE_FAILED; + } + + for(seq = -1; seq < list->count;) { + ssize_t mayEncode; + int need_eom = 0; + if(seq < 0) seq = 0; + if(ct && ct->effective_bits >= 0) { + mayEncode = list->count; + } else { + mayEncode = aper_put_length(po, -1, -1, list->count - seq, &need_eom); + 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; + } + + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/constr_SEQUENCE_OF_ber.c b/e2sim/asn1c/constr_SEQUENCE_OF_ber.c new file mode 100644 index 0000000..178f865 --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_OF_ber.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The DER encoder of the SEQUENCE OF type. + */ +asn_enc_rval_t +SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + asn_enc_rval_t erval = {0,0,0}; + int edx; + + ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, + cb, app_key); + if(encoding_size == -1) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + computed_size += encoding_size; + if(!cb) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + encoding_size += erval.encoded; + } + + if(computed_size != (size_t)encoding_size) { + /* + * Encoded size is not equal to the computed size. + */ + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + } else { + erval.encoded = computed_size; + erval.structure_ptr = 0; + erval.failed_type = 0; + } + + return erval; +} diff --git a/e2sim/asn1c/constr_SEQUENCE_OF_jer.c b/e2sim/asn1c/constr_SEQUENCE_OF_jer.c new file mode 100644 index 0000000..4c366a6 --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_OF_jer.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = 0; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + ASN__CALLBACK("[", 1); + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("{\"", 2, mname, mlen, "\":", 2); + } + + tmper = elm->type->op->jer_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, "\"", 1); + } + + if(mname) { + ASN__CALLBACK("}", 1); + } + if (i != list->count - 1) { + ASN__CALLBACK(",", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + ASN__CALLBACK("]", 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/e2sim/asn1c/constr_SEQUENCE_OF_uper.c b/e2sim/asn1c/constr_SEQUENCE_OF_uper.c new file mode 100644 index 0000000..eb20a07 --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_OF_uper.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + const asn_TYPE_member_t *elm = td->elements; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, + po); + if(er.encoded == -1) ASN__ENCODE_FAILED; + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/constr_SEQUENCE_OF_xer.c b/e2sim/asn1c/constr_SEQUENCE_OF_xer.c new file mode 100644 index 0000000..7bd3236 --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_OF_xer.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/e2sim/asn1c/constr_SEQUENCE_aper.c b/e2sim/asn1c/constr_SEQUENCE_aper.c new file mode 100644 index 0000000..895b6da --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_aper.c @@ -0,0 +1,457 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * 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)) + +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) { + if (OPEN_TYPE_aper_is_unknown_type(td, st, elm)) { + rv = OPEN_TYPE_aper_unknown_type_discard_bytes(pd); + FREEMEM(opres); + return rv; + } + 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 %zd bits (%x..)", + td->name, bmlength, *epres); + + /* Deal with padding */ + if (aper_get_align(pd) < 0) + ASN__DECODE_STARVED; + + /* 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("%zu 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 (@%zu) 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 (@%zu) present => %d", + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) + return -1; + /* Encode as open type field */ + if(po2 && present && aper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 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 %zu 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); +} diff --git a/e2sim/asn1c/constr_SEQUENCE_ber.c b/e2sim/asn1c/constr_SEQUENCE_ber.c new file mode 100644 index 0000000..e982172 --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_ber.c @@ -0,0 +1,612 @@ +/* + * Copyright (c) 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) +#undef PHASE_OUT +#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; /* ?Subtracted below! */ + ADVANCE(rval.consumed); + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next member from the list of + * this structure's elements. + * (ctx->step) stores the member being processed + * between invocations and the microphase {0,1} of parsing + * that member: + * step = ( * 2 + ). + */ + for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; + edx++, ctx->step = (ctx->step & ~1) + 2) { + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + ssize_t tag_len; /* Length of TLV's T */ + size_t opt_edx_end; /* Next non-optional element */ + size_t n; + int use_bsearch; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" + " opt=%d ec=%d", + td->name, (int)ctx->left, edx, + elements[edx].flags, elements[edx].optional, + td->elements_count); + + if(ctx->left == 0 /* No more stuff is expected */ + && ( + /* Explicit OPTIONAL specification reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx))) { + ASN_DEBUG("End of SEQUENCE %s", td->name); + /* + * Found the legitimate end of the structure. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " + "(%s) is %s encoded in %d bytes, of frame %ld", + td->name, edx, elements[edx].name, + ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } else if(((const uint8_t *)ptr)[1] == 0) { + ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, + elements[edx].optional, td->elements_count); + if((edx + elements[edx].optional == td->elements_count) + || IN_EXTENSION_GROUP(specs, edx)) { + /* + * Yeah, baby! Found the terminator + * of the indefinite length structure. + */ + /* + * Proceed to the canonical + * finalization function. + * No advancing is necessary. + */ + goto phase3; + } + } + } + + /* + * Find the next available type with this tag. + */ + use_bsearch = 0; + opt_edx_end = edx + elements[edx].optional + 1; + if(opt_edx_end > td->elements_count) + opt_edx_end = td->elements_count; /* Cap */ + else if(opt_edx_end - edx > 8) { + /* Limit the scope of linear search... */ + opt_edx_end = edx + 8; + use_bsearch = 1; + /* ... and resort to bsearch() */ + } + for(n = edx; n < opt_edx_end; n++) { + if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { + /* + * Found element corresponding to the tag + * being looked at. + * Reposition over the right element. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].flags & ATF_ANY_TYPE) { + /* + * This is the ANY type, which may bear + * any flag whatsoever. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].tag == (ber_tlv_tag_t)-1) { + use_bsearch = 1; + break; + } + } + if(use_bsearch) { + /* + * Resort to a binary search over + * sorted array of tags. + */ + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + key.el_no = edx; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _t2e_cmp); + if(t2m) { + const asn_TYPE_tag2member_t *best = 0; + const asn_TYPE_tag2member_t *t2m_f, *t2m_l; + size_t edx_max = edx + elements[edx].optional; + /* + * Rewind to the first element with that tag, + * `cause bsearch() does not guarantee order. + */ + t2m_f = t2m + t2m->toff_first; + t2m_l = t2m + t2m->toff_last; + for(t2m = t2m_f; t2m <= t2m_l; t2m++) { + if(t2m->el_no > edx_max) break; + if(t2m->el_no < edx) continue; + best = t2m; + } + if(best) { + edx = best->el_no; + ctx->step = 1 + 2 * edx; + goto microphase2; + } + } + n = opt_edx_end; + } + if(n == opt_edx_end) { + /* + * If tag is unknown, it may be either + * an unknown (thus, incorrect) tag, + * or an extension (...), + * or an end of the indefinite-length structure. + */ + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { + ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + ASN_DEBUG("Expected tag %s (%s)%s", + ber_tlv_tag_string(elements[edx].tag), + elements[edx].name, + elements[edx].optional ?" or alternatives":""); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + edx += elements[edx].optional; + + ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + ASN_DEBUG("Skip length %d in %s", + (int)skip, td->name); + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + ctx->step -= 2; + edx--; + continue; /* Try again with the next tag */ + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elements[edx].flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elements[edx].memb_offset; + memb_ptr2 = &memb_ptr; + } + /* + * Invoke the member fetch routine according to member's type + */ + if(elements[edx].flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); + } else { + rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + } + ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " + "in %d bytes rval.code %d, size=%d", + td->name, edx, elements[edx].type->name, + (int)LEFT, (int)rval.consumed, rval.code, (int)size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", + (long)ctx->left, (long)size); + /* Fall through */ + case RC_FAIL: /* Fatal error */ + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all structure members) */ + + phase3: + ctx->phase = 3; + /* Fall through */ + case 3: /* 00 and other tags expected */ + case 4: /* only 00's expected */ + + ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", + td->name, (long)ctx->left, (long)size); + + /* + * Skip everything until the end of the SEQUENCE. + */ + while(ctx->left) { + ssize_t tl, ll; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * If expected <0><0>... + */ + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + ctx->phase = 4; + continue; + } + } + + if(!IN_EXTENSION_GROUP(specs, td->elements_count) + || ctx->phase == 4) { + ASN_DEBUG("Unexpected continuation " + "of a non-extensible type " + "%s (SEQUENCE): %s", + td->name, + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tl, LEFT - tl); + switch(ll) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(tl + ll); + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + + +/* + * The DER encoder of the SEQUENCE type. + */ +asn_enc_rval_t +SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t computed_size = 0; + asn_enc_rval_t erval = {0,0,0}; + ssize_t ret; + size_t edx; + + ASN_DEBUG("%s %s as SEQUENCE", + cb?"Encoding":"Estimating", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", + edx, elm->name, (long)erval.encoded); + } + + /* + * Encode the TLV for the sequence itself. + */ + ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); + if(ret == -1) + ASN__ENCODE_FAILED; + erval.encoded = computed_size + ret; + + if(!cb) ASN__ENCODED_OK(erval); + + /* + * Encode all members. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t tmperval = {0,0,0}; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) continue; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", + edx, elm->name, td->name, (long)tmperval.encoded); + } + + if(computed_size != 0) + /* + * Encoded size is not equal to the computed size. + */ + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(erval); +} diff --git a/e2sim/asn1c/constr_SEQUENCE_jer.c b/e2sim/asn1c/constr_SEQUENCE_jer.c new file mode 100644 index 0000000..6451f0c --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_jer.c @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t SEQUENCE_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = 0; + 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; + + int bAddComma = 0; + ASN__CALLBACK("{\n", 2); + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if (bAddComma == 1) { + ASN__CALLBACK(",", 1); + bAddComma = 0; + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("\"", 1, mname, mlen, "\": ", 3); + + /* Print the member itself */ + tmper = elm->type->op->jer_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; + if (edx != td->elements_count - 1) { + bAddComma = 1; + } + } + ASN__CALLBACK("}", 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; +} diff --git a/e2sim/asn1c/constr_SEQUENCE_print.c b/e2sim/asn1c/constr_SEQUENCE_print.c new file mode 100644 index 0000000..7f9e231 --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_print.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; +} diff --git a/e2sim/asn1c/constr_SEQUENCE_rfill.c b/e2sim/asn1c/constr_SEQUENCE_rfill.c new file mode 100644 index 0000000..b464f57 --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_rfill.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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/e2sim/asn1c/constr_SEQUENCE_uper.c b/e2sim/asn1c/constr_SEQUENCE_uper.c new file mode 100644 index 0000000..b235f4d --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_uper.c @@ -0,0 +1,429 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * 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)) + +asn_dec_rval_t +SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; + edx < (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, (long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, + *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: break; + case 0: continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + ASN_DEBUG("Skipped overflow extension"); + continue; + } + break; + } + + FREEMEM(epres); + } + + if(specs->first_extension >= 0) { + unsigned i; + /* Fill DEFAULT members in extensions */ + for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; + i++) { + asn_TYPE_member_t *elm; + void **memb_ptr2; /* Pointer to member pointer */ + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) { + return -1; + } + /* Encode as open type field */ + if(po2 && present + && uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, + po); + if(er.encoded == -1) return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of extensions %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(uper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/constr_SEQUENCE_xer.c b/e2sim/asn1c/constr_SEQUENCE_xer.c new file mode 100644 index 0000000..c6475f7 --- /dev/null +++ b/e2sim/asn1c/constr_SEQUENCE_xer.c @@ -0,0 +1,348 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * 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)) + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = (num_bytes); \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Skipping unknown extensions. + * Phase 4: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 3;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr_dontuse; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr_dontuse = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ + } + + if(elm->flags & ATF_OPEN_TYPE) { + tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + ptr, size); + } + XER_ADVANCE(tmprval.consumed); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 1; /* Back to body processing */ + ctx->step = ++edx; + ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", + ctx->phase, ctx->step); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", + tcv, ctx->phase, xml_tag); + + /* Skip the extensions section */ + if(ctx->phase == 3) { + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 4; + RETURN(RC_FAIL); + case 0: + XER_ADVANCE(ch_size); + continue; + case 1: + XER_ADVANCE(ch_size); + ctx->phase = 1; + continue; + case 2: + ctx->phase = 1; + break; + } + } + + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + if(edx >= td->elements_count || + /* Explicit OPTIONAL specs reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx)) { + XER_ADVANCE(ch_size); + ctx->phase = 4; /* Phase out */ + RETURN(RC_OK); + } else { + ASN_DEBUG("Premature end of XER SEQUENCE"); + RETURN(RC_FAIL); + } + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + size_t n; + size_t edx_end = edx + elements[edx].optional + 1; + if(edx_end > td->elements_count) + edx_end = td->elements_count; + for(n = edx; n < edx_end; n++) { + elm = &td->elements[n]; + tcv = xer_check_tag(ptr, ch_size, elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx = n; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + n = edx_end; + break; /* Phase out */ + } + break; + } + if(n != edx_end) + continue; + } else { + ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", + edx, td->elements_count); + } + + /* It is expected extension */ + if(IN_EXTENSION_GROUP(specs, + edx + (edx < td->elements_count + ? elements[edx].optional : 0))) { + ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", + edx); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + } else { + ctx->left = 1; + ctx->phase = 3; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", + size>0?((const char *)ptr)[0]:'.', + size>1?((const char *)ptr)[1]:'.', + size>2?((const char *)ptr)[2]:'.', + size>3?((const char *)ptr)[3]:'.', + size>4?((const char *)ptr)[4]:'.', + size>5?((const char *)ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = (flags & XER_F_CANONICAL); + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + /* Print the member itself */ + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} diff --git a/e2sim/asn1c/constr_SET_OF.c b/e2sim/asn1c/constr_SET_OF.c new file mode 100644 index 0000000..97a7cac --- /dev/null +++ b/e2sim/asn1c/constr_SET_OF.c @@ -0,0 +1,371 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_TYPE_operation_t asn_OP_SET_OF = { + SET_OF_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + SET_OF_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + SET_OF_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + SET_OF_decode_ber, + SET_OF_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + SET_OF_decode_xer, + SET_OF_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + SET_OF_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + SET_OF_decode_oer, + SET_OF_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + SET_OF_decode_uper, + SET_OF_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + SET_OF_decode_aper, + SET_OF_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + SET_OF_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; + +/* 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; +} + +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); +} + +struct _el_buffer * +SET_OF__encode_sorted(const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method) { + struct _el_buffer *encoded_els; + int edx; + + encoded_els = + (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); + if(encoded_els == NULL) { + return NULL; + } + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + const void *memb_ptr = list->array[edx]; + struct _el_buffer *encoding_el = &encoded_els[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) break; + + /* + * Encode the member into the prepared space. + */ + switch(method) { +#if !defined(ASN_DISABLE_BER_SUPPORT) + case SOES_DER: + erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, + _el_addbytes, encoding_el); + break; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + 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; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + case SOES_CAPER: + erval = aper_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; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + + 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; + } +} + +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; +} + +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; +} diff --git a/e2sim/asn1c/constr_SET_OF.h b/e2sim/asn1c/constr_SET_OF.h new file mode 100644 index 0000000..0e9dd39 --- /dev/null +++ b/e2sim/asn1c/constr_SET_OF.h @@ -0,0 +1,102 @@ +/*- + * 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 +#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; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f SET_OF_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f SET_OF_compare; + +asn_constr_check_f SET_OF_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f SET_OF_decode_ber; +der_type_encoder_f SET_OF_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f SET_OF_decode_xer; +xer_type_encoder_f SET_OF_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f SET_OF_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f SET_OF_decode_oer; +oer_type_encoder_f SET_OF_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f SET_OF_decode_uper; +per_type_encoder_f SET_OF_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f SET_OF_decode_aper; +per_type_encoder_f SET_OF_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f SET_OF_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_SET_OF; + +/* + * Internally visible buffer holding a single encoded element. + */ +struct _el_buffer { + uint8_t *buf; + size_t length; + size_t allocated_size; + unsigned bits_unused; +}; + +enum SET_OF__encode_method { + SOES_DER, /* Distinguished Encoding Rules */ + SOES_CUPER, /* Canonical Unaligned Packed Encoding Rules */ + SOES_CAPER /* Canonical Aligned Packed Encoding Rules */ +}; + +struct _el_buffer * SET_OF__encode_sorted( + const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method); + +void SET_OF__encode_sorted_free( + struct _el_buffer *el_buf, + size_t count); + +#ifdef __cplusplus +} +#endif + +#endif /* CONSTR_SET_OF_H */ diff --git a/e2sim/asn1c/constr_SET_OF_aper.c b/e2sim/asn1c/constr_SET_OF_aper.c new file mode 100644 index 0000000..87c341e --- /dev/null +++ b/e2sim/asn1c/constr_SET_OF_aper.c @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +SET_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_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SET 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 %lld ub %lld %s", + (long long int)ct->lower_bound, + (long long int)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->lower_bound, ct->upper_bound, list->count - ct->lower_bound, 0) < 0) { + ASN__ENCODE_FAILED; + } + } + + /* + * Canonical PER #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_CAPER); + + for(seq = 0; seq < list->count;) { + ssize_t may_encode; + int need_eom = 0; + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + aper_put_length(po, -1, -1, list->count - seq, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + while(may_encode--) { + const struct _el_buffer *el = &encoded_els[seq++]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); + ASN_DEBUG("Preparing to fetch %ld+%lld elements from %s", + (long)nelems, (long long int)ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + if (ct) + nelems = aper_get_length(pd, ct->lower_bound, ct->upper_bound, + ct->effective_bits, &repeat); + else + nelems = aper_get_length(pd, -1, -1, -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; +} diff --git a/e2sim/asn1c/constr_SET_OF_ber.c b/e2sim/asn1c/constr_SET_OF_ber.c new file mode 100644 index 0000000..4187e29 --- /dev/null +++ b/e2sim/asn1c/constr_SET_OF_ber.c @@ -0,0 +1,355 @@ +/* + * Copyright (c) 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) +#undef PHASE_OUT +#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; /* ?Subtracted 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); +} + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + int edx; + + ASN_DEBUG("Estimating size for SET OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) ASN__ENCODE_FAILED; + + erval = + elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = + der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + if(encoding_size < 0) { + ASN__ENCODE_FAILED; + } + computed_size += encoding_size; + + if(!cb || list->count == 0) { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + for(edx = 0; edx < list->count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { + break; + } else { + encoding_size += encoded_el->length; + } + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if(edx == list->count) { + asn_enc_rval_t erval = {0,0,0}; + assert(computed_size == (size_t)encoding_size); + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } else { + ASN__ENCODE_FAILED; + } +} diff --git a/e2sim/asn1c/constr_SET_OF_jer.c b/e2sim/asn1c/constr_SET_OF_jer.c new file mode 100644 index 0000000..a0c2adc --- /dev/null +++ b/e2sim/asn1c/constr_SET_OF_jer.c @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +typedef struct jer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} jer_tmp_enc_t; + +static int +SET_OF_encode_jer_callback(const void *buffer, size_t size, void *key) { + jer_tmp_enc_t *t = (jer_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_jer_order(const void *aptr, const void *bptr) { + const jer_tmp_enc_t *a = (const jer_tmp_enc_t *)aptr; + const jer_tmp_enc_t *b = (const jer_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_jer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = 0; + jer_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 = (jer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_jer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("\"", 1, mname, mlen, "\": ", 3); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->jer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + /* if(mname) { */ + /* ASN__CALLBACK3("", 1); */ + /* } */ + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + jer_tmp_enc_t *enc = encs; + jer_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_jer_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); +} diff --git a/e2sim/asn1c/constr_SET_OF_print.c b/e2sim/asn1c/constr_SET_OF_print.c new file mode 100644 index 0000000..748dba7 --- /dev/null +++ b/e2sim/asn1c/constr_SET_OF_print.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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; +} diff --git a/e2sim/asn1c/constr_SET_OF_rfill.c b/e2sim/asn1c/constr_SET_OF_rfill.c new file mode 100644 index 0000000..9b2ac5e --- /dev/null +++ b/e2sim/asn1c/constr_SET_OF_rfill.c @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +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 !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 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; + } + } +#else + if(!constraints) constraints = &td->encoding_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + + /* Bias towards edges of allowed space */ + switch(asn_random_between(-1, 4)) { + default: + case -1: +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + /* 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; + } +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + /* 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/e2sim/asn1c/constr_SET_OF_uper.c b/e2sim/asn1c/constr_SET_OF_uper.c new file mode 100644 index 0000000..b99a244 --- /dev/null +++ b/e2sim/asn1c/constr_SET_OF_uper.c @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = per_get_few_bits(pd, ct->effective_bits); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = uper_get_length(pd, -1, 0, &repeat); + ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", + nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) { + if(rv.consumed == 0 && nelems > 200) { + /* Protect from SET OF NULL compression bombs. */ + ASN__DECODE_FAILED; + } + continue; + } + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + + /* + * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + const struct _el_buffer *el = &encoded_els[edx]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if((ssize_t)encoded_edx == list->count) { + ASN__ENCODED_OK(er); + } else { + ASN__ENCODE_FAILED; + } +} diff --git a/e2sim/asn1c/constr_SET_OF_xer.c b/e2sim/asn1c/constr_SET_OF_xer.c new file mode 100644 index 0000000..1d97e5b --- /dev/null +++ b/e2sim/asn1c/constr_SET_OF_xer.c @@ -0,0 +1,314 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *element = td->elements; + const char *elm_tag; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval = {RC_OK, 0}; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* Which tag is expected for the downstream */ + if(specs->as_XMLValueList) { + elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; + } else { + elm_tag = (*element->name) + ? element->name : element->type->xml_tag; + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + */ + for(; ctx->phase <= 2;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Go inside the inner member of a set. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval = {RC_OK, 0}; + + /* Invoke the inner type decoder, m.b. multiple times */ + ASN_DEBUG("XER/SET OF element [%s]", elm_tag); + tmprval = element->type->op->xer_decoder(opt_codec_ctx, + element->type, + &ctx->ptr, elm_tag, + buf_ptr, size); + if(tmprval.code == RC_OK) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + ctx->ptr = 0; + XER_ADVANCE(tmprval.consumed); + } else { + XER_ADVANCE(tmprval.consumed); + RETURN(tmprval.code); + } + ctx->phase = 1; /* Back to body processing */ + ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, + buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", + tcv, ctx->phase, xml_tag); + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + /* No more things to decode */ + XER_ADVANCE(ch_size); + ctx->phase = 3; /* Phase out */ + RETURN(RC_OK); + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); + if(ctx->phase == 1) { + /* + * Process a single possible member. + */ + ctx->phase = 2; + continue; + } + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SET OF"); + break; + } + + ctx->phase = 3; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +typedef struct xer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} xer_tmp_enc_t; + +static int +SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { + xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} + +static int +SET_OF_xer_order(const void *aptr, const void *bptr) { + const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; + const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + +asn_enc_rval_t +SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + xer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_xer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + xer_tmp_enc_t *enc = encs; + xer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} diff --git a/e2sim/asn1c/constr_TYPE.c b/e2sim/asn1c/constr_TYPE.c new file mode 100644 index 0000000..e634e75 --- /dev/null +++ b/e2sim/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 CC_PRINTFLIKE(1, 2) 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/e2sim/asn1c/constr_TYPE.h b/e2sim/asn1c/constr_TYPE.h new file mode 100644 index 0000000..55c2574 --- /dev/null +++ b/e2sim/asn1c/constr_TYPE.h @@ -0,0 +1,295 @@ +/* + * 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; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#include /* Basic Encoding Rules decoder */ +#include /* Distinguished Encoding Rules encoder */ +#else +typedef void (ber_type_decoder_f)(void); +typedef void (der_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#include /* Decoder of XER (XML, text) */ +#include /* Encoder into XER (XML, text) */ +#else +typedef void (xer_type_decoder_f)(void); +typedef void (xer_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#include /* Encoder into JER (JSON, text) */ +#else +typedef void (jer_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +#include /* Packet Encoding Rules decoder */ +#include /* Packet Encoding Rules encoder */ +#else +typedef void (per_type_decoder_f)(void); +typedef void (per_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + +#include /* Subtype constraints support */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#include /* Random structures support */ +#else +typedef void (asn_random_fill_f)(void); +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#include /* Octet Encoding Rules encoder */ +#include /* Octet Encoding Rules encoder */ +#else +typedef void (oer_type_decoder_f)(void); +typedef void (oer_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +/* + * 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 */ + jer_type_encoder_f *jer_encoder; /* Generic JER 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 { +#if !defined(ASN_DISABLE_OER_SUPPORT) + const struct asn_oer_constraints_s *oer_constraints; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + const struct asn_per_constraints_s *per_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 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 occurrence of the el_tag, relative */ + int toff_last; /* Last occurrence 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/e2sim/asn1c/constraints.c b/e2sim/asn1c/constraints.c new file mode 100644 index 0000000..72137cc --- /dev/null +++ b/e2sim/asn1c/constraints.c @@ -0,0 +1,94 @@ +#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 +CC_PRINTFLIKE(4, 5) +_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, + const char *fmt, ...) { + struct errbufDesc *arg = key; + va_list ap; + ssize_t vlen; + ssize_t maxlen; + + arg->failed_type = td; + arg->failed_struct_ptr = sptr; + + maxlen = arg->errlen; + if(maxlen <= 0) + return; + + va_start(ap, fmt); + vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); + va_end(ap); + if(vlen >= maxlen) { + arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ + arg->errlen = maxlen - 1; /* Not counting termination */ + return; + } else if(vlen >= 0) { + arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ + arg->errlen = vlen; /* Not counting termination */ + } else { + /* + * The libc on this system is broken. + */ + vlen = sizeof("") - 1; + maxlen--; + arg->errlen = vlen < maxlen ? vlen : maxlen; + memcpy(arg->errbuf, "", arg->errlen); + arg->errbuf[arg->errlen] = 0; + } + + return; +} + +int +asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, char *errbuf, size_t *errlen) { + struct errbufDesc arg; + int ret; + + arg.failed_type = 0; + arg.failed_struct_ptr = 0; + arg.errbuf = errbuf; + arg.errlen = errlen ? *errlen : 0; + + ret = type_descriptor->encoding_constraints.general_constraints( + type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) *errlen = arg.errlen; + + return ret; +} + diff --git a/e2sim/asn1c/constraints.h b/e2sim/asn1c/constraints.h new file mode 100644 index 0000000..0c093fa --- /dev/null +++ b/e2sim/asn1c/constraints.h @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN1_CONSTRAINTS_VALIDATOR_H +#define ASN1_CONSTRAINTS_VALIDATOR_H + +#include /* Platform-dependent types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Validate the structure according to the ASN.1 constraints. + * If errbuf and errlen are given, they shall be pointing to the appropriate + * buffer space and its length before calling this function. Alternatively, + * they could be passed as NULL's. If constraints validation fails, + * errlen will contain the actual number of bytes taken from the errbuf + * to encode an error message (properly 0-terminated). + * + * RETURN VALUES: + * This function returns 0 in case all ASN.1 constraints are met + * and -1 if one or more constraints were failed. + */ +int asn_check_constraints( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Target language's structure */ + char *errbuf, /* Returned error description */ + size_t *errlen /* Length of the error description */ +); + + +/* + * Generic type for constraint checking callback, + * associated with every type descriptor. + */ +typedef int(asn_constr_check_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, + asn_app_constraint_failed_f *optional_callback, /* Log the error */ + void *optional_app_key /* Opaque key passed to a callback */ +); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ +asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ + +/* + * Invoke the callback with a complete error message. + */ +#define ASN__CTFAIL if(ctfailcb) ctfailcb + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/der_encoder.c b/e2sim/asn1c/der_encoder.c similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/der_encoder.c rename to e2sim/asn1c/der_encoder.c diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/der_encoder.h b/e2sim/asn1c/der_encoder.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/der_encoder.h rename to e2sim/asn1c/der_encoder.h diff --git a/e2sim/asn1c/jer_encoder.c b/e2sim/asn1c/jer_encoder.c new file mode 100644 index 0000000..4fe5ce3 --- /dev/null +++ b/e2sim/asn1c/jer_encoder.c @@ -0,0 +1,69 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The JER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +jer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("{\n\"", 3, mname, mlen, "\":", 2); + + int xFlag = 0; + tmper = td->op->jer_encoder(td, sptr, 1, xFlag, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK("}", 1); + // ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for jer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +jer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +jer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er = {0,0,0}; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = jer_encode(td, sptr, jer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + diff --git a/e2sim/asn1c/jer_encoder.h b/e2sim/asn1c/jer_encoder.h new file mode 100644 index 0000000..672976d --- /dev/null +++ b/e2sim/asn1c/jer_encoder.h @@ -0,0 +1,86 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _JER_ENCODER_H_ +#define _JER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the jer_encode() and (*jer_type_encoder_f), defined below + * + * This isn't actually used, it might be used in the future to support + * both normal JSON and prettified JSON output or removed. + * It came from XER + */ +enum jer_encoder_flags_e { + /* Mode of encoding */ + JER_F = 0x01, /* JER (pretty-printing) */ +}; + +/* + * The JER encoder of any type. May be invoked by the application. + * Produces JER output. + */ +asn_enc_rval_t jer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the JER + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int jer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses JER encoding/decoding to verify that: + * - Both structures encode into the same JER. + * - Both resulting JER byte streams can be decoded back. + * - Both decoded structures encode into the same JER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum jer_equivalence_e { + JEQ_SUCCESS, /* The only completely positive return value */ + JEQ_FAILURE, /* General failure */ + JEQ_ENCODE1_FAILED, /* First structure JER encoding failed */ + JEQ_ENCODE2_FAILED, /* Second structure JER encoding failed */ + JEQ_DIFFERENT, /* Structures encoded into different JER */ + JEQ_DECODE_FAILED, /* Decode of the JER data failed */ + JEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum jer_equivalence_e jer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic JER encoder. + */ +typedef asn_enc_rval_t(jer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum jer_encoder_flags_e jer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _JER_ENCODER_H_ */ diff --git a/e2sim/asn1c/per_decoder.c b/e2sim/asn1c/per_decoder.c new file mode 100644 index 0000000..42b92ca --- /dev/null +++ b/e2sim/asn1c/per_decoder.c @@ -0,0 +1,5 @@ +#include +#include +#include + +// Absolutely nothing diff --git a/e2sim/asn1c/per_decoder.h b/e2sim/asn1c/per_decoder.h new file mode 100644 index 0000000..3cc0c6b --- /dev/null +++ b/e2sim/asn1c/per_decoder.h @@ -0,0 +1,30 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_DECODER_H_ +#define _PER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Type of the type-specific PER decoder function. + */ +typedef asn_dec_rval_t(per_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, void **struct_ptr, + asn_per_data_t *per_data); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_DECODER_H_ */ diff --git a/e2sim/asn1c/per_encoder.c b/e2sim/asn1c/per_encoder.c new file mode 100644 index 0000000..01ab70b --- /dev/null +++ b/e2sim/asn1c/per_encoder.c @@ -0,0 +1,35 @@ +#include +#include + +int +ignore_output(const void *data, size_t size, void *app_key) { + (void)data; + (void)size; + (void)app_key; + return 0; +} + +int +encode_dyn_cb(const void *buffer, size_t size, void *key) { + enc_dyn_arg *arg = key; + if(arg->length + size >= arg->allocated) { + size_t new_size = arg->allocated ? arg->allocated : 8; + void *p; + + do { + new_size <<= 2; + } while(arg->length + size >= new_size); + + p = REALLOC(arg->buffer, new_size); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + arg->allocated = new_size; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} diff --git a/e2sim/asn1c/per_encoder.h b/e2sim/asn1c/per_encoder.h new file mode 100644 index 0000000..8bb0771 --- /dev/null +++ b/e2sim/asn1c/per_encoder.h @@ -0,0 +1,38 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_ENCODER_H_ +#define _PER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t(per_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +int ignore_output(const void *data, size_t size, void *app_key); + +typedef struct enc_dyn_arg { + void *buffer; + size_t length; + size_t allocated; +} enc_dyn_arg; +int encode_dyn_cb(const void *buffer, size_t size, void *key); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/e2sim/asn1c/per_opentype.c b/e2sim/asn1c/per_opentype.c new file mode 100644 index 0000000..5620c5b --- /dev/null +++ b/e2sim/asn1c/per_opentype.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +/* + * Internal functions. + */ + +asn_dec_rval_t +uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)ctx; + (void)td; + (void)constraints; + (void)sptr; + + while(per_get_few_bits(pd, 1) >= 0); + + rv.code = RC_OK; + rv.consumed = pd->moved; + + return rv; +} diff --git a/e2sim/asn1c/per_opentype.h b/e2sim/asn1c/per_opentype.h new file mode 100644 index 0000000..fc37855 --- /dev/null +++ b/e2sim/asn1c/per_opentype.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_OPENTYPE_H_ +#define _PER_OPENTYPE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_sot_suck( + const asn_codec_ctx_t *, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/e2sim/asn1c/per_support.c b/e2sim/asn1c/per_support.c new file mode 100644 index 0000000..62d343c --- /dev/null +++ b/e2sim/asn1c/per_support.c @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +// Absolutely nothing diff --git a/e2sim/asn1c/per_support.h b/e2sim/asn1c/per_support.h new file mode 100644 index 0000000..b3056a2 --- /dev/null +++ b/e2sim/asn1c/per_support.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_SUPPORT_H_ +#define _PER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef struct asn_per_constraint_s { + enum asn_per_constraint_flags { + APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ + APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ + APC_CONSTRAINED = 0x2, /* Fully constrained */ + APC_EXTENSIBLE = 0x4 /* May have extension */ + } flags; + int range_bits; /* Full number of bits in the range */ + int effective_bits; /* Effective bits */ + intmax_t lower_bound; /* "lb" value */ + intmax_t upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef struct asn_per_constraints_s { + asn_per_constraint_t value; + asn_per_constraint_t size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_data_s asn_per_data_t; +#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) +#define per_get_undo(data, bits) asn_get_undo(data, bits) +#define per_get_many_bits(data, dst, align, bits) \ + asn_get_many_bits(data, dst, align, bits) + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_outp_s asn_per_outp_t; +#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) +#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) +#define per_put_aligned_flush(out) asn_put_aligned_flush(out) + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_SUPPORT_H_ */ diff --git a/e2sim/asn1c/uper_decoder.c b/e2sim/asn1c/uper_decoder.c new file mode 100644 index 0000000..a88e95c --- /dev/null +++ b/e2sim/asn1c/uper_decoder.c @@ -0,0 +1,96 @@ +#include +#include +#include + +/* + * Decode a "Production of a complete encoding", X.691#10.1. + * The complete encoding contains at least one byte, and is an integral + * multiple of 8 bytes. + */ +asn_dec_rval_t +uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +uper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %ld, counted %ld", + (long)rval.consumed, (long)pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} diff --git a/e2sim/asn1c/uper_decoder.h b/e2sim/asn1c/uper_decoder.h new file mode 100644 index 0000000..ded8515 --- /dev/null +++ b/e2sim/asn1c/uper_decoder.h @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_DECODER_H_ +#define _UPER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. + * On success, this call always returns (.consumed >= 1), as per #11.1.3. + */ +asn_dec_rval_t uper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t uper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of the input data buffer, in bytes */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_DECODER_H_ */ diff --git a/e2sim/asn1c/uper_encoder.c b/e2sim/asn1c/uper_encoder.c new file mode 100644 index 0000000..4c1d24a --- /dev/null +++ b/e2sim/asn1c/uper_encoder.c @@ -0,0 +1,127 @@ +#include +#include +#include + +static int _uper_encode_flush_outp(asn_per_outp_t *po); + +asn_enc_rval_t +uper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->uper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; + } + + return er; +} + +/* + * Argument type and callback necessary for uper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); + + return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_uper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); +} diff --git a/e2sim/asn1c/uper_encoder.h b/e2sim/asn1c/uper_encoder.h new file mode 100644 index 0000000..8f73980 --- /dev/null +++ b/e2sim/asn1c/uper_encoder.h @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_ENCODER_H_ +#define _UPER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t uper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of uper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t uper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +/* + * A variant of uper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of uper_encode() and uper_encode_to_buffer(). + */ +ssize_t uper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_ENCODER_H_ */ diff --git a/e2sim/asn1c/uper_opentype.c b/e2sim/asn1c/uper_opentype.c new file mode 100644 index 0000000..17ee064 --- /dev/null +++ b/e2sim/asn1c/uper_opentype.c @@ -0,0 +1,372 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +typedef struct uper_ugot_key { + asn_per_data_t oldpd; /* Old per data source */ + size_t unclaimed; + size_t ot_moved; /* Number of bits moved by OT processing */ + int repeat; +} uper_ugot_key; + +static int uper_ugot_refill(asn_per_data_t *pd); +static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); + +/* + * Encode an "open type field". + * #10.1, #10.2 + */ +int +uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, + size); + + bptr = buf; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE + " to %s and allowing to save %" ASN_PRI_SSIZE, + size, td->name, may_save); + if(may_save < 0) break; + if(per_put_many_bits(po, bptr, may_save * 8)) break; + bptr = (char *)bptr + may_save; + size -= may_save; + if(need_eom && uper_put_length(po, 0, 0)) { + FREEMEM(buf); + return -1; + } + } while(size); + + FREEMEM(buf); + if(size) return -1; + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = uper_get_length(pd, -1, 0, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, (buf == NULL)? NULL : buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* No one would give us more */ + } + + return rv; +} + +static asn_dec_rval_t CC_NOTUSED +uper_open_type_get_complex(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + uper_ugot_key arg; + asn_dec_rval_t rv; + ssize_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s from %s", td->name, + asn_bit_data_string(pd)); + arg.oldpd = *pd; + arg.unclaimed = 0; + arg.ot_moved = 0; + arg.repeat = 1; + pd->refill = uper_ugot_refill; + pd->refill_key = &arg; + pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ + pd->moved = 0; /* This now counts the open type size in bits */ + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); + ASN_DEBUG_INDENT_ADD(-4); + +#define UPDRESTOREPD do { \ + /* buffer and nboff are valid, preserve them. */ \ + pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ + pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ + pd->refill = arg.oldpd.refill; \ + pd->refill_key = arg.oldpd.refill_key; \ + } while(0) + + if(rv.code != RC_OK) { + UPDRESTOREPD; + return rv; + } + + ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, + asn_bit_data_string(pd), + asn_bit_data_string(&arg.oldpd), + (int)arg.unclaimed, (int)arg.repeat); + + padding = pd->moved % 8; + if(padding) { + int32_t pvalue; + if(padding > 7) { + ASN_DEBUG("Too large padding %d in open type", + (int)padding); + rv.code = RC_FAIL; + UPDRESTOREPD; + return rv; + } + padding = 8 - padding; + ASN_DEBUG("Getting padding of %d bits", (int)padding); + pvalue = per_get_few_bits(pd, padding); + switch(pvalue) { + case -1: + ASN_DEBUG("Padding skip failed"); + UPDRESTOREPD; + ASN__DECODE_STARVED; + case 0: break; + default: + ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", + (int)padding, (int)pvalue); + UPDRESTOREPD; + ASN__DECODE_FAILED; + } + } + if(pd->nboff != pd->nbits) { + ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, + asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); + if(1) { + UPDRESTOREPD; + ASN__DECODE_FAILED; + } else { + arg.unclaimed += pd->nbits - pd->nboff; + } + } + + /* Adjust pd back so it points to original data */ + UPDRESTOREPD; + + /* Skip data not consumed by the decoder */ + if(arg.unclaimed) { + ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); + switch(per_skip_bits(pd, arg.unclaimed)) { + case -1: + ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); + ASN__DECODE_STARVED; + case 0: + ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); + break; + default: + /* Padding must be blank */ + ASN_DEBUG("Non-blank unconsumed padding"); + ASN__DECODE_FAILED; + } + arg.unclaimed = 0; + } + + if(arg.repeat) { + ASN_DEBUG("Not consumed the whole thing"); + rv.code = RC_FAIL; + return rv; + } + + return rv; +} + + +asn_dec_rval_t +uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_TYPE_operation_t s_op; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.op = &s_op; + s_op.uper_decoder = uper_sot_suck; + + rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + +/* + * Internal functions. + */ + +static int +uper_ugot_refill(asn_per_data_t *pd) { + uper_ugot_key *arg = pd->refill_key; + ssize_t next_chunk_bytes, next_chunk_bits; + ssize_t avail; + + asn_per_data_t *oldpd = &arg->oldpd; + + ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", + (long)pd->moved, (long)oldpd->moved); + + /* Advance our position to where pd is */ + oldpd->buffer = pd->buffer; + oldpd->nboff = pd->nboff; + oldpd->nbits -= pd->moved - arg->ot_moved; + oldpd->moved += pd->moved - arg->ot_moved; + arg->ot_moved = pd->moved; + + if(arg->unclaimed) { + /* Refill the container */ + if(per_get_few_bits(oldpd, 1)) + return -1; + if(oldpd->nboff == 0) { + assert(0); + return -1; + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff - 1; + pd->nbits = oldpd->nbits; + ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", + (long)pd->moved); + return 0; + } + + if(!arg->repeat) { + ASN_DEBUG("Want more but refill doesn't have it"); + return -1; + } + + next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); + ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", + (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); + if(next_chunk_bytes < 0) return -1; + if(next_chunk_bytes == 0) { + pd->refill = 0; /* No more refills, naturally */ + assert(!arg->repeat); /* Implementation guarantee */ + } + next_chunk_bits = next_chunk_bytes << 3; + avail = oldpd->nbits - oldpd->nboff; + if(avail >= next_chunk_bits) { + pd->nbits = oldpd->nboff + next_chunk_bits; + arg->unclaimed = 0; + ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", + (long)next_chunk_bits, (long)oldpd->moved, + (long)oldpd->nboff, (long)oldpd->nbits, + (long)(oldpd->nbits - oldpd->nboff)); + } else { + pd->nbits = oldpd->nbits; + arg->unclaimed = next_chunk_bits - avail; + ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", + (long)avail, (long)next_chunk_bits, + (long)arg->unclaimed); + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff; + ASN_DEBUG("Refilled pd%s old%s", + asn_bit_data_string(pd), asn_bit_data_string(oldpd)); + return 0; +} + +static int +per_skip_bits(asn_per_data_t *pd, int skip_nbits) { + int hasNonZeroBits = 0; + while(skip_nbits > 0) { + int skip; + + /* per_get_few_bits() is more efficient when nbits <= 24 */ + if(skip_nbits < 24) + skip = skip_nbits; + else + skip = 24; + skip_nbits -= skip; + + switch(per_get_few_bits(pd, skip)) { + case -1: return -1; /* Starving */ + case 0: continue; /* Skipped empty space */ + default: hasNonZeroBits = 1; continue; + } + } + return hasNonZeroBits; +} diff --git a/e2sim/asn1c/uper_opentype.h b/e2sim/asn1c/uper_opentype.h new file mode 100644 index 0000000..3a24822 --- /dev/null +++ b/e2sim/asn1c/uper_opentype.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_OPENTYPE_H_ +#define _UPER_OPENTYPE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, + asn_per_data_t *pd); + +/* + * X.691 (2015/08), #11.2 + * Returns -1 if error is encountered. 0 if all OK. + */ +int uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_OPENTYPE_H_ */ diff --git a/e2sim/asn1c/uper_support.c b/e2sim/asn1c/uper_support.c new file mode 100644 index 0000000..ce8adc5 --- /dev/null +++ b/e2sim/asn1c/uper_support.c @@ -0,0 +1,311 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * X.691-201508 #10.9 General rules for encoding a length determinant. + * Get the optionally constrained length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, + int *repeat) { + ssize_t value; + + *repeat = 0; + + /* #11.9.4.1 Encoding if constrained (according to effective bits) */ + if(ebits >= 0 && ebits <= 16) { + value = per_get_few_bits(pd, ebits); + if(value >= 0) value += lower_bound; + return value; + } + + value = per_get_few_bits(pd, 8); + if((value & 0x80) == 0) { /* #11.9.3.6 */ + return (value & 0x7F); + } else if((value & 0x40) == 0) { /* #11.9.3.7 */ + /* bit 8 ... set to 1 and bit 7 ... set to zero */ + value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); + return value; /* potential -1 from per_get_few_bits passes through. */ + } else if(value < 0) { + ASN_DEBUG("END of stream reached for PER"); + return -1; + } + value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) { + return -1; /* Prohibited by #11.9.3.8 */ + } + *repeat = 1; + return (16384 * value); +} + +/* + * Get the normally small length "n". + * This procedure used to decode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +ssize_t +uper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%d", (int)length); + return length; + } else { + int repeat; + length = uper_get_length(pd, -1, 0, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +/* + * Get the normally small non-negative whole number. + * X.691, #10.6 + */ +ssize_t +uper_get_nsnnwn(asn_per_data_t *pd) { + ssize_t value; + + value = per_get_few_bits(pd, 7); + if(value & 64) { /* implicit (value < 0) */ + value &= 63; + value <<= 2; + value |= per_get_few_bits(pd, 2); + if(value & 128) /* implicit (value < 0) */ + return -1; + if(value == 0) + return 0; + if(value >= 3) + return -1; + value = per_get_few_bits(pd, 8 * value); + return value; + } + + return value; +} + +/* + * X.691-11/2008, #11.6 + * Encoding of a normally small non-negative whole number + */ +int +uper_put_nsnnwn(asn_per_outp_t *po, int n) { + int bytes; + + if(n <= 63) { + if(n < 0) return -1; + return per_put_few_bits(po, n, 7); + } + if(n < 256) + bytes = 1; + else if(n < 65536) + bytes = 2; + else if(n < 256 * 65536) + bytes = 3; + else + return -1; /* This is not a "normally small" value */ + if(per_put_few_bits(po, bytes, 8)) + return -1; + + return per_put_few_bits(po, n, 8 * bytes); +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, uintmax_t *out_value, int nbits) { + uintmax_t lhalf; /* Lower half of the number*/ + intmax_t half; + + if(nbits <= 31) { + half = per_get_few_bits(pd, nbits); + if(half < 0) return -1; + *out_value = half; + return 0; + } + + if((size_t)nbits > 8 * sizeof(*out_value)) + return -1; /* RANGE */ + + half = per_get_few_bits(pd, 31); + if(half < 0) return -1; + + if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) + return -1; + + *out_value = ((uintmax_t)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int +uper_put_constrained_whole_number_u(asn_per_outp_t *po, uintmax_t v, + int nbits) { + if(nbits <= 31) { + return per_put_few_bits(po, v, nbits); + } else { + /* Put higher portion first, followed by lower 31-bit */ + if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) + return -1; + return per_put_few_bits(po, v, 31); + } +} + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + if(length <= 127) { /* #11.9.3.6 */ + *need_eom = 0; + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } else if(length < 16384) { /* #10.9.3.7 */ + *need_eom = 0; + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + } + + *need_eom = 0 == (length & 16383); + length >>= 14; + if(length > 4) { + *need_eom = 0; + length = 4; + } + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); + +} + + +/* + * Put the normally small length "n" into the stream. + * This procedure used to encode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +int +uper_put_nslength(asn_per_outp_t *po, size_t length) { + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length - 1, 7) ? -1 : 0; + } else { + int need_eom = 0; + if(uper_put_length(po, length, &need_eom) != (ssize_t)length + || need_eom) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +static int +per__imax_range(intmax_t lb, intmax_t ub, uintmax_t *range_r) { + uintmax_t bounds_range; + if((ub < 0) == (lb < 0)) { + bounds_range = ub - lb; + } else if(lb < 0) { + assert(ub >= 0); + bounds_range = 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return -1; + } + *range_r = bounds_range; + return 0; +} + +int +per_imax_range_rebase(intmax_t v, intmax_t lb, intmax_t ub, uintmax_t *output) { + uintmax_t range; + + assert(lb <= ub); + + if(v < lb || v > ub || per__imax_range(lb, ub, &range) < 0) { + /* Range error. */ + return -1; + } + + /* + * Fundamentally what we're doing is returning (v-lb). + * However, this triggers undefined behavior when the word width + * of signed (v) is the same as the size of unsigned (*output). + * In practice, it triggers the UndefinedSanitizer. Therefore we shall + * compute the ranges accurately to avoid C's undefined behavior. + */ + if((v < 0) == (lb < 0)) { + *output = v-lb; + return 0; + } else if(v < 0) { + uintmax_t rebased = 1 + (uintmax_t)-(v+1) + (uintmax_t)lb; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else if(lb < 0) { + uintmax_t rebased = 1 + (uintmax_t)-(lb+1) + (uintmax_t)v; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else { + assert(!"Unreachable"); + return -1; + } +} + +int +per_long_range_rebase(long v, intmax_t lb, intmax_t ub, unsigned long *output) { + uintmax_t tmp = *output; + int rc = per_imax_range_rebase((intmax_t)v, lb, ub, &tmp); + *output = tmp; + return rc; +} + +int +per_imax_range_unrebase(uintmax_t inp, intmax_t lb, intmax_t ub, intmax_t *outp) { + uintmax_t range; + + if(per__imax_range(lb, ub, &range) != 0) { + return -1; + } + + if(inp > range) { + /* + * We can encode something in the given number of bits that technically + * exceeds the range. This is an avenue for security errors, + * so we don't allow that. + */ + return -1; + } + + if(inp <= INTMAX_MAX) { + *outp = (intmax_t)inp + lb; + } else { + *outp = (lb + INTMAX_MAX + 1) + (intmax_t)((inp - INTMAX_MAX) - 1); + } + + return 0; +} + +int +per_long_range_unrebase(unsigned long inp, intmax_t lb, intmax_t ub, long *outp) { + intmax_t tmp = *outp; + int rc = per_imax_range_unrebase((uintmax_t)inp, lb, ub, &tmp); + *outp = tmp; + return rc; +} diff --git a/e2sim/asn1c/uper_support.h b/e2sim/asn1c/uper_support.h new file mode 100644 index 0000000..6c9d4ea --- /dev/null +++ b/e2sim/asn1c/uper_support.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_SUPPORT_H_ +#define _UPER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, + size_t lower_bound, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t uper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t uper_get_nsnnwn(asn_per_data_t *pd); + +/* X.691-2008/11, #11.5.6 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, uintmax_t *v, int nbits); + +/* + * Rebase the given value as an offset into the range specified by the + * lower bound (lb) and upper bound (ub). + * RETURN VALUES: + * -1: Conversion failed due to range problems. + * 0: Conversion was successful. + */ +int per_long_range_rebase(long, intmax_t lb, intmax_t ub, unsigned long *output); +int per_imax_range_rebase(intmax_t v, intmax_t lb, intmax_t ub, uintmax_t *output); +/* The inverse operation: restores the value by the offset and its bounds. */ +int per_long_range_unrebase(unsigned long inp, intmax_t lb, intmax_t ub, long *outp); +int per_imax_range_unrebase(uintmax_t inp, intmax_t lb, intmax_t ub, intmax_t *outp); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, uintmax_t v, int nbits); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "whole_length" to the Unaligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. + * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, + int *opt_need_eom); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int uper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int uper_put_nsnnwn(asn_per_outp_t *po, int n); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_SUPPORT_H_ */ diff --git a/e2sim/asn1c/xer_decoder.c b/e2sim/asn1c/xer_decoder.c new file mode 100644 index 0000000..2a14557 --- /dev/null +++ b/e2sim/asn1c/xer_decoder.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* XER/XML parsing support */ + + +/* + * Decode the XER encoding of a given type. + */ +asn_dec_rval_t +xer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *buffer, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); +} + + + +struct xer__cb_arg { + pxml_chunk_type_e chunk_type; + size_t chunk_size; + const void *chunk_buf; + int callback_not_invoked; +}; + +static int +xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { + struct xer__cb_arg *arg = (struct xer__cb_arg *)key; + arg->chunk_type = type; + arg->chunk_size = _chunk_size; + arg->chunk_buf = _chunk_data; + arg->callback_not_invoked = 0; + return -1; /* Terminate the XML parsing */ +} + +/* + * Fetch the next token from the XER/XML stream. + */ +ssize_t +xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { + struct xer__cb_arg arg; + int new_stateContext = *stateContext; + ssize_t ret; + + arg.callback_not_invoked = 1; + ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); + if(ret < 0) return -1; + if(arg.callback_not_invoked) { + assert(ret == 0); /* No data was consumed */ + *ch_type = PXER_WMORE; + return 0; /* Try again with more data */ + } else { + assert(arg.chunk_size); + assert(arg.chunk_buf == buffer); + } + + /* + * Translate the XML chunk types into more convenient ones. + */ + switch(arg.chunk_type) { + case PXML_TEXT: + *ch_type = PXER_TEXT; + break; + case PXML_TAG: + *ch_type = PXER_WMORE; + return 0; /* Want more */ + case PXML_TAG_END: + *ch_type = PXER_TAG; + break; + case PXML_COMMENT: + case PXML_COMMENT_END: + *ch_type = PXER_COMMENT; + break; + } + + *stateContext = new_stateContext; + return arg.chunk_size; +} + +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define RANGLE 0x3e /* '>' */ + +xer_check_tag_e +xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { + const char *buf = (const char *)buf_ptr; + const char *end; + xer_check_tag_e ct = XCT_OPENING; + + if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { + if(size >= 2) + ASN_DEBUG("Broken XML tag: \"%c...%c\"", + buf[0], buf[size - 1]); + return XCT_BROKEN; + } + + /* + * Determine the tag class. + */ + if(buf[1] == CSLASH) { + buf += 2; /* advance past "" */ + ct = XCT_CLOSING; + if(size > 0 && buf[size-1] == CSLASH) + return XCT_BROKEN; /* */ + } else { + buf++; /* advance past "<" */ + size -= 2; /* strip "<" and ">" */ + if(size > 0 && buf[size-1] == CSLASH) { + ct = XCT_BOTH; + size--; /* One more, for "/" */ + } + } + + /* Sometimes we don't care about the tag */ + if(!need_tag || !*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + /* + * Determine the tag name. + */ + for(end = buf + size; buf < end; buf++, need_tag++) { + int b = *buf, n = *need_tag; + if(b != n) { + if(n == 0) { + switch(b) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* "": whitespace is normal */ + return ct; + } + } + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + } + if(b == 0) + return XCT_BROKEN; /* Embedded 0 in buf?! */ + } + if(*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + return ct; +} + + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + if(rval.code != RC_OK) \ + ASN_DEBUG("Failed with %d", rval.code); \ + return rval; \ + } while(0) + +#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ + ssize_t converted_size = body_receiver \ + (struct_key, chunk_buf, chunk_size, \ + (size_t)chunk_size < size); \ + if(converted_size == -1) RETURN(RC_FAIL); \ + if(converted_size == 0 \ + && size == (size_t)chunk_size) \ + RETURN(RC_WMORE); \ + chunk_size = converted_size; \ + } while(0) +#define XER_GOT_EMPTY() do { \ + if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ + RETURN(RC_FAIL); \ + } while(0) + +/* + * Generalized function for decoding the primitive values. + */ +asn_dec_rval_t +xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, + const char *xml_tag, /* Expected XML tag */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder) + (void *struct_key, const void *chunk_buf, size_t chunk_size), + ssize_t (*body_receiver) + (void *struct_key, const void *chunk_buf, size_t chunk_size, + int have_more) + ) { + + asn_dec_rval_t rval; + ssize_t consumed_myself = 0; + + (void)opt_codec_ctx; + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + */ + if(ctx->phase > 1) RETURN(RC_FAIL); + for(;;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TEXT: + if(ctx->phase == 0) { + /* + * We have to ignore whitespace here, + * but in order to be forward compatible + * with EXTENDED-XER (EMBED-VALUES, #25) + * any text is just ignored here. + */ + } else { + XER_GOT_BODY(buf_ptr, ch_size, size); + } + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + assert(ch_type == PXER_TAG && size); + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + /* + * Phase 0: + * Expecting the opening tag + * for the type being processed. + * Phase 1: + * Waiting for the closing XML tag. + */ + switch(tcv) { + case XCT_BOTH: + if(ctx->phase) break; + /* Finished decoding of an empty element */ + XER_GOT_EMPTY(); + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + case XCT_CLOSING: + if(!ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_UNKNOWN_BO: + /* + * Certain tags in the body may be expected. + */ + if(opt_unexpected_tag_decoder + && opt_unexpected_tag_decoder(struct_key, + buf_ptr, ch_size) >= 0) { + /* Tag's processed fine */ + ADVANCE(ch_size); + if(!ctx->phase) { + /* We are not expecting + * the closing tag anymore. */ + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + } + continue; + } + /* Fall through */ + default: + break; /* Unexpected tag */ + } + + ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); + break; /* Dark and mysterious things have just happened */ + } + + RETURN(RC_FAIL); +} + + +size_t +xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { + const char *p = (const char *)chunk_buf; + const char *pend = (p == NULL)? NULL : p + chunk_size; + + for(; p < pend; p++) { + switch(*p) { + /* X.693, #8.1.4 + * HORISONTAL TAB (9) + * LINE FEED (10) + * CARRIAGE RETURN (13) + * SPACE (32) + */ + case 0x09: case 0x0a: case 0x0d: case 0x20: + continue; + default: + break; + } + break; + } + return (p - (const char *)chunk_buf); +} + +/* + * This is a vastly simplified, non-validating XML tree skipper. + */ +int +xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { + assert(*depth > 0); + switch(tcv) { + case XCT_BOTH: + case XCT_UNKNOWN_BO: + /* These negate each other. */ + return 0; + case XCT_OPENING: + case XCT_UNKNOWN_OP: + ++(*depth); + return 0; + case XCT_CLOSING: + case XCT_UNKNOWN_CL: + if(--(*depth) == 0) + return (tcv == XCT_CLOSING) ? 2 : 1; + return 0; + default: + return -1; + } +} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_decoder.h b/e2sim/asn1c/xer_decoder.h similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_decoder.h rename to e2sim/asn1c/xer_decoder.h diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_encoder.c b/e2sim/asn1c/xer_encoder.c similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_encoder.c rename to e2sim/asn1c/xer_encoder.c diff --git a/e2sim/asn1c/xer_encoder.h b/e2sim/asn1c/xer_encoder.h new file mode 100644 index 0000000..6cfc505 --- /dev/null +++ b/e2sim/asn1c/xer_encoder.h @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_ENCODER_H_ +#define _XER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ +enum xer_encoder_flags_e { + /* Mode of encoding */ + XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ + XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ +}; + +/* + * The XER encoder of any type. May be invoked by the application. + * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). + */ +asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses XER encoding/decoding to verify that: + * - Both structures encode into the same BASIC XER. + * - Both resulting XER byte streams can be decoded back. + * - Both decoded structures encode into the same BASIC XER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum xer_equivalence_e { + XEQ_SUCCESS, /* The only completely positive return value */ + XEQ_FAILURE, /* General failure */ + XEQ_ENCODE1_FAILED, /* First structure XER encoding failed */ + XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ + XEQ_DIFFERENT, /* Structures encoded into different XER */ + XEQ_DECODE_FAILED, /* Decode of the XER data failed */ + XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum xer_equivalence_e xer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t(xer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_ENCODER_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_support.c b/e2sim/asn1c/xer_support.c similarity index 100% rename from e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_support.c rename to e2sim/asn1c/xer_support.c diff --git a/e2sim/asn1c/xer_support.h b/e2sim/asn1c/xer_support.h new file mode 100644 index 0000000..2c3f369 --- /dev/null +++ b/e2sim/asn1c/xer_support.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_SUPPORT_H_ +#define _XER_SUPPORT_H_ + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types of data transferred to the application. + */ +typedef enum { + PXML_TEXT, /* Plain text between XML tags. */ + PXML_TAG, /* A tag, starting with '<'. */ + PXML_COMMENT, /* An XML comment, including "". */ + /* + * The following chunk types are reported if the chunk + * terminates the specified XML element. + */ + PXML_TAG_END, /* Tag ended */ + PXML_COMMENT_END /* Comment ended */ +} pxml_chunk_type_e; + +/* + * Callback function that is called by the parser when parsed data is + * available. The _opaque is the pointer to a field containing opaque user + * data specified in pxml_create() call. The chunk type is _type and the text + * data is the piece of buffer identified by _bufid (as supplied to + * pxml_feed() call) starting at offset _offset and of _size bytes size. + * The chunk is NOT '\0'-terminated. + */ +typedef int (pxml_callback_f)(pxml_chunk_type_e _type, + const void *_chunk_data, size_t _chunk_size, void *_key); + +/* + * Parse the given buffer as it were a chunk of XML data. + * Invoke the specified callback each time the meaningful data is found. + * This function returns number of bytes consumed from the buffer. + * It will always be lesser than or equal to the specified _size. + * The next invocation of this function must account the difference. + */ +ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, + pxml_callback_f *cb, void *_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_SUPPORT_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.c deleted file mode 100644 index 0b81557..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.c +++ /dev/null @@ -1,450 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { - sizeof(ANY_t), - offsetof(ANY_t, _asn_ctx), - ASN_OSUBV_ANY -}; -asn_TYPE_operation_t asn_OP_ANY = { - OCTET_STRING_free, - OCTET_STRING_print, - OCTET_STRING_compare, - OCTET_STRING_decode_ber, - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_hex, - ANY_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - 0, - 0, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, 0, 0, 0, -#else - ANY_decode_uper, - ANY_encode_uper, - ANY_decode_aper, - ANY_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - 0, /* Random fill is not defined for ANY type */ - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_ANY = { - "ANY", - "ANY", - &asn_OP_ANY, - 0, 0, 0, 0, - { 0, 0, asn_generic_no_constraint }, /* No constraints */ - 0, 0, /* No members */ - &asn_SPC_ANY_specs, -}; - -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -asn_enc_rval_t -ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - if(flags & XER_F_CANONICAL) { - /* - * Canonical XER-encoding of ANY type is not supported. - */ - ASN__ENCODE_FAILED; - } - - /* Dump as binary */ - return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); -} - -struct _callback_arg { - uint8_t *buffer; - size_t offset; - size_t size; -}; - -static int ANY__consume_bytes(const void *buffer, size_t size, void *key); - -int -ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { - struct _callback_arg arg; - asn_enc_rval_t erval = {0,0,0}; - - if(!st || !td) { - errno = EINVAL; - return -1; - } - - if(!sptr) { - if(st->buf) FREEMEM(st->buf); - st->size = 0; - return 0; - } - - arg.offset = arg.size = 0; - arg.buffer = 0; - - erval = der_encode(td, sptr, ANY__consume_bytes, &arg); - if(erval.encoded == -1) { - if(arg.buffer) FREEMEM(arg.buffer); - return -1; - } - assert((size_t)erval.encoded == arg.offset); - - if(st->buf) FREEMEM(st->buf); - st->buf = arg.buffer; - st->size = arg.offset; - - return 0; -} - -int -ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { - uint8_t *buffer = NULL; - ssize_t erval; - - if(!st || !td) { - errno = EINVAL; - return -1; - } - - if(!sptr) { - if(st->buf) FREEMEM(st->buf); - st->size = 0; - return 0; - } - - erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); - - if(erval == -1) { - if(buffer) FREEMEM(buffer); - return -1; - } - assert((size_t)erval > 0); - - if(st->buf) FREEMEM(st->buf); - st->buf = buffer; - st->size = erval; - - return 0; -} - -ANY_t * -ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { - ANY_t tmp; - ANY_t *st; - - if(!td || !sptr) { - errno = EINVAL; - return 0; - } - - memset(&tmp, 0, sizeof(tmp)); - - if(ANY_fromType(&tmp, td, sptr)) return 0; - - st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); - if(st) { - *st = tmp; - return st; - } else { - FREEMEM(tmp.buf); - return 0; - } -} - -ANY_t * -ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { - ANY_t tmp; - ANY_t *st; - - if(!td || !sptr) { - errno = EINVAL; - return 0; - } - - memset(&tmp, 0, sizeof(tmp)); - - if(ANY_fromType_aper(&tmp, td, sptr)) return 0; - - st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); - if(st) { - *st = tmp; - return st; - } else { - FREEMEM(tmp.buf); - return 0; - } -} - -int -ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { - asn_dec_rval_t rval; - void *newst = 0; - - if(!st || !td || !struct_ptr) { - errno = EINVAL; - return -1; - } - - if(st->buf == 0) { - /* Nothing to convert, make it empty. */ - *struct_ptr = (void *)0; - return 0; - } - - rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); - if(rval.code == RC_OK) { - *struct_ptr = newst; - return 0; - } else { - /* Remove possibly partially decoded data. */ - ASN_STRUCT_FREE(*td, newst); - return -1; - } -} - -int -ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { - asn_dec_rval_t rval; - void *newst = 0; - - if(!st || !td || !struct_ptr) { - errno = EINVAL; - return -1; - } - - if(st->buf == 0) { - /* Nothing to convert, make it empty. */ - *struct_ptr = (void *)0; - return 0; - } - - rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); - if(rval.code == RC_OK) { - *struct_ptr = newst; - return 0; - } else { - /* Remove possibly partially decoded data. */ - ASN_STRUCT_FREE(*td, newst); - return -1; - } -} - -static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { - struct _callback_arg *arg = (struct _callback_arg *)key; - - if((arg->offset + size) >= arg->size) { - size_t nsize = (arg->size ? arg->size << 2 : 16) + size; - void *p = REALLOC(arg->buffer, nsize); - if(!p) return -1; - arg->buffer = (uint8_t *)p; - arg->size = nsize; - } - - memcpy(arg->buffer + arg->offset, buffer, size); - arg->offset += size; - assert(arg->offset < arg->size); - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_ANY_specs; - size_t consumed_myself = 0; - int repeat; - ANY_t *st = (ANY_t *)*sptr; - - (void)opt_codec_ctx; - (void)constraints; - - /* - * Allocate the structure. - */ - if(!st) { - st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("UPER Decoding ANY type"); - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, -1, 0, &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len; - len_bits = len_bytes * 8; - - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += len_bits; - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - RETURN(RC_OK); -} - -asn_enc_rval_t -ANY_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const ANY_t *st = (const ANY_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - const uint8_t *buf; - size_t size; - int ret; - - (void)constraints; - - if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; - - buf = st->buf; - size = st->size; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ret = per_put_many_bits(po, buf, may_save * 8); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save; - size -= may_save; - assert(!(may_save & 0x07) || !size); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size); - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_ANY_specs; - size_t consumed_myself = 0; - int repeat; - ANY_t *st = (ANY_t *)*sptr; - - (void)opt_codec_ctx; - (void)constraints; - - /* - * Allocate the structure. - */ - if(!st) { - st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("APER Decoding ANY type"); - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = aper_get_length(pd, -1, 0, &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len; - len_bits = len_bytes * 8; - - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += len_bits; - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - RETURN(RC_OK); -} - -asn_enc_rval_t -ANY_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const ANY_t *st = (const ANY_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - const uint8_t *buf; - size_t size; - int ret; - - (void)constraints; - - if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; - - buf = st->buf; - size = st->size; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ret = per_put_many_bits(po, buf, may_save * 8); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save; - size -= may_save; - assert(!(may_save & 0x07) || !size); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size); - - ASN__ENCODED_OK(er); -} -#endif /* ASN_DISABLE_PER_SUPPORT */ - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.h deleted file mode 100644 index b30381f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ANY.h +++ /dev/null @@ -1,65 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.c deleted file mode 100644 index e8d7354..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.c +++ /dev/null @@ -1,656 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * BIT STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { - sizeof(BIT_STRING_t), - offsetof(BIT_STRING_t, _asn_ctx), - ASN_OSUBV_BIT -}; -asn_TYPE_operation_t asn_OP_BIT_STRING = { - OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ - BIT_STRING_print, - BIT_STRING_compare, - OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_decode_xer_binary, - BIT_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - BIT_STRING_decode_oer, - BIT_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - BIT_STRING_decode_uper, /* Unaligned PER decoder */ - BIT_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - BIT_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { - "BIT STRING", - "BIT_STRING", - &asn_OP_BIT_STRING, - asn_DEF_BIT_STRING_tags, - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - asn_DEF_BIT_STRING_tags, /* Same as above */ - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - { 0, 0, BIT_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_BIT_STRING_specs -}; - -/* - * BIT STRING generic constraint. - */ -int -BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - - if(st && st->buf) { - if((st->size == 0 && st->bits_unused) - || st->bits_unused < 0 || st->bits_unused > 7) { - ASN__CTFAIL(app_key, td, sptr, - "%s: invalid padding byte (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - return 0; -} - -static const char *_bit_pattern[16] = { - "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", - "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" -}; - -asn_enc_rval_t -BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0, 0, 0}; - char scratch[128]; - char *p = scratch; - char *scend = scratch + (sizeof(scratch) - 10); - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - int xcan = (flags & XER_F_CANONICAL); - uint8_t *buf; - uint8_t *end; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - buf = st->buf; - end = buf + st->size - 1; /* Last byte is special */ - - /* - * Binary dump - */ - for(; buf < end; buf++) { - int v = *buf; - int nline = xcan?0:(((buf - st->buf) % 8) == 0); - if(p >= scend || nline) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - if(nline) ASN__TEXT_INDENT(1, ilevel); - } - memcpy(p + 0, _bit_pattern[v >> 4], 4); - memcpy(p + 4, _bit_pattern[v & 0x0f], 4); - p += 8; - } - - if(!xcan && ((buf - st->buf) % 8) == 0) - ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - - if(buf == end) { - int v = *buf; - int ubits = st->bits_unused; - int i; - for(i = 7; i >= ubits; i--) - *p++ = (v & (1 << i)) ? 0x31 : 0x30; - ASN__CALLBACK(scratch, p - scratch); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - - -/* - * BIT STRING specific contents printer. - */ -int -BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - char scratch[64]; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - uint8_t *buf; - uint8_t *end; - char *p = scratch; - - (void)td; /* Unused argument */ - - if(!st || !st->buf) - return (cb("", 8, app_key) < 0) ? -1 : 0; - - ilevel++; - buf = st->buf; - end = buf + st->size; - - /* - * Hexadecimal dump. - */ - for(; buf < end; buf++) { - if((buf - st->buf) % 16 == 0 && (st->size > 16) - && buf != st->buf) { - _i_INDENT(1); - /* Dump the string */ - if(cb(scratch, p - scratch, app_key) < 0) return -1; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - - if(p > scratch) { - p--; /* Eat the tailing space */ - - if((st->size > 16)) { - _i_INDENT(1); - } - - /* Dump the incomplete 16-bytes row */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - } - - if(st->bits_unused) { - int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", - st->bits_unused, st->bits_unused == 1 ? "" : "s"); - assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); - if(ret > 0 && ret < (ssize_t)sizeof(scratch) - && cb(scratch, ret, app_key) < 0) - return -1; - } - - return 0; -} - -/* - * Non-destructively remove the trailing 0-bits from the given bit string. - */ -static const BIT_STRING_t * -BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { - const uint8_t *b; - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - - if(st->size == 0) { - assert(st->bits_unused == 0); - return st; - } else { - for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { - ; - } - /* b points to the last byte which may contain data */ - if(*b) { - int unused = 7; - uint8_t v = *b; - v &= -(int8_t)v; - if(v & 0x0F) unused -= 4; - if(v & 0x33) unused -= 2; - if(v & 0x55) unused -= 1; - tmp->size = b-st->buf + 1; - tmp->bits_unused = unused; - } else { - tmp->size = b-st->buf; - tmp->bits_unused = 0; - } - - assert(b >= st->buf); - } - - unconst.c_buf = st->buf; - tmp->buf = unconst.nc_buf; - return tmp; -} - -/* - * Lexicographically compare the common prefix of both strings, - * and if it is the same return -1 for the smallest string. - */ -int -BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - /* - * Remove information about trailing bits, since - * X.680 (08/2015) #22.7 "ensure that different semantics are not" - * "associated with [values that differ only in] the trailing 0 bits." - */ - BIT_STRING_t compact_a, compact_b; - const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); - const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); - const asn_OCTET_STRING_specifics_t *specs = td->specifics; - - assert(specs && specs->subvariant == ASN_OSUBV_BIT); - - if(a && b) { - size_t common_prefix_size = a->size <= b->size ? a->size : b->size; - int ret = memcmp(a->buf, b->buf, common_prefix_size); - if(ret == 0) { - /* Figure out which string with equal prefixes is longer. */ - if(a->size < b->size) { - return -1; - } else if(a->size > b->size) { - return 1; - } else { - /* Figure out how many unused bits */ - if(a->bits_unused > b->bits_unused) { - return -1; - } else if(a->bits_unused < b->bits_unused) { - return 1; - } else { - return 0; - } - } - } else { - return ret; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { - APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; - -asn_dec_rval_t -BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - - (void)opt_codec_ctx; - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - - if(specs->subvariant != ASN_OSUBV_BIT) { - ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); - RETURN(RC_FAIL); - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - st->size = (csiz->upper_bound + 7) >> 3; - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += csiz->upper_bound; - st->buf[st->size] = 0; - st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - BIT_STRING_t compact_bstr; /* Do not modify this directly! */ - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - size_t size_in_bits; - const uint8_t *buf; - int ret; - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(specs->subvariant == ASN_OSUBV_BIT) { - if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - /* Figure out the size without the trailing bits */ - st = BIT_STRING__compactify(st, &compact_bstr); - size_in_bits = 8 * st->size - st->bits_unused; - - ASN_DEBUG( - "Encoding %s into %" ASN_PRI_SIZE " bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_bits > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; - ASN_DEBUG( - "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " - "value %" ASN_PRI_SSIZE "", - st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, - add_trailer, - add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); - ret = per_put_few_bits( - po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = per_put_many_bits(po, st->buf, size_in_bits); - if(ret) ASN__ENCODE_FAILED; - if(add_trailer) { - static const uint8_t zeros[16]; - size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; - while(trailing_zero_bits > 0) { - if(trailing_zero_bits > 8 * sizeof(zeros)) { - ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); - trailing_zero_bits -= 8 * sizeof(zeros); - } else { - ret = per_put_many_bits(po, zeros, trailing_zero_bits); - trailing_zero_bits = 0; - } - if(ret) ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - do { - int need_eom = 0; - ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); - if(maySave < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); - - ret = per_put_many_bits(po, buf, maySave); - if(ret) ASN__ENCODE_FAILED; - - buf += maySave >> 3; - size_in_bits -= maySave; - assert(!(maySave & 0x07) || !size_in_bits); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_bits); - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -asn_random_fill_result_t -BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - static unsigned lengths[] = {0, 1, 2, 3, 4, 8, - 126, 127, 128, 16383, 16384, 16385, - 65534, 65535, 65536, 65537}; - uint8_t *buf; - uint8_t *bend; - uint8_t *b; - size_t rnd_bits, rnd_len; - BIT_STRING_t *st; - - if(max_length == 0) return result_skipped; - - switch(specs->subvariant) { - case ASN_OSUBV_ANY: - return result_failed; - case ASN_OSUBV_BIT: - break; - default: - break; - } - - /* Figure out how far we should go */ - rnd_bits = lengths[asn_random_between( - 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_CONSTRAINED) { - long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length - ? pc->upper_bound - : (ssize_t)max_length; - if(max_length < (size_t)pc->lower_bound) { - return result_skipped; - } - if(pc->flags & APC_EXTENSIBLE) { - switch(asn_random_between(0, 5)) { - case 0: - if(pc->lower_bound > 0) { - rnd_bits = pc->lower_bound - 1; - break; - } - /* Fall through */ - case 1: - rnd_bits = pc->upper_bound + 1; - break; - case 2: - /* Keep rnd_bits from the table */ - if(rnd_bits < max_length) { - break; - } - /* Fall through */ - default: - rnd_bits = asn_random_between(pc->lower_bound, - suggested_upper_bound); - } - } else { - rnd_bits = - asn_random_between(pc->lower_bound, suggested_upper_bound); - } - } else { - rnd_bits = asn_random_between(0, max_length - 1); - } - } else if(rnd_bits >= max_length) { - rnd_bits = asn_random_between(0, max_length - 1); - } - - rnd_len = (rnd_bits + 7) / 8; - buf = CALLOC(1, rnd_len + 1); - if(!buf) return result_failed; - - bend = &buf[rnd_len]; - - for(b = buf; b < bend; b++) { - *(uint8_t *)b = asn_random_between(0, 255); - } - *b = 0; /* Zero-terminate just in case. */ - - if(*sptr) { - st = *sptr; - FREEMEM(st->buf); - } else { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) { - FREEMEM(buf); - return result_failed; - } - } - - st->buf = buf; - st->size = rnd_len; - st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; - if(st->bits_unused) { - assert(st->size > 0); - st->buf[st->size-1] &= 0xff << st->bits_unused; - } - - result_ok.length = st->size; - return result_ok; -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.h deleted file mode 100644 index c1bdbbc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING.h +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING_oer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING_oer.c deleted file mode 100644 index aff5075..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/BIT_STRING_oer.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -asn_dec_rval_t -BIT_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - const asn_oer_constraints_t *cts = - constraints ? constraints : td->encoding_constraints.oer_constraints; - ssize_t ct_size = cts ? cts->size : -1; - asn_dec_rval_t rval = {RC_OK, 0}; - size_t expected_length = 0; - - (void)opt_codec_ctx; - - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(ct_size >= 0) { - expected_length = (ct_size + 7) >> 3; - st->bits_unused = (8 - (ct_size & 7)) & 7; - } else { - /* - * X.696 (08/2015) #13.3.1 - * Encode length determinant as _number of octets_, but only - * if upper bound is not equal to lower bound. - */ - ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); - if(len_len > 0) { - ptr = (const char *)ptr + len_len; - size -= len_len; - } else if(len_len == 0) { - ASN__DECODE_STARVED; - } else if(len_len < 0) { - ASN__DECODE_FAILED; - } - - if(expected_length < 1) { - ASN__DECODE_FAILED; - } else if(expected_length > size) { - ASN__DECODE_STARVED; - } - - st->bits_unused = ((const uint8_t *)ptr)[0]; - if(st->bits_unused & ~7) { - ASN_DEBUG("%s: unused bits outside of 0..7 range", td->name); - ASN__DECODE_FAILED; - } - ptr = (const char *)ptr + 1; - size--; - expected_length--; - rval.consumed = len_len + 1; - } - - if(size < expected_length) { - ASN__DECODE_STARVED; - } else { - uint8_t *buf = MALLOC(expected_length + 1); - if(buf == NULL) { - ASN__DECODE_FAILED; - } else { - memcpy(buf, ptr, expected_length); - buf[expected_length] = '\0'; - } - FREEMEM(st->buf); - st->buf = buf; - st->size = expected_length; - if(expected_length > 0) { - buf[expected_length - 1] &= (0xff << st->bits_unused); - } - - rval.consumed += expected_length; - return rval; - } -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -BIT_STRING_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, - void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - asn_enc_rval_t erval = {0, 0, 0}; - const asn_oer_constraints_t *cts = - constraints ? constraints : td->encoding_constraints.oer_constraints; - ssize_t ct_size = cts ? cts->size : -1; - size_t trailing_zeros = 0; - int fix_last_byte = 0; - - if(!st) ASN__ENCODE_FAILED; - - if(st->bits_unused & ~7) { - ASN_DEBUG("BIT STRING unused bits %d out of 0..7 range", - st->bits_unused); - ASN__ENCODE_FAILED; - } - if(st->bits_unused && !(st->size && st->buf)) { - ASN_DEBUG("BIT STRING %s size 0 can't support unused bits %d", td->name, - st->bits_unused); - ASN__ENCODE_FAILED; - } - - if(ct_size >= 0) { - size_t ct_bytes = (ct_size + 7) >> 3; - if(st->size > ct_bytes) { - ASN_DEBUG("More bits in BIT STRING %s (%" ASN_PRI_SSIZE ") than constrained %" ASN_PRI_SSIZE "", - td->name, 8 * st->size - st->bits_unused, ct_size); - ASN__ENCODE_FAILED; - } - trailing_zeros = ct_bytes - st->size; /* Allow larger constraint */ - } else { - uint8_t ub = st->bits_unused & 7; - ssize_t len_len = oer_serialize_length(1 + st->size, cb, app_key); - if(len_len < 0) ASN__ENCODE_FAILED; - if(cb(&ub, 1, app_key) < 0) { - ASN__ENCODE_FAILED; - } - erval.encoded += len_len + 1; - } - - if(st->bits_unused) { - if(st->buf[st->size - 1] & (0xff << st->bits_unused)) { - fix_last_byte = 1; - } - } - - if(cb(st->buf, st->size - fix_last_byte, app_key) < 0) { - ASN__ENCODE_FAILED; - } - - if(fix_last_byte) { - uint8_t b = st->buf[st->size - 1] & (0xff << st->bits_unused); - if(cb(&b, 1, app_key) < 0) { - ASN__ENCODE_FAILED; - } - } - - erval.encoded += st->size; - - if(trailing_zeros) { - static uint8_t zeros[16]; - while(trailing_zeros > 0) { - int ret; - if(trailing_zeros < sizeof(zeros)) { - ret = cb(zeros, trailing_zeros, app_key); - erval.encoded += trailing_zeros; - } else { - ret = cb(zeros, sizeof(zeros), app_key); - erval.encoded += sizeof(zeros); - } - if(ret < 0) ASN__ENCODE_FAILED; - } - } - - return erval; -} - - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.c deleted file mode 100644 index e626083..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "C-RNTI.h" - -int -C_RNTI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 2)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_C_RNTI_constr_1 CC_NOTUSED = { - { 0, 0 }, - 2 /* (SIZE(2..2)) */}; -asn_per_constraints_t asn_PER_type_C_RNTI_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_C_RNTI_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_C_RNTI = { - "C-RNTI", - "C-RNTI", - &asn_OP_OCTET_STRING, - asn_DEF_C_RNTI_tags_1, - sizeof(asn_DEF_C_RNTI_tags_1) - /sizeof(asn_DEF_C_RNTI_tags_1[0]), /* 1 */ - asn_DEF_C_RNTI_tags_1, /* Same as above */ - sizeof(asn_DEF_C_RNTI_tags_1) - /sizeof(asn_DEF_C_RNTI_tags_1[0]), /* 1 */ - { &asn_OER_type_C_RNTI_constr_1, &asn_PER_type_C_RNTI_constr_1, C_RNTI_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.h deleted file mode 100644 index 7366109..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/C-RNTI.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _C_RNTI_H_ -#define _C_RNTI_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* C-RNTI */ -typedef OCTET_STRING_t C_RNTI_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_C_RNTI_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_C_RNTI; -asn_struct_free_f C_RNTI_free; -asn_struct_print_f C_RNTI_print; -asn_constr_check_f C_RNTI_constraint; -ber_type_decoder_f C_RNTI_decode_ber; -der_type_encoder_f C_RNTI_encode_der; -xer_type_decoder_f C_RNTI_decode_xer; -xer_type_encoder_f C_RNTI_encode_xer; -oer_type_decoder_f C_RNTI_decode_oer; -oer_type_encoder_f C_RNTI_encode_oer; -per_type_decoder_f C_RNTI_decode_uper; -per_type_encoder_f C_RNTI_encode_uper; -per_type_decoder_f C_RNTI_decode_aper; -per_type_encoder_f C_RNTI_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _C_RNTI_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c deleted file mode 100644 index c0b6775..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-CP-Usage-Report-CellResourceReportItem.h" - -static int -memb_ueResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 32)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_ueResourceReportList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CU_CP_Usage_Report_UeResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ueResourceReportList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ueResourceReportList_specs_3 = { - sizeof(struct CU_CP_Usage_Report_CellResourceReportItem__ueResourceReportList), - offsetof(struct CU_CP_Usage_Report_CellResourceReportItem__ueResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ueResourceReportList_3 = { - "ueResourceReportList", - "ueResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_ueResourceReportList_tags_3, - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]) - 1, /* 1 */ - asn_DEF_ueResourceReportList_tags_3, /* Same as above */ - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]), /* 2 */ - { &asn_OER_type_ueResourceReportList_constr_3, &asn_PER_type_ueResourceReportList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_ueResourceReportList_3, - 1, /* Single element */ - &asn_SPC_ueResourceReportList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_CellResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_CellResourceReportItem, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_CellResourceReportItem, ueResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_ueResourceReportList_3, - 0, - { &asn_OER_memb_ueResourceReportList_constr_3, &asn_PER_memb_ueResourceReportList_constr_3, memb_ueResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "ueResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_CP_Usage_Report_CellResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_CellResourceReportItem_specs_1 = { - sizeof(struct CU_CP_Usage_Report_CellResourceReportItem), - offsetof(struct CU_CP_Usage_Report_CellResourceReportItem, _asn_ctx), - asn_MAP_CU_CP_Usage_Report_CellResourceReportItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_CellResourceReportItem = { - "CU-CP-Usage-Report-CellResourceReportItem", - "CU-CP-Usage-Report-CellResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1, - sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_CP_Usage_Report_CellResourceReportItem_1, - 2, /* Elements count */ - &asn_SPC_CU_CP_Usage_Report_CellResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h deleted file mode 100644 index 9fb9dd9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_CP_Usage_Report_CellResourceReportItem_H_ -#define _CU_CP_Usage_Report_CellResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "NRCGI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CU_CP_Usage_Report_UeResourceReportItem; - -/* CU-CP-Usage-Report-CellResourceReportItem */ -typedef struct CU_CP_Usage_Report_CellResourceReportItem { - NRCGI_t nRCGI; - struct CU_CP_Usage_Report_CellResourceReportItem__ueResourceReportList { - A_SEQUENCE_OF(struct CU_CP_Usage_Report_UeResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ueResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_CP_Usage_Report_CellResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_CellResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_CellResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_CellResourceReportItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CU-CP-Usage-Report-UeResourceReportItem.h" - -#endif /* _CU_CP_Usage_Report_CellResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.c deleted file mode 100644 index 22055b3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-CP-Usage-Report-Per-UE.h" - -static int -memb_cellResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 16384)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..16384)) */}; -static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..16384)) */}; -static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CU_CP_Usage_Report_CellResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = { - sizeof(struct CU_CP_Usage_Report_Per_UE__cellResourceReportList), - offsetof(struct CU_CP_Usage_Report_Per_UE__cellResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = { - "cellResourceReportList", - "cellResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_cellResourceReportList_tags_2, - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_cellResourceReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_cellResourceReportList_2, - 1, /* Single element */ - &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_Per_UE_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_Per_UE, cellResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_cellResourceReportList_2, - 0, - { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "cellResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_CP_Usage_Report_Per_UE_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_Per_UE_specs_1 = { - sizeof(struct CU_CP_Usage_Report_Per_UE), - offsetof(struct CU_CP_Usage_Report_Per_UE, _asn_ctx), - asn_MAP_CU_CP_Usage_Report_Per_UE_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_Per_UE = { - "CU-CP-Usage-Report-Per-UE", - "CU-CP-Usage-Report-Per-UE", - &asn_OP_SEQUENCE, - asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1, - sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_CP_Usage_Report_Per_UE_1, - 1, /* Elements count */ - &asn_SPC_CU_CP_Usage_Report_Per_UE_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.h deleted file mode 100644 index dad74ca..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-Per-UE.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_CP_Usage_Report_Per_UE_H_ -#define _CU_CP_Usage_Report_Per_UE_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CU_CP_Usage_Report_CellResourceReportItem; - -/* CU-CP-Usage-Report-Per-UE */ -typedef struct CU_CP_Usage_Report_Per_UE { - struct CU_CP_Usage_Report_Per_UE__cellResourceReportList { - A_SEQUENCE_OF(struct CU_CP_Usage_Report_CellResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cellResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_CP_Usage_Report_Per_UE_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_Per_UE; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_Per_UE_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_Per_UE_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CU-CP-Usage-Report-CellResourceReportItem.h" - -#endif /* _CU_CP_Usage_Report_Per_UE_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c deleted file mode 100644 index de4d8de..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-CP-Usage-Report-UeResourceReportItem.h" - -asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_UeResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, c_RNTI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_C_RNTI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "c-RNTI" - }, - { ATF_POINTER, 2, offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, serving_Cell_RF_Type), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "serving-Cell-RF-Type" - }, - { ATF_POINTER, 1, offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, neighbor_Cell_RF), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "neighbor-Cell-RF" - }, -}; -static const int asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* serving-Cell-RF-Type */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* neighbor-Cell-RF */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_UeResourceReportItem_specs_1 = { - sizeof(struct CU_CP_Usage_Report_UeResourceReportItem), - offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, _asn_ctx), - asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_UeResourceReportItem = { - "CU-CP-Usage-Report-UeResourceReportItem", - "CU-CP-Usage-Report-UeResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1, - sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_CP_Usage_Report_UeResourceReportItem_1, - 3, /* Elements count */ - &asn_SPC_CU_CP_Usage_Report_UeResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h deleted file mode 100644 index 11edd99..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_CP_Usage_Report_UeResourceReportItem_H_ -#define _CU_CP_Usage_Report_UeResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "C-RNTI.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* CU-CP-Usage-Report-UeResourceReportItem */ -typedef struct CU_CP_Usage_Report_UeResourceReportItem { - C_RNTI_t c_RNTI; - OCTET_STRING_t *serving_Cell_RF_Type; /* OPTIONAL */ - OCTET_STRING_t *neighbor_Cell_RF; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_CP_Usage_Report_UeResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_UeResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_UeResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_UeResourceReportItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _CU_CP_Usage_Report_UeResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c deleted file mode 100644 index 4781c55..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-UP-Usage-Report-CellResourceReportItem.h" - -static int -memb_ueResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 32)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_ueResourceReportList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CU_UP_Usage_Report_UeResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ueResourceReportList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ueResourceReportList_specs_3 = { - sizeof(struct CU_UP_Usage_Report_CellResourceReportItem__ueResourceReportList), - offsetof(struct CU_UP_Usage_Report_CellResourceReportItem__ueResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ueResourceReportList_3 = { - "ueResourceReportList", - "ueResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_ueResourceReportList_tags_3, - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]) - 1, /* 1 */ - asn_DEF_ueResourceReportList_tags_3, /* Same as above */ - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]), /* 2 */ - { &asn_OER_type_ueResourceReportList_constr_3, &asn_PER_type_ueResourceReportList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_ueResourceReportList_3, - 1, /* Single element */ - &asn_SPC_ueResourceReportList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_CellResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_CellResourceReportItem, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_CellResourceReportItem, ueResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_ueResourceReportList_3, - 0, - { &asn_OER_memb_ueResourceReportList_constr_3, &asn_PER_memb_ueResourceReportList_constr_3, memb_ueResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "ueResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_UP_Usage_Report_CellResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_CellResourceReportItem_specs_1 = { - sizeof(struct CU_UP_Usage_Report_CellResourceReportItem), - offsetof(struct CU_UP_Usage_Report_CellResourceReportItem, _asn_ctx), - asn_MAP_CU_UP_Usage_Report_CellResourceReportItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_CellResourceReportItem = { - "CU-UP-Usage-Report-CellResourceReportItem", - "CU-UP-Usage-Report-CellResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1, - sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_UP_Usage_Report_CellResourceReportItem_1, - 2, /* Elements count */ - &asn_SPC_CU_UP_Usage_Report_CellResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h deleted file mode 100644 index f313f40..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_UP_Usage_Report_CellResourceReportItem_H_ -#define _CU_UP_Usage_Report_CellResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "NRCGI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CU_UP_Usage_Report_UeResourceReportItem; - -/* CU-UP-Usage-Report-CellResourceReportItem */ -typedef struct CU_UP_Usage_Report_CellResourceReportItem { - NRCGI_t nRCGI; - struct CU_UP_Usage_Report_CellResourceReportItem__ueResourceReportList { - A_SEQUENCE_OF(struct CU_UP_Usage_Report_UeResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ueResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_UP_Usage_Report_CellResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_CellResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_CellResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_CellResourceReportItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CU-UP-Usage-Report-UeResourceReportItem.h" - -#endif /* _CU_UP_Usage_Report_CellResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.c deleted file mode 100644 index 5213281..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-UP-Usage-Report-Per-UE.h" - -static int -memb_cellResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 512)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CU_UP_Usage_Report_CellResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = { - sizeof(struct CU_UP_Usage_Report_Per_UE__cellResourceReportList), - offsetof(struct CU_UP_Usage_Report_Per_UE__cellResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = { - "cellResourceReportList", - "cellResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_cellResourceReportList_tags_2, - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_cellResourceReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_cellResourceReportList_2, - 1, /* Single element */ - &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_Per_UE_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_Per_UE, cellResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_cellResourceReportList_2, - 0, - { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "cellResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_UP_Usage_Report_Per_UE_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_Per_UE_specs_1 = { - sizeof(struct CU_UP_Usage_Report_Per_UE), - offsetof(struct CU_UP_Usage_Report_Per_UE, _asn_ctx), - asn_MAP_CU_UP_Usage_Report_Per_UE_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_Per_UE = { - "CU-UP-Usage-Report-Per-UE", - "CU-UP-Usage-Report-Per-UE", - &asn_OP_SEQUENCE, - asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1, - sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_UP_Usage_Report_Per_UE_1, - 1, /* Elements count */ - &asn_SPC_CU_UP_Usage_Report_Per_UE_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.h deleted file mode 100644 index 71e6ed9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-Per-UE.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_UP_Usage_Report_Per_UE_H_ -#define _CU_UP_Usage_Report_Per_UE_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CU_UP_Usage_Report_CellResourceReportItem; - -/* CU-UP-Usage-Report-Per-UE */ -typedef struct CU_UP_Usage_Report_Per_UE { - struct CU_UP_Usage_Report_Per_UE__cellResourceReportList { - A_SEQUENCE_OF(struct CU_UP_Usage_Report_CellResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cellResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_UP_Usage_Report_Per_UE_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_Per_UE; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_Per_UE_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_Per_UE_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CU-UP-Usage-Report-CellResourceReportItem.h" - -#endif /* _CU_UP_Usage_Report_Per_UE_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c deleted file mode 100644 index 1867379..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-UP-Usage-Report-UeResourceReportItem.h" - -static int -memb_pDCPBytesDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_UeResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, c_RNTI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_C_RNTI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "c-RNTI" - }, - { ATF_POINTER, 2, offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, pDCPBytesDL), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesDL_constr_3, &asn_PER_memb_pDCPBytesDL_constr_3, memb_pDCPBytesDL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesDL" - }, - { ATF_POINTER, 1, offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, pDCPBytesUL), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesUL_constr_4, &asn_PER_memb_pDCPBytesUL_constr_4, memb_pDCPBytesUL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesUL" - }, -}; -static const int asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pDCPBytesDL */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pDCPBytesUL */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_UeResourceReportItem_specs_1 = { - sizeof(struct CU_UP_Usage_Report_UeResourceReportItem), - offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, _asn_ctx), - asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_UeResourceReportItem = { - "CU-UP-Usage-Report-UeResourceReportItem", - "CU-UP-Usage-Report-UeResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1, - sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_UP_Usage_Report_UeResourceReportItem_1, - 3, /* Elements count */ - &asn_SPC_CU_UP_Usage_Report_UeResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h deleted file mode 100644 index 3a3dec7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_UP_Usage_Report_UeResourceReportItem_H_ -#define _CU_UP_Usage_Report_UeResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "C-RNTI.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* CU-UP-Usage-Report-UeResourceReportItem */ -typedef struct CU_UP_Usage_Report_UeResourceReportItem { - C_RNTI_t c_RNTI; - INTEGER_t *pDCPBytesDL; /* OPTIONAL */ - INTEGER_t *pDCPBytesUL; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_UP_Usage_Report_UeResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_UeResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_UeResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_UeResourceReportItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _CU_UP_Usage_Report_UeResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CUUPMeasurement-Container.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CUUPMeasurement-Container.c deleted file mode 100644 index bd27283..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CUUPMeasurement-Container.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CUUPMeasurement-Container.h" - -static int -memb_plmnList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 12)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_plmnList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..12)) */}; -static asn_per_constraints_t asn_PER_type_plmnList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 12 } /* (SIZE(1..12)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_plmnList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..12)) */}; -static asn_per_constraints_t asn_PER_memb_plmnList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 12 } /* (SIZE(1..12)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_plmnList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PlmnID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_plmnList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_plmnList_specs_2 = { - sizeof(struct CUUPMeasurement_Container__plmnList), - offsetof(struct CUUPMeasurement_Container__plmnList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_plmnList_2 = { - "plmnList", - "plmnList", - &asn_OP_SEQUENCE_OF, - asn_DEF_plmnList_tags_2, - sizeof(asn_DEF_plmnList_tags_2) - /sizeof(asn_DEF_plmnList_tags_2[0]) - 1, /* 1 */ - asn_DEF_plmnList_tags_2, /* Same as above */ - sizeof(asn_DEF_plmnList_tags_2) - /sizeof(asn_DEF_plmnList_tags_2[0]), /* 2 */ - { &asn_OER_type_plmnList_constr_2, &asn_PER_type_plmnList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_plmnList_2, - 1, /* Single element */ - &asn_SPC_plmnList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CUUPMeasurement_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CUUPMeasurement_Container, plmnList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_plmnList_2, - 0, - { &asn_OER_memb_plmnList_constr_2, &asn_PER_memb_plmnList_constr_2, memb_plmnList_constraint_1 }, - 0, 0, /* No default value */ - "plmnList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CUUPMeasurement_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CUUPMeasurement_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* plmnList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CUUPMeasurement_Container_specs_1 = { - sizeof(struct CUUPMeasurement_Container), - offsetof(struct CUUPMeasurement_Container, _asn_ctx), - asn_MAP_CUUPMeasurement_Container_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CUUPMeasurement_Container = { - "CUUPMeasurement-Container", - "CUUPMeasurement-Container", - &asn_OP_SEQUENCE, - asn_DEF_CUUPMeasurement_Container_tags_1, - sizeof(asn_DEF_CUUPMeasurement_Container_tags_1) - /sizeof(asn_DEF_CUUPMeasurement_Container_tags_1[0]), /* 1 */ - asn_DEF_CUUPMeasurement_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_CUUPMeasurement_Container_tags_1) - /sizeof(asn_DEF_CUUPMeasurement_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CUUPMeasurement_Container_1, - 1, /* Elements count */ - &asn_SPC_CUUPMeasurement_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CUUPMeasurement-Container.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CUUPMeasurement-Container.h deleted file mode 100644 index 14aafc3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CUUPMeasurement-Container.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CUUPMeasurement_Container_H_ -#define _CUUPMeasurement_Container_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PlmnID_List; - -/* CUUPMeasurement-Container */ -typedef struct CUUPMeasurement_Container { - struct CUUPMeasurement_Container__plmnList { - A_SEQUENCE_OF(struct PlmnID_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } plmnList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CUUPMeasurement_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CUUPMeasurement_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_CUUPMeasurement_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_CUUPMeasurement_Container_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PlmnID-List.h" - -#endif /* _CUUPMeasurement_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.c deleted file mode 100644 index 1027911..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "Cause.h" - -asn_per_constraints_t asn_PER_type_Cause_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_Cause_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricRequest), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseRIC, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricService), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseRICservice, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricService" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseTransport, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "transport" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseProtocol, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocol" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseMisc, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "misc" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_Cause_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* misc */ -}; -asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = { - sizeof(struct Cause), - offsetof(struct Cause, _asn_ctx), - offsetof(struct Cause, present), - sizeof(((struct Cause *)0)->present), - asn_MAP_Cause_tag2el_1, - 5, /* Count of tags in the map */ - 0, 0, - 5 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_Cause = { - "Cause", - "Cause", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_Cause_constr_1, CHOICE_constraint }, - asn_MBR_Cause_1, - 5, /* Elements count */ - &asn_SPC_Cause_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.h deleted file mode 100644 index 1b829a6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Cause.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _Cause_H_ -#define _Cause_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "CauseRIC.h" -#include "CauseRICservice.h" -#include "CauseTransport.h" -#include "CauseProtocol.h" -#include "CauseMisc.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum Cause_PR { - Cause_PR_NOTHING, /* No components present */ - Cause_PR_ricRequest, - Cause_PR_ricService, - Cause_PR_transport, - Cause_PR_protocol, - Cause_PR_misc - /* Extensions may appear below */ - -} Cause_PR; - -/* Cause */ -typedef struct Cause { - Cause_PR present; - union Cause_u { - CauseRIC_t ricRequest; - CauseRICservice_t ricService; - CauseTransport_t transport; - CauseProtocol_t protocol; - CauseMisc_t misc; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} Cause_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_Cause; -extern asn_CHOICE_specifics_t asn_SPC_Cause_specs_1; -extern asn_TYPE_member_t asn_MBR_Cause_1[5]; -extern asn_per_constraints_t asn_PER_type_Cause_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _Cause_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.c deleted file mode 100644 index 1709929..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "CauseMisc.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = { - { 0, 27, "control-processing-overload" }, - { 1, 16, "hardware-failure" }, - { 2, 15, "om-intervention" }, - { 3, 11, "unspecified" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = { - 0, /* control-processing-overload(0) */ - 1, /* hardware-failure(1) */ - 2, /* om-intervention(2) */ - 3 /* unspecified(3) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = { - asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */ - 4, /* Number of elements in the maps */ - 5, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseMisc_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseMisc = { - "CauseMisc", - "CauseMisc", - &asn_OP_NativeEnumerated, - asn_DEF_CauseMisc_tags_1, - sizeof(asn_DEF_CauseMisc_tags_1) - /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ - asn_DEF_CauseMisc_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseMisc_tags_1) - /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseMisc_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseMisc_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.h deleted file mode 100644 index d175009..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseMisc.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _CauseMisc_H_ -#define _CauseMisc_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseMisc { - CauseMisc_control_processing_overload = 0, - CauseMisc_hardware_failure = 1, - CauseMisc_om_intervention = 2, - CauseMisc_unspecified = 3 - /* - * Enumeration is extensible - */ -} e_CauseMisc; - -/* CauseMisc */ -typedef long CauseMisc_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseMisc_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseMisc; -extern const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1; -asn_struct_free_f CauseMisc_free; -asn_struct_print_f CauseMisc_print; -asn_constr_check_f CauseMisc_constraint; -ber_type_decoder_f CauseMisc_decode_ber; -der_type_encoder_f CauseMisc_encode_der; -xer_type_decoder_f CauseMisc_decode_xer; -xer_type_encoder_f CauseMisc_encode_xer; -per_type_decoder_f CauseMisc_decode_uper; -per_type_encoder_f CauseMisc_encode_uper; -per_type_decoder_f CauseMisc_decode_aper; -per_type_encoder_f CauseMisc_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseMisc_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.c deleted file mode 100644 index e5b11b0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "CauseProtocol.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseProtocol_value2enum_1[] = { - { 0, 21, "transfer-syntax-error" }, - { 1, 28, "abstract-syntax-error-reject" }, - { 2, 39, "abstract-syntax-error-ignore-and-notify" }, - { 3, 42, "message-not-compatible-with-receiver-state" }, - { 4, 14, "semantic-error" }, - { 5, 49, "abstract-syntax-error-falsely-constructed-message" }, - { 6, 11, "unspecified" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = { - 5, /* abstract-syntax-error-falsely-constructed-message(5) */ - 2, /* abstract-syntax-error-ignore-and-notify(2) */ - 1, /* abstract-syntax-error-reject(1) */ - 3, /* message-not-compatible-with-receiver-state(3) */ - 4, /* semantic-error(4) */ - 0, /* transfer-syntax-error(0) */ - 6 /* unspecified(6) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = { - asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */ - 7, /* Number of elements in the maps */ - 8, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseProtocol_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseProtocol = { - "CauseProtocol", - "CauseProtocol", - &asn_OP_NativeEnumerated, - asn_DEF_CauseProtocol_tags_1, - sizeof(asn_DEF_CauseProtocol_tags_1) - /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ - asn_DEF_CauseProtocol_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseProtocol_tags_1) - /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseProtocol_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseProtocol_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.h deleted file mode 100644 index 72329ac..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseProtocol.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _CauseProtocol_H_ -#define _CauseProtocol_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseProtocol { - CauseProtocol_transfer_syntax_error = 0, - CauseProtocol_abstract_syntax_error_reject = 1, - CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, - CauseProtocol_message_not_compatible_with_receiver_state = 3, - CauseProtocol_semantic_error = 4, - CauseProtocol_abstract_syntax_error_falsely_constructed_message = 5, - CauseProtocol_unspecified = 6 - /* - * Enumeration is extensible - */ -} e_CauseProtocol; - -/* CauseProtocol */ -typedef long CauseProtocol_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol; -extern const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1; -asn_struct_free_f CauseProtocol_free; -asn_struct_print_f CauseProtocol_print; -asn_constr_check_f CauseProtocol_constraint; -ber_type_decoder_f CauseProtocol_decode_ber; -der_type_encoder_f CauseProtocol_encode_der; -xer_type_decoder_f CauseProtocol_decode_xer; -xer_type_encoder_f CauseProtocol_encode_xer; -per_type_decoder_f CauseProtocol_decode_uper; -per_type_encoder_f CauseProtocol_encode_uper; -per_type_decoder_f CauseProtocol_decode_aper; -per_type_encoder_f CauseProtocol_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseProtocol_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.c deleted file mode 100644 index 11d9e4e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "CauseRIC.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseRIC_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 10 } /* (0..10,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseRIC_value2enum_1[] = { - { 0, 23, "ran-function-id-Invalid" }, - { 1, 20, "action-not-supported" }, - { 2, 17, "excessive-actions" }, - { 3, 16, "duplicate-action" }, - { 4, 15, "duplicate-event" }, - { 5, 23, "function-resource-limit" }, - { 6, 18, "request-id-unknown" }, - { 7, 46, "inconsistent-action-subsequent-action-sequence" }, - { 8, 23, "control-message-invalid" }, - { 9, 23, "call-process-id-invalid" }, - { 10, 11, "unspecified" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseRIC_enum2value_1[] = { - 1, /* action-not-supported(1) */ - 9, /* call-process-id-invalid(9) */ - 8, /* control-message-invalid(8) */ - 3, /* duplicate-action(3) */ - 4, /* duplicate-event(4) */ - 2, /* excessive-actions(2) */ - 5, /* function-resource-limit(5) */ - 7, /* inconsistent-action-subsequent-action-sequence(7) */ - 0, /* ran-function-id-Invalid(0) */ - 6, /* request-id-unknown(6) */ - 10 /* unspecified(10) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1 = { - asn_MAP_CauseRIC_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseRIC_enum2value_1, /* N => "tag"; sorted by N */ - 11, /* Number of elements in the maps */ - 12, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseRIC_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseRIC = { - "CauseRIC", - "CauseRIC", - &asn_OP_NativeEnumerated, - asn_DEF_CauseRIC_tags_1, - sizeof(asn_DEF_CauseRIC_tags_1) - /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ - asn_DEF_CauseRIC_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseRIC_tags_1) - /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseRIC_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseRIC_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.h deleted file mode 100644 index 417532f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRIC.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _CauseRIC_H_ -#define _CauseRIC_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseRIC { - CauseRIC_ran_function_id_Invalid = 0, - CauseRIC_action_not_supported = 1, - CauseRIC_excessive_actions = 2, - CauseRIC_duplicate_action = 3, - CauseRIC_duplicate_event = 4, - CauseRIC_function_resource_limit = 5, - CauseRIC_request_id_unknown = 6, - CauseRIC_inconsistent_action_subsequent_action_sequence = 7, - CauseRIC_control_message_invalid = 8, - CauseRIC_call_process_id_invalid = 9, - CauseRIC_unspecified = 10 - /* - * Enumeration is extensible - */ -} e_CauseRIC; - -/* CauseRIC */ -typedef long CauseRIC_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseRIC_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseRIC; -extern const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1; -asn_struct_free_f CauseRIC_free; -asn_struct_print_f CauseRIC_print; -asn_constr_check_f CauseRIC_constraint; -ber_type_decoder_f CauseRIC_decode_ber; -der_type_encoder_f CauseRIC_encode_der; -xer_type_decoder_f CauseRIC_decode_xer; -xer_type_encoder_f CauseRIC_encode_xer; -per_type_decoder_f CauseRIC_decode_uper; -per_type_encoder_f CauseRIC_encode_uper; -per_type_decoder_f CauseRIC_decode_aper; -per_type_encoder_f CauseRIC_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseRIC_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.c deleted file mode 100644 index 6773fd4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "CauseRICservice.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseRICservice_value2enum_1[] = { - { 0, 21, "function-not-required" }, - { 1, 19, "excessive-functions" }, - { 2, 18, "ric-resource-limit" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseRICservice_enum2value_1[] = { - 1, /* excessive-functions(1) */ - 0, /* function-not-required(0) */ - 2 /* ric-resource-limit(2) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1 = { - asn_MAP_CauseRICservice_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseRICservice_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseRICservice_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseRICservice = { - "CauseRICservice", - "CauseRICservice", - &asn_OP_NativeEnumerated, - asn_DEF_CauseRICservice_tags_1, - sizeof(asn_DEF_CauseRICservice_tags_1) - /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ - asn_DEF_CauseRICservice_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseRICservice_tags_1) - /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseRICservice_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseRICservice_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.h deleted file mode 100644 index 4270eb3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseRICservice.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _CauseRICservice_H_ -#define _CauseRICservice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseRICservice { - CauseRICservice_function_not_required = 0, - CauseRICservice_excessive_functions = 1, - CauseRICservice_ric_resource_limit = 2 - /* - * Enumeration is extensible - */ -} e_CauseRICservice; - -/* CauseRICservice */ -typedef long CauseRICservice_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseRICservice; -extern const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1; -asn_struct_free_f CauseRICservice_free; -asn_struct_print_f CauseRICservice_print; -asn_constr_check_f CauseRICservice_constraint; -ber_type_decoder_f CauseRICservice_decode_ber; -der_type_encoder_f CauseRICservice_encode_der; -xer_type_decoder_f CauseRICservice_decode_xer; -xer_type_encoder_f CauseRICservice_encode_xer; -per_type_decoder_f CauseRICservice_decode_uper; -per_type_encoder_f CauseRICservice_encode_uper; -per_type_decoder_f CauseRICservice_decode_aper; -per_type_encoder_f CauseRICservice_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseRICservice_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.c deleted file mode 100644 index 08a317d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "CauseTransport.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = { - { 0, 11, "unspecified" }, - { 1, 30, "transport-resource-unavailable" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = { - 1, /* transport-resource-unavailable(1) */ - 0 /* unspecified(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = { - asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseTransport_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseTransport = { - "CauseTransport", - "CauseTransport", - &asn_OP_NativeEnumerated, - asn_DEF_CauseTransport_tags_1, - sizeof(asn_DEF_CauseTransport_tags_1) - /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ - asn_DEF_CauseTransport_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseTransport_tags_1) - /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseTransport_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseTransport_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.h deleted file mode 100644 index f3fe969..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CauseTransport.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _CauseTransport_H_ -#define _CauseTransport_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseTransport { - CauseTransport_unspecified = 0, - CauseTransport_transport_resource_unavailable = 1 - /* - * Enumeration is extensible - */ -} e_CauseTransport; - -/* CauseTransport */ -typedef long CauseTransport_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseTransport_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseTransport; -extern const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1; -asn_struct_free_f CauseTransport_free; -asn_struct_print_f CauseTransport_print; -asn_constr_check_f CauseTransport_constraint; -ber_type_decoder_f CauseTransport_decode_ber; -der_type_encoder_f CauseTransport_encode_der; -xer_type_decoder_f CauseTransport_decode_xer; -xer_type_encoder_f CauseTransport_encode_xer; -per_type_decoder_f CauseTransport_decode_uper; -per_type_encoder_f CauseTransport_encode_uper; -per_type_decoder_f CauseTransport_decode_aper; -per_type_encoder_f CauseTransport_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseTransport_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CellResourceReportListItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CellResourceReportListItem.c deleted file mode 100644 index 670d42a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CellResourceReportListItem.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CellResourceReportListItem.h" - -static int -memb_dl_TotalofAvailablePRBs_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 273)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ul_TotalofAvailablePRBs_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 273)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_servedPlmnPerCellList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 12)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_servedPlmnPerCellList_constr_5 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..12)) */}; -static asn_per_constraints_t asn_PER_type_servedPlmnPerCellList_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 12 } /* (SIZE(1..12)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_dl_TotalofAvailablePRBs_constr_3 CC_NOTUSED = { - { 2, 1 } /* (0..273) */, - -1}; -static asn_per_constraints_t asn_PER_memb_dl_TotalofAvailablePRBs_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 9, 9, 0, 273 } /* (0..273) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ul_TotalofAvailablePRBs_constr_4 CC_NOTUSED = { - { 2, 1 } /* (0..273) */, - -1}; -static asn_per_constraints_t asn_PER_memb_ul_TotalofAvailablePRBs_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 9, 9, 0, 273 } /* (0..273) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_servedPlmnPerCellList_constr_5 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..12)) */}; -static asn_per_constraints_t asn_PER_memb_servedPlmnPerCellList_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 12 } /* (SIZE(1..12)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_servedPlmnPerCellList_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ServedPlmnPerCellListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_servedPlmnPerCellList_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_servedPlmnPerCellList_specs_5 = { - sizeof(struct CellResourceReportListItem__servedPlmnPerCellList), - offsetof(struct CellResourceReportListItem__servedPlmnPerCellList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_servedPlmnPerCellList_5 = { - "servedPlmnPerCellList", - "servedPlmnPerCellList", - &asn_OP_SEQUENCE_OF, - asn_DEF_servedPlmnPerCellList_tags_5, - sizeof(asn_DEF_servedPlmnPerCellList_tags_5) - /sizeof(asn_DEF_servedPlmnPerCellList_tags_5[0]) - 1, /* 1 */ - asn_DEF_servedPlmnPerCellList_tags_5, /* Same as above */ - sizeof(asn_DEF_servedPlmnPerCellList_tags_5) - /sizeof(asn_DEF_servedPlmnPerCellList_tags_5[0]), /* 2 */ - { &asn_OER_type_servedPlmnPerCellList_constr_5, &asn_PER_type_servedPlmnPerCellList_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_servedPlmnPerCellList_5, - 1, /* Single element */ - &asn_SPC_servedPlmnPerCellList_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CellResourceReportListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CellResourceReportListItem, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_POINTER, 2, offsetof(struct CellResourceReportListItem, dl_TotalofAvailablePRBs), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_dl_TotalofAvailablePRBs_constr_3, &asn_PER_memb_dl_TotalofAvailablePRBs_constr_3, memb_dl_TotalofAvailablePRBs_constraint_1 }, - 0, 0, /* No default value */ - "dl-TotalofAvailablePRBs" - }, - { ATF_POINTER, 1, offsetof(struct CellResourceReportListItem, ul_TotalofAvailablePRBs), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ul_TotalofAvailablePRBs_constr_4, &asn_PER_memb_ul_TotalofAvailablePRBs_constr_4, memb_ul_TotalofAvailablePRBs_constraint_1 }, - 0, 0, /* No default value */ - "ul-TotalofAvailablePRBs" - }, - { ATF_NOFLAGS, 0, offsetof(struct CellResourceReportListItem, servedPlmnPerCellList), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_servedPlmnPerCellList_5, - 0, - { &asn_OER_memb_servedPlmnPerCellList_constr_5, &asn_PER_memb_servedPlmnPerCellList_constr_5, memb_servedPlmnPerCellList_constraint_1 }, - 0, 0, /* No default value */ - "servedPlmnPerCellList" - }, -}; -static const int asn_MAP_CellResourceReportListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_CellResourceReportListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CellResourceReportListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-TotalofAvailablePRBs */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ul-TotalofAvailablePRBs */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* servedPlmnPerCellList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CellResourceReportListItem_specs_1 = { - sizeof(struct CellResourceReportListItem), - offsetof(struct CellResourceReportListItem, _asn_ctx), - asn_MAP_CellResourceReportListItem_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_CellResourceReportListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CellResourceReportListItem = { - "CellResourceReportListItem", - "CellResourceReportListItem", - &asn_OP_SEQUENCE, - asn_DEF_CellResourceReportListItem_tags_1, - sizeof(asn_DEF_CellResourceReportListItem_tags_1) - /sizeof(asn_DEF_CellResourceReportListItem_tags_1[0]), /* 1 */ - asn_DEF_CellResourceReportListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CellResourceReportListItem_tags_1) - /sizeof(asn_DEF_CellResourceReportListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CellResourceReportListItem_1, - 4, /* Elements count */ - &asn_SPC_CellResourceReportListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CellResourceReportListItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CellResourceReportListItem.h deleted file mode 100644 index 91bbf71..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CellResourceReportListItem.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CellResourceReportListItem_H_ -#define _CellResourceReportListItem_H_ - - -#include - -/* Including external dependencies */ -#include "NRCGI.h" -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ServedPlmnPerCellListItem; - -/* CellResourceReportListItem */ -typedef struct CellResourceReportListItem { - NRCGI_t nRCGI; - long *dl_TotalofAvailablePRBs; /* OPTIONAL */ - long *ul_TotalofAvailablePRBs; /* OPTIONAL */ - struct CellResourceReportListItem__servedPlmnPerCellList { - A_SEQUENCE_OF(struct ServedPlmnPerCellListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } servedPlmnPerCellList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CellResourceReportListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CellResourceReportListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CellResourceReportListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CellResourceReportListItem_1[4]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "ServedPlmnPerCellListItem.h" - -#endif /* _CellResourceReportListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.c deleted file mode 100644 index 217d8e5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "Criticality.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_Criticality_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = { - { 0, 6, "reject" }, - { 1, 6, "ignore" }, - { 2, 6, "notify" } -}; -static const unsigned int asn_MAP_Criticality_enum2value_1[] = { - 1, /* ignore(1) */ - 2, /* notify(2) */ - 0 /* reject(0) */ -}; -const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = { - asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_Criticality = { - "Criticality", - "Criticality", - &asn_OP_NativeEnumerated, - asn_DEF_Criticality_tags_1, - sizeof(asn_DEF_Criticality_tags_1) - /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ - asn_DEF_Criticality_tags_1, /* Same as above */ - sizeof(asn_DEF_Criticality_tags_1) - /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_Criticality_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_Criticality_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.h deleted file mode 100644 index ab1ecf2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Criticality.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _Criticality_H_ -#define _Criticality_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum Criticality { - Criticality_reject = 0, - Criticality_ignore = 1, - Criticality_notify = 2 -} e_Criticality; - -/* Criticality */ -typedef long Criticality_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_Criticality_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_Criticality; -extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1; -asn_struct_free_f Criticality_free; -asn_struct_print_f Criticality_print; -asn_constr_check_f Criticality_constraint; -ber_type_decoder_f Criticality_decode_ber; -der_type_encoder_f Criticality_encode_der; -xer_type_decoder_f Criticality_decode_xer; -xer_type_encoder_f Criticality_encode_xer; -per_type_decoder_f Criticality_decode_uper; -per_type_encoder_f Criticality_encode_uper; -per_type_decoder_f Criticality_decode_aper; -per_type_encoder_f Criticality_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _Criticality_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-Item.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-Item.c deleted file mode 100644 index 0306093..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "CriticalityDiagnostics-IE-Item.h" - -asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iECriticality), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "iECriticality" - }, - { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iE_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "iE-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, typeOfError), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TypeOfError, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "typeOfError" - }, -}; -static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* typeOfError */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 = { - sizeof(struct CriticalityDiagnostics_IE_Item), - offsetof(struct CriticalityDiagnostics_IE_Item, _asn_ctx), - asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item = { - "CriticalityDiagnostics-IE-Item", - "CriticalityDiagnostics-IE-Item", - &asn_OP_SEQUENCE, - asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, - sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ - asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CriticalityDiagnostics_IE_Item_1, - 3, /* Elements count */ - &asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-Item.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-Item.h deleted file mode 100644 index 1222f03..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _CriticalityDiagnostics_IE_Item_H_ -#define _CriticalityDiagnostics_IE_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "Criticality.h" -#include "ProtocolIE-ID.h" -#include "TypeOfError.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* CriticalityDiagnostics-IE-Item */ -typedef struct CriticalityDiagnostics_IE_Item { - Criticality_t iECriticality; - ProtocolIE_ID_t iE_ID; - TypeOfError_t typeOfError; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CriticalityDiagnostics_IE_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _CriticalityDiagnostics_IE_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-List.c deleted file mode 100644 index 502517f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "CriticalityDiagnostics-IE-List.h" - -#include "CriticalityDiagnostics-IE-Item.h" -asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics_IE_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = { - sizeof(struct CriticalityDiagnostics_IE_List), - offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = { - "CriticalityDiagnostics-IE-List", - "CriticalityDiagnostics-IE-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_CriticalityDiagnostics_IE_List_tags_1, - sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ - asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ - sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_CriticalityDiagnostics_IE_List_1, - 1, /* Single element */ - &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-List.h deleted file mode 100644 index 3f0d07b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics-IE-List.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _CriticalityDiagnostics_IE_List_H_ -#define _CriticalityDiagnostics_IE_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CriticalityDiagnostics_IE_Item; - -/* CriticalityDiagnostics-IE-List */ -typedef struct CriticalityDiagnostics_IE_List { - A_SEQUENCE_OF(struct CriticalityDiagnostics_IE_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CriticalityDiagnostics_IE_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List; -extern asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1; -extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[1]; -extern asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _CriticalityDiagnostics_IE_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics.c deleted file mode 100644 index 825808b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "CriticalityDiagnostics.h" - -#include "RICrequestID.h" -#include "CriticalityDiagnostics-IE-List.h" -static asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = { - { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TriggeringMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "triggeringMessage" - }, - { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "procedureCriticality" - }, - { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, ricRequestorID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricRequestorID" - }, - { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CriticalityDiagnostics_IE_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "iEsCriticalityDiagnostics" - }, -}; -static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; -static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ricRequestorID */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iEsCriticalityDiagnostics */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = { - sizeof(struct CriticalityDiagnostics), - offsetof(struct CriticalityDiagnostics, _asn_ctx), - asn_MAP_CriticalityDiagnostics_tag2el_1, - 5, /* Count of tags in the map */ - asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */ - 5, 0, /* Root/Additions */ - 5, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = { - "CriticalityDiagnostics", - "CriticalityDiagnostics", - &asn_OP_SEQUENCE, - asn_DEF_CriticalityDiagnostics_tags_1, - sizeof(asn_DEF_CriticalityDiagnostics_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ - asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */ - sizeof(asn_DEF_CriticalityDiagnostics_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CriticalityDiagnostics_1, - 5, /* Elements count */ - &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics.h deleted file mode 100644 index 9cef6bf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/CriticalityDiagnostics.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _CriticalityDiagnostics_H_ -#define _CriticalityDiagnostics_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "TriggeringMessage.h" -#include "Criticality.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RICrequestID; -struct CriticalityDiagnostics_IE_List; - -/* CriticalityDiagnostics */ -typedef struct CriticalityDiagnostics { - ProcedureCode_t *procedureCode; /* OPTIONAL */ - TriggeringMessage_t *triggeringMessage; /* OPTIONAL */ - Criticality_t *procedureCriticality; /* OPTIONAL */ - struct RICrequestID *ricRequestorID; /* OPTIONAL */ - struct CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CriticalityDiagnostics_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics; - -#ifdef __cplusplus -} -#endif - -#endif /* _CriticalityDiagnostics_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-CellResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-CellResourceReportItem.c deleted file mode 100644 index eee9621..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-CellResourceReportItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "DU-Usage-Report-CellResourceReportItem.h" - -static int -memb_ueResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 32)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_ueResourceReportList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_DU_Usage_Report_UeResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ueResourceReportList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ueResourceReportList_specs_3 = { - sizeof(struct DU_Usage_Report_CellResourceReportItem__ueResourceReportList), - offsetof(struct DU_Usage_Report_CellResourceReportItem__ueResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ueResourceReportList_3 = { - "ueResourceReportList", - "ueResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_ueResourceReportList_tags_3, - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]) - 1, /* 1 */ - asn_DEF_ueResourceReportList_tags_3, /* Same as above */ - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]), /* 2 */ - { &asn_OER_type_ueResourceReportList_constr_3, &asn_PER_type_ueResourceReportList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_ueResourceReportList_3, - 1, /* Single element */ - &asn_SPC_ueResourceReportList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_DU_Usage_Report_CellResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_CellResourceReportItem, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_CellResourceReportItem, ueResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_ueResourceReportList_3, - 0, - { &asn_OER_memb_ueResourceReportList_constr_3, &asn_PER_memb_ueResourceReportList_constr_3, memb_ueResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "ueResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_DU_Usage_Report_CellResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_CellResourceReportItem_specs_1 = { - sizeof(struct DU_Usage_Report_CellResourceReportItem), - offsetof(struct DU_Usage_Report_CellResourceReportItem, _asn_ctx), - asn_MAP_DU_Usage_Report_CellResourceReportItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_CellResourceReportItem = { - "DU-Usage-Report-CellResourceReportItem", - "DU-Usage-Report-CellResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1, - sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_DU_Usage_Report_CellResourceReportItem_1, - 2, /* Elements count */ - &asn_SPC_DU_Usage_Report_CellResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-CellResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-CellResourceReportItem.h deleted file mode 100644 index 4a72572..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-CellResourceReportItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _DU_Usage_Report_CellResourceReportItem_H_ -#define _DU_Usage_Report_CellResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "NRCGI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct DU_Usage_Report_UeResourceReportItem; - -/* DU-Usage-Report-CellResourceReportItem */ -typedef struct DU_Usage_Report_CellResourceReportItem { - NRCGI_t nRCGI; - struct DU_Usage_Report_CellResourceReportItem__ueResourceReportList { - A_SEQUENCE_OF(struct DU_Usage_Report_UeResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ueResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} DU_Usage_Report_CellResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_CellResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_CellResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_DU_Usage_Report_CellResourceReportItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "DU-Usage-Report-UeResourceReportItem.h" - -#endif /* _DU_Usage_Report_CellResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.c deleted file mode 100644 index 9ba13af..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "DU-Usage-Report-Per-UE.h" - -static int -memb_cellResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 512)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_DU_Usage_Report_CellResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = { - sizeof(struct DU_Usage_Report_Per_UE__cellResourceReportList), - offsetof(struct DU_Usage_Report_Per_UE__cellResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = { - "cellResourceReportList", - "cellResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_cellResourceReportList_tags_2, - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_cellResourceReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_cellResourceReportList_2, - 1, /* Single element */ - &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_DU_Usage_Report_Per_UE_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_Per_UE, cellResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_cellResourceReportList_2, - 0, - { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "cellResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_DU_Usage_Report_Per_UE_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_DU_Usage_Report_Per_UE_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_Per_UE_specs_1 = { - sizeof(struct DU_Usage_Report_Per_UE), - offsetof(struct DU_Usage_Report_Per_UE, _asn_ctx), - asn_MAP_DU_Usage_Report_Per_UE_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_Per_UE = { - "DU-Usage-Report-Per-UE", - "DU-Usage-Report-Per-UE", - &asn_OP_SEQUENCE, - asn_DEF_DU_Usage_Report_Per_UE_tags_1, - sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - asn_DEF_DU_Usage_Report_Per_UE_tags_1, /* Same as above */ - sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_DU_Usage_Report_Per_UE_1, - 1, /* Elements count */ - &asn_SPC_DU_Usage_Report_Per_UE_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.h deleted file mode 100644 index 2fc44d1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-Per-UE.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _DU_Usage_Report_Per_UE_H_ -#define _DU_Usage_Report_Per_UE_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct DU_Usage_Report_CellResourceReportItem; - -/* DU-Usage-Report-Per-UE */ -typedef struct DU_Usage_Report_Per_UE { - struct DU_Usage_Report_Per_UE__cellResourceReportList { - A_SEQUENCE_OF(struct DU_Usage_Report_CellResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cellResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} DU_Usage_Report_Per_UE_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_Per_UE; -extern asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_Per_UE_specs_1; -extern asn_TYPE_member_t asn_MBR_DU_Usage_Report_Per_UE_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "DU-Usage-Report-CellResourceReportItem.h" - -#endif /* _DU_Usage_Report_Per_UE_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-UeResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-UeResourceReportItem.c deleted file mode 100644 index 0bcafbe..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-UeResourceReportItem.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "DU-Usage-Report-UeResourceReportItem.h" - -static int -memb_dl_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 1000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ul_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 1000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 30, -1, 0, 1000000000 } /* (0..1000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 30, -1, 0, 1000000000 } /* (0..1000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_DU_Usage_Report_UeResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_UeResourceReportItem, c_RNTI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_C_RNTI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "c-RNTI" - }, - { ATF_POINTER, 2, offsetof(struct DU_Usage_Report_UeResourceReportItem, dl_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_dl_PRBUsage_constr_3, &asn_PER_memb_dl_PRBUsage_constr_3, memb_dl_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "dl-PRBUsage" - }, - { ATF_POINTER, 1, offsetof(struct DU_Usage_Report_UeResourceReportItem, ul_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ul_PRBUsage_constr_4, &asn_PER_memb_ul_PRBUsage_constr_4, memb_ul_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "ul-PRBUsage" - }, -}; -static const int asn_MAP_DU_Usage_Report_UeResourceReportItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_DU_Usage_Report_UeResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-PRBUsage */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ul-PRBUsage */ -}; -asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_UeResourceReportItem_specs_1 = { - sizeof(struct DU_Usage_Report_UeResourceReportItem), - offsetof(struct DU_Usage_Report_UeResourceReportItem, _asn_ctx), - asn_MAP_DU_Usage_Report_UeResourceReportItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_DU_Usage_Report_UeResourceReportItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_UeResourceReportItem = { - "DU-Usage-Report-UeResourceReportItem", - "DU-Usage-Report-UeResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1, - sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_DU_Usage_Report_UeResourceReportItem_1, - 3, /* Elements count */ - &asn_SPC_DU_Usage_Report_UeResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-UeResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-UeResourceReportItem.h deleted file mode 100644 index e860272..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/DU-Usage-Report-UeResourceReportItem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _DU_Usage_Report_UeResourceReportItem_H_ -#define _DU_Usage_Report_UeResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "C-RNTI.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* DU-Usage-Report-UeResourceReportItem */ -typedef struct DU_Usage_Report_UeResourceReportItem { - C_RNTI_t c_RNTI; - long *dl_PRBUsage; /* OPTIONAL */ - long *ul_PRBUsage; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} DU_Usage_Report_UeResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_UeResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_UeResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_DU_Usage_Report_UeResourceReportItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _DU_Usage_Report_UeResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.c deleted file mode 100644 index 94650be..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "E2AP-PDU.h" - -#include "InitiatingMessage.h" -#include "SuccessfulOutcome.h" -#include "UnsuccessfulOutcome.h" -static asn_per_constraints_t asn_PER_type_E2AP_PDU_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2AP_PDU_1[] = { - { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.initiatingMessage), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_InitiatingMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "initiatingMessage" - }, - { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.successfulOutcome), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SuccessfulOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "successfulOutcome" - }, - { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.unsuccessfulOutcome), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_UnsuccessfulOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "unsuccessfulOutcome" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2AP_PDU_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2AP_PDU_specs_1 = { - sizeof(struct E2AP_PDU), - offsetof(struct E2AP_PDU, _asn_ctx), - offsetof(struct E2AP_PDU, present), - sizeof(((struct E2AP_PDU *)0)->present), - asn_MAP_E2AP_PDU_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2AP_PDU = { - "E2AP-PDU", - "E2AP-PDU", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2AP_PDU_constr_1, CHOICE_constraint }, - asn_MBR_E2AP_PDU_1, - 3, /* Elements count */ - &asn_SPC_E2AP_PDU_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.h deleted file mode 100644 index 6f3f1c8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2AP-PDU.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _E2AP_PDU_H_ -#define _E2AP_PDU_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2AP_PDU_PR { - E2AP_PDU_PR_NOTHING, /* No components present */ - E2AP_PDU_PR_initiatingMessage, - E2AP_PDU_PR_successfulOutcome, - E2AP_PDU_PR_unsuccessfulOutcome - /* Extensions may appear below */ - -} E2AP_PDU_PR; - -/* Forward declarations */ -struct InitiatingMessage; -struct SuccessfulOutcome; -struct UnsuccessfulOutcome; - -/* E2AP-PDU */ -typedef struct E2AP_PDU { - E2AP_PDU_PR present; - union E2AP_PDU_u { - struct InitiatingMessage *initiatingMessage; - struct SuccessfulOutcome *successfulOutcome; - struct UnsuccessfulOutcome *unsuccessfulOutcome; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2AP_PDU_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2AP_PDU; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2AP_PDU_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.c deleted file mode 100644 index abdf25d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-ActionDefinition.h" - -static asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, ric_Style_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-Style-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-Style-Type */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_specs_1 = { - sizeof(struct E2SM_KPM_ActionDefinition), - offsetof(struct E2SM_KPM_ActionDefinition, _asn_ctx), - asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition = { - "E2SM-KPM-ActionDefinition", - "E2SM-KPM-ActionDefinition", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_ActionDefinition_tags_1, - sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1) - /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_ActionDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1) - /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_ActionDefinition_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_ActionDefinition_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.h deleted file mode 100644 index 70b81dd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-ActionDefinition.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_ActionDefinition_H_ -#define _E2SM_KPM_ActionDefinition_H_ - - -#include - -/* Including external dependencies */ -#include "RIC-Style-Type.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2SM-KPM-ActionDefinition */ -typedef struct E2SM_KPM_ActionDefinition { - RIC_Style_Type_t ric_Style_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_ActionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2SM_KPM_ActionDefinition_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c deleted file mode 100644 index e0b48f2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-EventTriggerDefinition-Format1.h" - -static int -memb_policyTest_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 15)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_policyTest_List_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..15)) */}; -static asn_per_constraints_t asn_PER_type_policyTest_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_policyTest_List_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..15)) */}; -static asn_per_constraints_t asn_PER_memb_policyTest_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_policyTest_List_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_Trigger_ConditionIE_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_policyTest_List_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_policyTest_List_specs_2 = { - sizeof(struct E2SM_KPM_EventTriggerDefinition_Format1__policyTest_List), - offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1__policyTest_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_policyTest_List_2 = { - "policyTest-List", - "policyTest-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_policyTest_List_tags_2, - sizeof(asn_DEF_policyTest_List_tags_2) - /sizeof(asn_DEF_policyTest_List_tags_2[0]) - 1, /* 1 */ - asn_DEF_policyTest_List_tags_2, /* Same as above */ - sizeof(asn_DEF_policyTest_List_tags_2) - /sizeof(asn_DEF_policyTest_List_tags_2[0]), /* 2 */ - { &asn_OER_type_policyTest_List_constr_2, &asn_PER_type_policyTest_List_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_policyTest_List_2, - 1, /* Single element */ - &asn_SPC_policyTest_List_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[] = { - { ATF_POINTER, 1, offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, policyTest_List), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_policyTest_List_2, - 0, - { &asn_OER_memb_policyTest_List_constr_2, &asn_PER_memb_policyTest_List_constr_2, memb_policyTest_List_constraint_1 }, - 0, 0, /* No default value */ - "policyTest-List" - }, -}; -static const int asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* policyTest-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 = { - sizeof(struct E2SM_KPM_EventTriggerDefinition_Format1), - offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, _asn_ctx), - asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1, - 1, /* Count of tags in the map */ - asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1 = { - "E2SM-KPM-EventTriggerDefinition-Format1", - "E2SM-KPM-EventTriggerDefinition-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1, - sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h deleted file mode 100644 index 44cbd92..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_EventTriggerDefinition_Format1_H_ -#define _E2SM_KPM_EventTriggerDefinition_Format1_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct Trigger_ConditionIE_Item; - -/* E2SM-KPM-EventTriggerDefinition-Format1 */ -typedef struct E2SM_KPM_EventTriggerDefinition_Format1 { - struct E2SM_KPM_EventTriggerDefinition_Format1__policyTest_List { - A_SEQUENCE_OF(struct Trigger_ConditionIE_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *policyTest_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_EventTriggerDefinition_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "Trigger-ConditionIE-Item.h" - -#endif /* _E2SM_KPM_EventTriggerDefinition_Format1_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition.c deleted file mode 100644 index 482e42c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-EventTriggerDefinition.h" - -static asn_oer_constraints_t asn_OER_type_E2SM_KPM_EventTriggerDefinition_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_E2SM_KPM_EventTriggerDefinition_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition, choice.eventDefinition_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eventDefinition-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 = { - sizeof(struct E2SM_KPM_EventTriggerDefinition), - offsetof(struct E2SM_KPM_EventTriggerDefinition, _asn_ctx), - offsetof(struct E2SM_KPM_EventTriggerDefinition, present), - sizeof(((struct E2SM_KPM_EventTriggerDefinition *)0)->present), - asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition = { - "E2SM-KPM-EventTriggerDefinition", - "E2SM-KPM-EventTriggerDefinition", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_E2SM_KPM_EventTriggerDefinition_constr_1, &asn_PER_type_E2SM_KPM_EventTriggerDefinition_constr_1, CHOICE_constraint }, - asn_MBR_E2SM_KPM_EventTriggerDefinition_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition.h deleted file mode 100644 index e96e600..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-EventTriggerDefinition.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_EventTriggerDefinition_H_ -#define _E2SM_KPM_EventTriggerDefinition_H_ - - -#include - -/* Including external dependencies */ -#include "E2SM-KPM-EventTriggerDefinition-Format1.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2SM_KPM_EventTriggerDefinition_PR { - E2SM_KPM_EventTriggerDefinition_PR_NOTHING, /* No components present */ - E2SM_KPM_EventTriggerDefinition_PR_eventDefinition_Format1 - /* Extensions may appear below */ - -} E2SM_KPM_EventTriggerDefinition_PR; - -/* E2SM-KPM-EventTriggerDefinition */ -typedef struct E2SM_KPM_EventTriggerDefinition { - E2SM_KPM_EventTriggerDefinition_PR present; - union E2SM_KPM_EventTriggerDefinition_u { - E2SM_KPM_EventTriggerDefinition_Format1_t eventDefinition_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_EventTriggerDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2SM_KPM_EventTriggerDefinition_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader-Format1.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader-Format1.c deleted file mode 100644 index 2cccf8b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader-Format1.c +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-IndicationHeader-Format1.h" - -static int -memb_fiveQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_qci_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_fiveQI_constr_6 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_fiveQI_constr_6 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_qci_constr_7 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_qci_constr_7 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[] = { - { ATF_POINTER, 10, offsetof(struct E2SM_KPM_IndicationHeader_Format1, id_GlobalKPMnode_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "id-GlobalKPMnode-ID" - }, - { ATF_POINTER, 9, offsetof(struct E2SM_KPM_IndicationHeader_Format1, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_POINTER, 8, offsetof(struct E2SM_KPM_IndicationHeader_Format1, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_POINTER, 7, offsetof(struct E2SM_KPM_IndicationHeader_Format1, sliceID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SNSSAI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "sliceID" - }, - { ATF_POINTER, 6, offsetof(struct E2SM_KPM_IndicationHeader_Format1, fiveQI), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_fiveQI_constr_6, &asn_PER_memb_fiveQI_constr_6, memb_fiveQI_constraint_1 }, - 0, 0, /* No default value */ - "fiveQI" - }, - { ATF_POINTER, 5, offsetof(struct E2SM_KPM_IndicationHeader_Format1, qci), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_qci_constr_7, &asn_PER_memb_qci_constr_7, memb_qci_constraint_1 }, - 0, 0, /* No default value */ - "qci" - }, - { ATF_POINTER, 4, offsetof(struct E2SM_KPM_IndicationHeader_Format1, message_Type), - (ASN_TAG_CLASS_CONTEXT | (6 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_UE_Report_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "message-Type" - }, - { ATF_POINTER, 3, offsetof(struct E2SM_KPM_IndicationHeader_Format1, gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (7 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-ID" - }, - { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationHeader_Format1, gNB_Name), - (ASN_TAG_CLASS_CONTEXT | (8 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_GNB_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-Name" - }, - { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationHeader_Format1, global_GNB_ID), - (ASN_TAG_CLASS_CONTEXT | (9 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalgNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-GNB-ID" - }, -}; -static const int asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id-GlobalKPMnode-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sliceID */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* fiveQI */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* qci */ - { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* message-Type */ - { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* gNB-DU-ID */ - { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* gNB-Name */ - { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* global-GNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 = { - sizeof(struct E2SM_KPM_IndicationHeader_Format1), - offsetof(struct E2SM_KPM_IndicationHeader_Format1, _asn_ctx), - asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1, - 10, /* Count of tags in the map */ - asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1, /* Optional members */ - 10, 0, /* Root/Additions */ - 10, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1 = { - "E2SM-KPM-IndicationHeader-Format1", - "E2SM-KPM-IndicationHeader-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1, - sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_IndicationHeader_Format1_1, - 10, /* Elements count */ - &asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader-Format1.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader-Format1.h deleted file mode 100644 index c46b715..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader-Format1.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_IndicationHeader_Format1_H_ -#define _E2SM_KPM_IndicationHeader_Format1_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include -#include "UE-Report-Type.h" -#include "GNB-DU-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct GlobalKPMnode_ID; -struct NRCGI; -struct SNSSAI; -struct GNB_Name; -struct GlobalgNB_ID; - -/* E2SM-KPM-IndicationHeader-Format1 */ -typedef struct E2SM_KPM_IndicationHeader_Format1 { - struct GlobalKPMnode_ID *id_GlobalKPMnode_ID; /* OPTIONAL */ - struct NRCGI *nRCGI; /* OPTIONAL */ - PLMN_Identity_t *pLMN_Identity; /* OPTIONAL */ - struct SNSSAI *sliceID; /* OPTIONAL */ - long *fiveQI; /* OPTIONAL */ - long *qci; /* OPTIONAL */ - UE_Report_Type_t *message_Type; /* OPTIONAL */ - GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ - struct GNB_Name *gNB_Name; /* OPTIONAL */ - struct GlobalgNB_ID *global_GNB_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_IndicationHeader_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[10]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "GlobalKPMnode-ID.h" -#include "NRCGI.h" -#include "SNSSAI.h" -#include "GNB-Name.h" -#include "GlobalgNB-ID.h" - -#endif /* _E2SM_KPM_IndicationHeader_Format1_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.c deleted file mode 100644 index c4fe730..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-IndicationHeader.h" - -static asn_oer_constraints_t asn_OER_type_E2SM_KPM_IndicationHeader_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_E2SM_KPM_IndicationHeader_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader, choice.indicationHeader_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2SM_KPM_IndicationHeader_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationHeader-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_specs_1 = { - sizeof(struct E2SM_KPM_IndicationHeader), - offsetof(struct E2SM_KPM_IndicationHeader, _asn_ctx), - offsetof(struct E2SM_KPM_IndicationHeader, present), - sizeof(((struct E2SM_KPM_IndicationHeader *)0)->present), - asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader = { - "E2SM-KPM-IndicationHeader", - "E2SM-KPM-IndicationHeader", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_E2SM_KPM_IndicationHeader_constr_1, &asn_PER_type_E2SM_KPM_IndicationHeader_constr_1, CHOICE_constraint }, - asn_MBR_E2SM_KPM_IndicationHeader_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_IndicationHeader_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.h deleted file mode 100644 index 67dc86d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationHeader.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_IndicationHeader_H_ -#define _E2SM_KPM_IndicationHeader_H_ - - -#include - -/* Including external dependencies */ -#include "E2SM-KPM-IndicationHeader-Format1.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2SM_KPM_IndicationHeader_PR { - E2SM_KPM_IndicationHeader_PR_NOTHING, /* No components present */ - E2SM_KPM_IndicationHeader_PR_indicationHeader_Format1 - /* Extensions may appear below */ - -} E2SM_KPM_IndicationHeader_PR; - -/* E2SM-KPM-IndicationHeader */ -typedef struct E2SM_KPM_IndicationHeader { - E2SM_KPM_IndicationHeader_PR present; - union E2SM_KPM_IndicationHeader_u { - E2SM_KPM_IndicationHeader_Format1_t indicationHeader_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_IndicationHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2SM_KPM_IndicationHeader_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage-Format1.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage-Format1.c deleted file mode 100644 index 7bdebb0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage-Format1.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-IndicationMessage-Format1.h" - -static int -memb_pm_Containers_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 8)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_pm_Containers_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..8)) */}; -static asn_per_constraints_t asn_PER_type_pm_Containers_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pm_Containers_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..8)) */}; -static asn_per_constraints_t asn_PER_memb_pm_Containers_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_pm_Containers_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PM_Containers_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_pm_Containers_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_pm_Containers_specs_2 = { - sizeof(struct E2SM_KPM_IndicationMessage_Format1__pm_Containers), - offsetof(struct E2SM_KPM_IndicationMessage_Format1__pm_Containers, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_pm_Containers_2 = { - "pm-Containers", - "pm-Containers", - &asn_OP_SEQUENCE_OF, - asn_DEF_pm_Containers_tags_2, - sizeof(asn_DEF_pm_Containers_tags_2) - /sizeof(asn_DEF_pm_Containers_tags_2[0]) - 1, /* 1 */ - asn_DEF_pm_Containers_tags_2, /* Same as above */ - sizeof(asn_DEF_pm_Containers_tags_2) - /sizeof(asn_DEF_pm_Containers_tags_2[0]), /* 2 */ - { &asn_OER_type_pm_Containers_constr_2, &asn_PER_type_pm_Containers_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_pm_Containers_2, - 1, /* Single element */ - &asn_SPC_pm_Containers_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format1, pm_Containers), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_pm_Containers_2, - 0, - { &asn_OER_memb_pm_Containers_constr_2, &asn_PER_memb_pm_Containers_constr_2, memb_pm_Containers_constraint_1 }, - 0, 0, /* No default value */ - "pm-Containers" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* pm-Containers */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 = { - sizeof(struct E2SM_KPM_IndicationMessage_Format1), - offsetof(struct E2SM_KPM_IndicationMessage_Format1, _asn_ctx), - asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1 = { - "E2SM-KPM-IndicationMessage-Format1", - "E2SM-KPM-IndicationMessage-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1, - sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_IndicationMessage_Format1_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage-Format1.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage-Format1.h deleted file mode 100644 index a05b652..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage-Format1.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_IndicationMessage_Format1_H_ -#define _E2SM_KPM_IndicationMessage_Format1_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PM_Containers_List; - -/* E2SM-KPM-IndicationMessage-Format1 */ -typedef struct E2SM_KPM_IndicationMessage_Format1 { - struct E2SM_KPM_IndicationMessage_Format1__pm_Containers { - A_SEQUENCE_OF(struct PM_Containers_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } pm_Containers; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_IndicationMessage_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PM-Containers-List.h" - -#endif /* _E2SM_KPM_IndicationMessage_Format1_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.c deleted file mode 100644 index 2eb4018..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-IndicationMessage.h" - -static asn_oer_constraints_t asn_OER_type_indicationMessage_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_indicationMessage_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_indicationMessage_3[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage, choice.indicationMessage_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2SM_KPM_IndicationMessage_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationMessage-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_indicationMessage_tag2el_3[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_indicationMessage_specs_3 = { - sizeof(struct E2SM_KPM_IndicationMessage__indicationMessage), - offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage, _asn_ctx), - offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage, present), - sizeof(((struct E2SM_KPM_IndicationMessage__indicationMessage *)0)->present), - asn_MAP_indicationMessage_tag2el_3, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_indicationMessage_3 = { - "indicationMessage", - "indicationMessage", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_indicationMessage_constr_3, &asn_PER_type_indicationMessage_constr_3, CHOICE_constraint }, - asn_MBR_indicationMessage_3, - 1, /* Elements count */ - &asn_SPC_indicationMessage_specs_3 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, ric_Style_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-Style-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, indicationMessage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_indicationMessage_3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationMessage" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-Style-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* indicationMessage */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_specs_1 = { - sizeof(struct E2SM_KPM_IndicationMessage), - offsetof(struct E2SM_KPM_IndicationMessage, _asn_ctx), - asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage = { - "E2SM-KPM-IndicationMessage", - "E2SM-KPM-IndicationMessage", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_IndicationMessage_tags_1, - sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_IndicationMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_IndicationMessage_1, - 2, /* Elements count */ - &asn_SPC_E2SM_KPM_IndicationMessage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.h deleted file mode 100644 index 77d4e3b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-IndicationMessage.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_IndicationMessage_H_ -#define _E2SM_KPM_IndicationMessage_H_ - - -#include - -/* Including external dependencies */ -#include "RIC-Style-Type.h" -#include "E2SM-KPM-IndicationMessage-Format1.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2SM_KPM_IndicationMessage__indicationMessage_PR { - E2SM_KPM_IndicationMessage__indicationMessage_PR_NOTHING, /* No components present */ - E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1 - /* Extensions may appear below */ - -} E2SM_KPM_IndicationMessage__indicationMessage_PR; - -/* E2SM-KPM-IndicationMessage */ -typedef struct E2SM_KPM_IndicationMessage { - RIC_Style_Type_t ric_Style_Type; - struct E2SM_KPM_IndicationMessage__indicationMessage { - E2SM_KPM_IndicationMessage__indicationMessage_PR present; - union E2SM_KPM_IndicationMessage__indicationMessage_u { - E2SM_KPM_IndicationMessage_Format1_t indicationMessage_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } indicationMessage; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_IndicationMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2SM_KPM_IndicationMessage_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-RANfunction-Description.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-RANfunction-Description.c deleted file mode 100644 index 226d0fb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-RANfunction-Description.c +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-RANfunction-Description.h" - -static int -memb_ric_EventTriggerStyle_List_constraint_3(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ric_ReportStyle_List_constraint_3(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_ric_EventTriggerStyle_List_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..63)) */}; -static asn_per_constraints_t asn_PER_type_ric_EventTriggerStyle_List_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ric_ReportStyle_List_constr_6 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..63)) */}; -static asn_per_constraints_t asn_PER_type_ric_ReportStyle_List_constr_6 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ric_EventTriggerStyle_List_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..63)) */}; -static asn_per_constraints_t asn_PER_memb_ric_EventTriggerStyle_List_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ric_ReportStyle_List_constr_6 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..63)) */}; -static asn_per_constraints_t asn_PER_memb_ric_ReportStyle_List_constr_6 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_ric_EventTriggerStyle_List_4[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RIC_EventTriggerStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ric_EventTriggerStyle_List_tags_4[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ric_EventTriggerStyle_List_specs_4 = { - sizeof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List), - offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ric_EventTriggerStyle_List_4 = { - "ric-EventTriggerStyle-List", - "ric-EventTriggerStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_ric_EventTriggerStyle_List_tags_4, - sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_4) - /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_4[0]) - 1, /* 1 */ - asn_DEF_ric_EventTriggerStyle_List_tags_4, /* Same as above */ - sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_4) - /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_4[0]), /* 2 */ - { &asn_OER_type_ric_EventTriggerStyle_List_constr_4, &asn_PER_type_ric_EventTriggerStyle_List_constr_4, SEQUENCE_OF_constraint }, - asn_MBR_ric_EventTriggerStyle_List_4, - 1, /* Single element */ - &asn_SPC_ric_EventTriggerStyle_List_specs_4 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_ric_ReportStyle_List_6[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RIC_ReportStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ric_ReportStyle_List_tags_6[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ric_ReportStyle_List_specs_6 = { - sizeof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List), - offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ric_ReportStyle_List_6 = { - "ric-ReportStyle-List", - "ric-ReportStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_ric_ReportStyle_List_tags_6, - sizeof(asn_DEF_ric_ReportStyle_List_tags_6) - /sizeof(asn_DEF_ric_ReportStyle_List_tags_6[0]) - 1, /* 1 */ - asn_DEF_ric_ReportStyle_List_tags_6, /* Same as above */ - sizeof(asn_DEF_ric_ReportStyle_List_tags_6) - /sizeof(asn_DEF_ric_ReportStyle_List_tags_6[0]), /* 2 */ - { &asn_OER_type_ric_ReportStyle_List_constr_6, &asn_PER_type_ric_ReportStyle_List_constr_6, SEQUENCE_OF_constraint }, - asn_MBR_ric_ReportStyle_List_6, - 1, /* Single element */ - &asn_SPC_ric_ReportStyle_List_specs_6 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_e2SM_KPM_RANfunction_Item_3[] = { - { ATF_POINTER, 2, offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item, ric_EventTriggerStyle_List), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_ric_EventTriggerStyle_List_4, - 0, - { &asn_OER_memb_ric_EventTriggerStyle_List_constr_4, &asn_PER_memb_ric_EventTriggerStyle_List_constr_4, memb_ric_EventTriggerStyle_List_constraint_3 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-List" - }, - { ATF_POINTER, 1, offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item, ric_ReportStyle_List), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_ric_ReportStyle_List_6, - 0, - { &asn_OER_memb_ric_ReportStyle_List_constr_6, &asn_PER_memb_ric_ReportStyle_List_constr_6, memb_ric_ReportStyle_List_constraint_3 }, - 0, 0, /* No default value */ - "ric-ReportStyle-List" - }, -}; -static const int asn_MAP_e2SM_KPM_RANfunction_Item_oms_3[] = { 0, 1 }; -static const ber_tlv_tag_t asn_DEF_e2SM_KPM_RANfunction_Item_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_e2SM_KPM_RANfunction_Item_tag2el_3[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-ReportStyle-List */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_e2SM_KPM_RANfunction_Item_specs_3 = { - sizeof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item), - offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item, _asn_ctx), - asn_MAP_e2SM_KPM_RANfunction_Item_tag2el_3, - 2, /* Count of tags in the map */ - asn_MAP_e2SM_KPM_RANfunction_Item_oms_3, /* Optional members */ - 2, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_e2SM_KPM_RANfunction_Item_3 = { - "e2SM-KPM-RANfunction-Item", - "e2SM-KPM-RANfunction-Item", - &asn_OP_SEQUENCE, - asn_DEF_e2SM_KPM_RANfunction_Item_tags_3, - sizeof(asn_DEF_e2SM_KPM_RANfunction_Item_tags_3) - /sizeof(asn_DEF_e2SM_KPM_RANfunction_Item_tags_3[0]) - 1, /* 1 */ - asn_DEF_e2SM_KPM_RANfunction_Item_tags_3, /* Same as above */ - sizeof(asn_DEF_e2SM_KPM_RANfunction_Item_tags_3) - /sizeof(asn_DEF_e2SM_KPM_RANfunction_Item_tags_3[0]), /* 2 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_e2SM_KPM_RANfunction_Item_3, - 2, /* Elements count */ - &asn_SPC_e2SM_KPM_RANfunction_Item_specs_3 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2SM_KPM_RANfunction_Description_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_RANfunction_Description, ranFunction_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunction_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunction-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_RANfunction_Description, e2SM_KPM_RANfunction_Item), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_e2SM_KPM_RANfunction_Item_3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2SM-KPM-RANfunction-Item" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* e2SM-KPM-RANfunction-Item */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_RANfunction_Description_specs_1 = { - sizeof(struct E2SM_KPM_RANfunction_Description), - offsetof(struct E2SM_KPM_RANfunction_Description, _asn_ctx), - asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description = { - "E2SM-KPM-RANfunction-Description", - "E2SM-KPM-RANfunction-Description", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_RANfunction_Description_tags_1, - sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1) - /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_RANfunction_Description_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1) - /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_RANfunction_Description_1, - 2, /* Elements count */ - &asn_SPC_E2SM_KPM_RANfunction_Description_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-RANfunction-Description.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-RANfunction-Description.h deleted file mode 100644 index 79d2dcf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2SM-KPM-RANfunction-Description.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_RANfunction_Description_H_ -#define _E2SM_KPM_RANfunction_Description_H_ - - -#include - -/* Including external dependencies */ -#include "RANfunction-Name.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RIC_EventTriggerStyle_List; -struct RIC_ReportStyle_List; - -/* E2SM-KPM-RANfunction-Description */ -typedef struct E2SM_KPM_RANfunction_Description { - RANfunction_Name_t ranFunction_Name; - struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item { - struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List { - A_SEQUENCE_OF(struct RIC_EventTriggerStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_EventTriggerStyle_List; - struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List { - A_SEQUENCE_OF(struct RIC_ReportStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_ReportStyle_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } e2SM_KPM_RANfunction_Item; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_RANfunction_Description_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "RIC-EventTriggerStyle-List.h" -#include "RIC-ReportStyle-List.h" - -#endif /* _E2SM_KPM_RANfunction_Description_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.c deleted file mode 100644 index 49cae9b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "E2setupFailure.h" - -asn_TYPE_member_t asn_MBR_E2setupFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P13, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1 = { - sizeof(struct E2setupFailure), - offsetof(struct E2setupFailure, _asn_ctx), - asn_MAP_E2setupFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupFailure = { - "E2setupFailure", - "E2setupFailure", - &asn_OP_SEQUENCE, - asn_DEF_E2setupFailure_tags_1, - sizeof(asn_DEF_E2setupFailure_tags_1) - /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ - asn_DEF_E2setupFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_E2setupFailure_tags_1) - /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupFailure_1, - 1, /* Elements count */ - &asn_SPC_E2setupFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.h deleted file mode 100644 index 4dee64b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _E2setupFailure_H_ -#define _E2setupFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2setupFailure */ -typedef struct E2setupFailure { - ProtocolIE_Container_1527P13_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2setupFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_E2setupFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2setupFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.c deleted file mode 100644 index cefa91b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "E2setupRequest.h" - -asn_TYPE_member_t asn_MBR_E2setupRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P11, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1 = { - sizeof(struct E2setupRequest), - offsetof(struct E2setupRequest, _asn_ctx), - asn_MAP_E2setupRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupRequest = { - "E2setupRequest", - "E2setupRequest", - &asn_OP_SEQUENCE, - asn_DEF_E2setupRequest_tags_1, - sizeof(asn_DEF_E2setupRequest_tags_1) - /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ - asn_DEF_E2setupRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_E2setupRequest_tags_1) - /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupRequest_1, - 1, /* Elements count */ - &asn_SPC_E2setupRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.h deleted file mode 100644 index 2b8b070..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _E2setupRequest_H_ -#define _E2setupRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2setupRequest */ -typedef struct E2setupRequest { - ProtocolIE_Container_1527P11_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2setupRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_E2setupRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2setupRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.c deleted file mode 100644 index b607aa1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "E2setupResponse.h" - -asn_TYPE_member_t asn_MBR_E2setupResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P12, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1 = { - sizeof(struct E2setupResponse), - offsetof(struct E2setupResponse, _asn_ctx), - asn_MAP_E2setupResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupResponse = { - "E2setupResponse", - "E2setupResponse", - &asn_OP_SEQUENCE, - asn_DEF_E2setupResponse_tags_1, - sizeof(asn_DEF_E2setupResponse_tags_1) - /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ - asn_DEF_E2setupResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_E2setupResponse_tags_1) - /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupResponse_1, - 1, /* Elements count */ - &asn_SPC_E2setupResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.h deleted file mode 100644 index ccec4bc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/E2setupResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _E2setupResponse_H_ -#define _E2setupResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2setupResponse */ -typedef struct E2setupResponse { - ProtocolIE_Container_1527P12_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2setupResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_E2setupResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2setupResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.c deleted file mode 100644 index 824871d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "ENB-ID-Choice.h" - -static int -memb_enb_ID_macro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_enb_ID_shortmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 18)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_enb_ID_longmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 21)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_enb_ID_macro_constr_2 CC_NOTUSED = { - { 0, 0 }, - 20 /* (SIZE(20..20)) */}; -static asn_per_constraints_t asn_PER_memb_enb_ID_macro_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = { - { 0, 0 }, - 18 /* (SIZE(18..18)) */}; -static asn_per_constraints_t asn_PER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = { - { 0, 0 }, - 21 /* (SIZE(21..21)) */}; -static asn_per_constraints_t asn_PER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_macro), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_enb_ID_macro_constr_2, &asn_PER_memb_enb_ID_macro_constr_2, memb_enb_ID_macro_constraint_1 }, - 0, 0, /* No default value */ - "enb-ID-macro" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_shortmacro), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_enb_ID_shortmacro_constr_3, &asn_PER_memb_enb_ID_shortmacro_constr_3, memb_enb_ID_shortmacro_constraint_1 }, - 0, 0, /* No default value */ - "enb-ID-shortmacro" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_longmacro), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_enb_ID_longmacro_constr_4, &asn_PER_memb_enb_ID_longmacro_constr_4, memb_enb_ID_longmacro_constraint_1 }, - 0, 0, /* No default value */ - "enb-ID-longmacro" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_Choice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enb-ID-macro */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* enb-ID-shortmacro */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* enb-ID-longmacro */ -}; -asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1 = { - sizeof(struct ENB_ID_Choice), - offsetof(struct ENB_ID_Choice, _asn_ctx), - offsetof(struct ENB_ID_Choice, present), - sizeof(((struct ENB_ID_Choice *)0)->present), - asn_MAP_ENB_ID_Choice_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice = { - "ENB-ID-Choice", - "ENB-ID-Choice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_ENB_ID_Choice_constr_1, &asn_PER_type_ENB_ID_Choice_constr_1, CHOICE_constraint }, - asn_MBR_ENB_ID_Choice_1, - 3, /* Elements count */ - &asn_SPC_ENB_ID_Choice_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.h deleted file mode 100644 index 7e142ae..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID-Choice.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _ENB_ID_Choice_H_ -#define _ENB_ID_Choice_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum ENB_ID_Choice_PR { - ENB_ID_Choice_PR_NOTHING, /* No components present */ - ENB_ID_Choice_PR_enb_ID_macro, - ENB_ID_Choice_PR_enb_ID_shortmacro, - ENB_ID_Choice_PR_enb_ID_longmacro - /* Extensions may appear below */ - -} ENB_ID_Choice_PR; - -/* ENB-ID-Choice */ -typedef struct ENB_ID_Choice { - ENB_ID_Choice_PR present; - union ENB_ID_Choice_u { - BIT_STRING_t enb_ID_macro; - BIT_STRING_t enb_ID_shortmacro; - BIT_STRING_t enb_ID_longmacro; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ENB_ID_Choice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice; -extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1; -extern asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[3]; -extern asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _ENB_ID_Choice_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.c deleted file mode 100644 index 212c6fc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "ENB-ID.h" - -static int -memb_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 28)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 18)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 21)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { - { 0, 0 }, - 20 /* (SIZE(20..20)) */}; -static asn_per_constraints_t asn_PER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { - { 0, 0 }, - 28 /* (SIZE(28..28)) */}; -static asn_per_constraints_t asn_PER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { - { 0, 0 }, - 18 /* (SIZE(18..18)) */}; -static asn_per_constraints_t asn_PER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { - { 0, 0 }, - 21 /* (SIZE(21..21)) */}; -static asn_per_constraints_t asn_PER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ENB_ID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_ENB_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ENB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_macro_eNB_ID_constr_2, &asn_PER_memb_macro_eNB_ID_constr_2, memb_macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "macro-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.home_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_home_eNB_ID_constr_3, &asn_PER_memb_home_eNB_ID_constr_3, memb_home_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "home-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.short_Macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_short_Macro_eNB_ID_constr_5, &asn_PER_memb_short_Macro_eNB_ID_constr_5, memb_short_Macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "short-Macro-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.long_Macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_long_Macro_eNB_ID_constr_6, &asn_PER_memb_long_Macro_eNB_ID_constr_6, memb_long_Macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "long-Macro-eNB-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1 = { - sizeof(struct ENB_ID), - offsetof(struct ENB_ID, _asn_ctx), - offsetof(struct ENB_ID, present), - sizeof(((struct ENB_ID *)0)->present), - asn_MAP_ENB_ID_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ENB_ID = { - "ENB-ID", - "ENB-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_ENB_ID_constr_1, &asn_PER_type_ENB_ID_constr_1, CHOICE_constraint }, - asn_MBR_ENB_ID_1, - 4, /* Elements count */ - &asn_SPC_ENB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.h deleted file mode 100644 index 8af6b41..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENB-ID.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _ENB_ID_H_ -#define _ENB_ID_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum ENB_ID_PR { - ENB_ID_PR_NOTHING, /* No components present */ - ENB_ID_PR_macro_eNB_ID, - ENB_ID_PR_home_eNB_ID, - /* Extensions may appear below */ - ENB_ID_PR_short_Macro_eNB_ID, - ENB_ID_PR_long_Macro_eNB_ID -} ENB_ID_PR; - -/* ENB-ID */ -typedef struct ENB_ID { - ENB_ID_PR present; - union ENB_ID_u { - BIT_STRING_t macro_eNB_ID; - BIT_STRING_t home_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - BIT_STRING_t short_Macro_eNB_ID; - BIT_STRING_t long_Macro_eNB_ID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ENB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ENB_ID; -extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_ENB_ID_1[4]; -extern asn_per_constraints_t asn_PER_type_ENB_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _ENB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.c deleted file mode 100644 index e8fc32f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "ENGNB-ID.h" - -static int -memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size >= 22 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_gNB_ID_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(22..32)) */}; -static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ENGNB_ID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ENGNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ENGNB_ID, choice.gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_gNB_ID_constr_2, &asn_PER_memb_gNB_ID_constr_2, memb_gNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "gNB-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_ENGNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1 = { - sizeof(struct ENGNB_ID), - offsetof(struct ENGNB_ID, _asn_ctx), - offsetof(struct ENGNB_ID, present), - sizeof(((struct ENGNB_ID *)0)->present), - asn_MAP_ENGNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ENGNB_ID = { - "ENGNB-ID", - "ENGNB-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_ENGNB_ID_constr_1, &asn_PER_type_ENGNB_ID_constr_1, CHOICE_constraint }, - asn_MBR_ENGNB_ID_1, - 1, /* Elements count */ - &asn_SPC_ENGNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.h deleted file mode 100644 index f97a53c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ENGNB-ID.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _ENGNB_ID_H_ -#define _ENGNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum ENGNB_ID_PR { - ENGNB_ID_PR_NOTHING, /* No components present */ - ENGNB_ID_PR_gNB_ID - /* Extensions may appear below */ - -} ENGNB_ID_PR; - -/* ENGNB-ID */ -typedef struct ENGNB_ID { - ENGNB_ID_PR present; - union ENGNB_ID_u { - BIT_STRING_t gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ENGNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ENGNB_ID; -extern asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_ENGNB_ID_1[1]; -extern asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _ENGNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.c deleted file mode 100644 index d8902f8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "EPC-CUUP-PM-Format.h" - -static int -memb_perQCIReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 256)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_perQCIReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_type_perQCIReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_perQCIReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_memb_perQCIReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_perQCIReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PerQCIReportListItemFormat, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_perQCIReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_perQCIReportList_specs_2 = { - sizeof(struct EPC_CUUP_PM_Format__perQCIReportList), - offsetof(struct EPC_CUUP_PM_Format__perQCIReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_perQCIReportList_2 = { - "perQCIReportList", - "perQCIReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_perQCIReportList_tags_2, - sizeof(asn_DEF_perQCIReportList_tags_2) - /sizeof(asn_DEF_perQCIReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_perQCIReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_perQCIReportList_tags_2) - /sizeof(asn_DEF_perQCIReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_perQCIReportList_constr_2, &asn_PER_type_perQCIReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_perQCIReportList_2, - 1, /* Single element */ - &asn_SPC_perQCIReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_EPC_CUUP_PM_Format_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct EPC_CUUP_PM_Format, perQCIReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_perQCIReportList_2, - 0, - { &asn_OER_memb_perQCIReportList_constr_2, &asn_PER_memb_perQCIReportList_constr_2, memb_perQCIReportList_constraint_1 }, - 0, 0, /* No default value */ - "perQCIReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_EPC_CUUP_PM_Format_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_EPC_CUUP_PM_Format_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* perQCIReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_EPC_CUUP_PM_Format_specs_1 = { - sizeof(struct EPC_CUUP_PM_Format), - offsetof(struct EPC_CUUP_PM_Format, _asn_ctx), - asn_MAP_EPC_CUUP_PM_Format_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_EPC_CUUP_PM_Format = { - "EPC-CUUP-PM-Format", - "EPC-CUUP-PM-Format", - &asn_OP_SEQUENCE, - asn_DEF_EPC_CUUP_PM_Format_tags_1, - sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1) - /sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1[0]), /* 1 */ - asn_DEF_EPC_CUUP_PM_Format_tags_1, /* Same as above */ - sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1) - /sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_EPC_CUUP_PM_Format_1, - 1, /* Elements count */ - &asn_SPC_EPC_CUUP_PM_Format_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.h deleted file mode 100644 index b07125d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-CUUP-PM-Format.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _EPC_CUUP_PM_Format_H_ -#define _EPC_CUUP_PM_Format_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PerQCIReportListItemFormat; - -/* EPC-CUUP-PM-Format */ -typedef struct EPC_CUUP_PM_Format { - struct EPC_CUUP_PM_Format__perQCIReportList { - A_SEQUENCE_OF(struct PerQCIReportListItemFormat) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } perQCIReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} EPC_CUUP_PM_Format_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_EPC_CUUP_PM_Format; -extern asn_SEQUENCE_specifics_t asn_SPC_EPC_CUUP_PM_Format_specs_1; -extern asn_TYPE_member_t asn_MBR_EPC_CUUP_PM_Format_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PerQCIReportListItemFormat.h" - -#endif /* _EPC_CUUP_PM_Format_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-DU-PM-Container.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-DU-PM-Container.c deleted file mode 100644 index 2ba5440..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-DU-PM-Container.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "EPC-DU-PM-Container.h" - -static int -memb_perQCIReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 256)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_perQCIReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_type_perQCIReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_perQCIReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_memb_perQCIReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_perQCIReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PerQCIReportListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_perQCIReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_perQCIReportList_specs_2 = { - sizeof(struct EPC_DU_PM_Container__perQCIReportList), - offsetof(struct EPC_DU_PM_Container__perQCIReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_perQCIReportList_2 = { - "perQCIReportList", - "perQCIReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_perQCIReportList_tags_2, - sizeof(asn_DEF_perQCIReportList_tags_2) - /sizeof(asn_DEF_perQCIReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_perQCIReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_perQCIReportList_tags_2) - /sizeof(asn_DEF_perQCIReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_perQCIReportList_constr_2, &asn_PER_type_perQCIReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_perQCIReportList_2, - 1, /* Single element */ - &asn_SPC_perQCIReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_EPC_DU_PM_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct EPC_DU_PM_Container, perQCIReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_perQCIReportList_2, - 0, - { &asn_OER_memb_perQCIReportList_constr_2, &asn_PER_memb_perQCIReportList_constr_2, memb_perQCIReportList_constraint_1 }, - 0, 0, /* No default value */ - "perQCIReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_EPC_DU_PM_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_EPC_DU_PM_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* perQCIReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_EPC_DU_PM_Container_specs_1 = { - sizeof(struct EPC_DU_PM_Container), - offsetof(struct EPC_DU_PM_Container, _asn_ctx), - asn_MAP_EPC_DU_PM_Container_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_EPC_DU_PM_Container = { - "EPC-DU-PM-Container", - "EPC-DU-PM-Container", - &asn_OP_SEQUENCE, - asn_DEF_EPC_DU_PM_Container_tags_1, - sizeof(asn_DEF_EPC_DU_PM_Container_tags_1) - /sizeof(asn_DEF_EPC_DU_PM_Container_tags_1[0]), /* 1 */ - asn_DEF_EPC_DU_PM_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_EPC_DU_PM_Container_tags_1) - /sizeof(asn_DEF_EPC_DU_PM_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_EPC_DU_PM_Container_1, - 1, /* Elements count */ - &asn_SPC_EPC_DU_PM_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-DU-PM-Container.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-DU-PM-Container.h deleted file mode 100644 index 198982e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/EPC-DU-PM-Container.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _EPC_DU_PM_Container_H_ -#define _EPC_DU_PM_Container_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PerQCIReportListItem; - -/* EPC-DU-PM-Container */ -typedef struct EPC_DU_PM_Container { - struct EPC_DU_PM_Container__perQCIReportList { - A_SEQUENCE_OF(struct PerQCIReportListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } perQCIReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} EPC_DU_PM_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_EPC_DU_PM_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_EPC_DU_PM_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_EPC_DU_PM_Container_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PerQCIReportListItem.h" - -#endif /* _EPC_DU_PM_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.c deleted file mode 100644 index e971c4f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ErrorIndication.h" - -asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P10, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = { - sizeof(struct ErrorIndication), - offsetof(struct ErrorIndication, _asn_ctx), - asn_MAP_ErrorIndication_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ErrorIndication = { - "ErrorIndication", - "ErrorIndication", - &asn_OP_SEQUENCE, - asn_DEF_ErrorIndication_tags_1, - sizeof(asn_DEF_ErrorIndication_tags_1) - /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ - asn_DEF_ErrorIndication_tags_1, /* Same as above */ - sizeof(asn_DEF_ErrorIndication_tags_1) - /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ErrorIndication_1, - 1, /* Elements count */ - &asn_SPC_ErrorIndication_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.h deleted file mode 100644 index a209847..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ErrorIndication.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ErrorIndication_H_ -#define _ErrorIndication_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ErrorIndication */ -typedef struct ErrorIndication { - ProtocolIE_Container_1527P10_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ErrorIndication_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication; -extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1; -extern asn_TYPE_member_t asn_MBR_ErrorIndication_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ErrorIndication_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.c deleted file mode 100644 index d8f7e44..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "FGC-CUUP-PM-Format.h" - -static int -memb_sliceToReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 1024)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_sliceToReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_sliceToReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_sliceToReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_memb_sliceToReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_sliceToReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_SliceToReportListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_sliceToReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_sliceToReportList_specs_2 = { - sizeof(struct FGC_CUUP_PM_Format__sliceToReportList), - offsetof(struct FGC_CUUP_PM_Format__sliceToReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_sliceToReportList_2 = { - "sliceToReportList", - "sliceToReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_sliceToReportList_tags_2, - sizeof(asn_DEF_sliceToReportList_tags_2) - /sizeof(asn_DEF_sliceToReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_sliceToReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_sliceToReportList_tags_2) - /sizeof(asn_DEF_sliceToReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_sliceToReportList_constr_2, &asn_PER_type_sliceToReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_sliceToReportList_2, - 1, /* Single element */ - &asn_SPC_sliceToReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_FGC_CUUP_PM_Format_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct FGC_CUUP_PM_Format, sliceToReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_sliceToReportList_2, - 0, - { &asn_OER_memb_sliceToReportList_constr_2, &asn_PER_memb_sliceToReportList_constr_2, memb_sliceToReportList_constraint_1 }, - 0, 0, /* No default value */ - "sliceToReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_FGC_CUUP_PM_Format_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_FGC_CUUP_PM_Format_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* sliceToReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_FGC_CUUP_PM_Format_specs_1 = { - sizeof(struct FGC_CUUP_PM_Format), - offsetof(struct FGC_CUUP_PM_Format, _asn_ctx), - asn_MAP_FGC_CUUP_PM_Format_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_FGC_CUUP_PM_Format = { - "FGC-CUUP-PM-Format", - "FGC-CUUP-PM-Format", - &asn_OP_SEQUENCE, - asn_DEF_FGC_CUUP_PM_Format_tags_1, - sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1) - /sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1[0]), /* 1 */ - asn_DEF_FGC_CUUP_PM_Format_tags_1, /* Same as above */ - sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1) - /sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_FGC_CUUP_PM_Format_1, - 1, /* Elements count */ - &asn_SPC_FGC_CUUP_PM_Format_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.h deleted file mode 100644 index a6e4aa8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-CUUP-PM-Format.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _FGC_CUUP_PM_Format_H_ -#define _FGC_CUUP_PM_Format_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct SliceToReportListItem; - -/* FGC-CUUP-PM-Format */ -typedef struct FGC_CUUP_PM_Format { - struct FGC_CUUP_PM_Format__sliceToReportList { - A_SEQUENCE_OF(struct SliceToReportListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } sliceToReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} FGC_CUUP_PM_Format_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_FGC_CUUP_PM_Format; -extern asn_SEQUENCE_specifics_t asn_SPC_FGC_CUUP_PM_Format_specs_1; -extern asn_TYPE_member_t asn_MBR_FGC_CUUP_PM_Format_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "SliceToReportListItem.h" - -#endif /* _FGC_CUUP_PM_Format_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-DU-PM-Container.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-DU-PM-Container.c deleted file mode 100644 index c0429ab..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-DU-PM-Container.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "FGC-DU-PM-Container.h" - -static int -memb_slicePerPlmnPerCellList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 1024)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_memb_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_slicePerPlmnPerCellList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_SlicePerPlmnPerCellListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_slicePerPlmnPerCellList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_slicePerPlmnPerCellList_specs_2 = { - sizeof(struct FGC_DU_PM_Container__slicePerPlmnPerCellList), - offsetof(struct FGC_DU_PM_Container__slicePerPlmnPerCellList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_slicePerPlmnPerCellList_2 = { - "slicePerPlmnPerCellList", - "slicePerPlmnPerCellList", - &asn_OP_SEQUENCE_OF, - asn_DEF_slicePerPlmnPerCellList_tags_2, - sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2) - /sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2[0]) - 1, /* 1 */ - asn_DEF_slicePerPlmnPerCellList_tags_2, /* Same as above */ - sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2) - /sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2[0]), /* 2 */ - { &asn_OER_type_slicePerPlmnPerCellList_constr_2, &asn_PER_type_slicePerPlmnPerCellList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_slicePerPlmnPerCellList_2, - 1, /* Single element */ - &asn_SPC_slicePerPlmnPerCellList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_FGC_DU_PM_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct FGC_DU_PM_Container, slicePerPlmnPerCellList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_slicePerPlmnPerCellList_2, - 0, - { &asn_OER_memb_slicePerPlmnPerCellList_constr_2, &asn_PER_memb_slicePerPlmnPerCellList_constr_2, memb_slicePerPlmnPerCellList_constraint_1 }, - 0, 0, /* No default value */ - "slicePerPlmnPerCellList" - }, -}; -static const ber_tlv_tag_t asn_DEF_FGC_DU_PM_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_FGC_DU_PM_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* slicePerPlmnPerCellList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_FGC_DU_PM_Container_specs_1 = { - sizeof(struct FGC_DU_PM_Container), - offsetof(struct FGC_DU_PM_Container, _asn_ctx), - asn_MAP_FGC_DU_PM_Container_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_FGC_DU_PM_Container = { - "FGC-DU-PM-Container", - "FGC-DU-PM-Container", - &asn_OP_SEQUENCE, - asn_DEF_FGC_DU_PM_Container_tags_1, - sizeof(asn_DEF_FGC_DU_PM_Container_tags_1) - /sizeof(asn_DEF_FGC_DU_PM_Container_tags_1[0]), /* 1 */ - asn_DEF_FGC_DU_PM_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_FGC_DU_PM_Container_tags_1) - /sizeof(asn_DEF_FGC_DU_PM_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_FGC_DU_PM_Container_1, - 1, /* Elements count */ - &asn_SPC_FGC_DU_PM_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-DU-PM-Container.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-DU-PM-Container.h deleted file mode 100644 index 96debbb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FGC-DU-PM-Container.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _FGC_DU_PM_Container_H_ -#define _FGC_DU_PM_Container_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct SlicePerPlmnPerCellListItem; - -/* FGC-DU-PM-Container */ -typedef struct FGC_DU_PM_Container { - struct FGC_DU_PM_Container__slicePerPlmnPerCellList { - A_SEQUENCE_OF(struct SlicePerPlmnPerCellListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } slicePerPlmnPerCellList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} FGC_DU_PM_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_FGC_DU_PM_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_FGC_DU_PM_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_FGC_DU_PM_Container_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "SlicePerPlmnPerCellListItem.h" - -#endif /* _FGC_DU_PM_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.c deleted file mode 100644 index 84d1741..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "FQIPERSlicesPerPlmnListItem.h" - -static int -memb_fiveQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_fiveQI_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_fiveQI_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct FQIPERSlicesPerPlmnListItem, fiveQI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_fiveQI_constr_2, &asn_PER_memb_fiveQI_constr_2, memb_fiveQI_constraint_1 }, - 0, 0, /* No default value */ - "fiveQI" - }, - { ATF_POINTER, 2, offsetof(struct FQIPERSlicesPerPlmnListItem, pDCPBytesDL), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesDL_constr_3, &asn_PER_memb_pDCPBytesDL_constr_3, memb_pDCPBytesDL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesDL" - }, - { ATF_POINTER, 1, offsetof(struct FQIPERSlicesPerPlmnListItem, pDCPBytesUL), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesUL_constr_4, &asn_PER_memb_pDCPBytesUL_constr_4, memb_pDCPBytesUL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesUL" - }, -}; -static const int asn_MAP_FQIPERSlicesPerPlmnListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_FQIPERSlicesPerPlmnListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveQI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pDCPBytesDL */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pDCPBytesUL */ -}; -asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnListItem_specs_1 = { - sizeof(struct FQIPERSlicesPerPlmnListItem), - offsetof(struct FQIPERSlicesPerPlmnListItem, _asn_ctx), - asn_MAP_FQIPERSlicesPerPlmnListItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_FQIPERSlicesPerPlmnListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnListItem = { - "FQIPERSlicesPerPlmnListItem", - "FQIPERSlicesPerPlmnListItem", - &asn_OP_SEQUENCE, - asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1, - sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1) - /sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1[0]), /* 1 */ - asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1) - /sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_FQIPERSlicesPerPlmnListItem_1, - 3, /* Elements count */ - &asn_SPC_FQIPERSlicesPerPlmnListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.h deleted file mode 100644 index a87a0d7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnListItem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _FQIPERSlicesPerPlmnListItem_H_ -#define _FQIPERSlicesPerPlmnListItem_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* FQIPERSlicesPerPlmnListItem */ -typedef struct FQIPERSlicesPerPlmnListItem { - long fiveQI; - INTEGER_t *pDCPBytesDL; /* OPTIONAL */ - INTEGER_t *pDCPBytesUL; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} FQIPERSlicesPerPlmnListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnListItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _FQIPERSlicesPerPlmnListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c deleted file mode 100644 index d73d0db..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "FQIPERSlicesPerPlmnPerCellListItem.h" - -static int -memb_fiveQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_dl_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 273)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ul_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 273)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_fiveQI_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_fiveQI_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { 2, 1 } /* (0..273) */, - -1}; -static asn_per_constraints_t asn_PER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 9, 9, 0, 273 } /* (0..273) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { 2, 1 } /* (0..273) */, - -1}; -static asn_per_constraints_t asn_PER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 9, 9, 0, 273 } /* (0..273) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnPerCellListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, fiveQI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_fiveQI_constr_2, &asn_PER_memb_fiveQI_constr_2, memb_fiveQI_constraint_1 }, - 0, 0, /* No default value */ - "fiveQI" - }, - { ATF_POINTER, 2, offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, dl_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_dl_PRBUsage_constr_3, &asn_PER_memb_dl_PRBUsage_constr_3, memb_dl_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "dl-PRBUsage" - }, - { ATF_POINTER, 1, offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, ul_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ul_PRBUsage_constr_4, &asn_PER_memb_ul_PRBUsage_constr_4, memb_ul_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "ul-PRBUsage" - }, -}; -static const int asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveQI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-PRBUsage */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ul-PRBUsage */ -}; -asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnPerCellListItem_specs_1 = { - sizeof(struct FQIPERSlicesPerPlmnPerCellListItem), - offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, _asn_ctx), - asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnPerCellListItem = { - "FQIPERSlicesPerPlmnPerCellListItem", - "FQIPERSlicesPerPlmnPerCellListItem", - &asn_OP_SEQUENCE, - asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1, - sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1[0]), /* 1 */ - asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_FQIPERSlicesPerPlmnPerCellListItem_1, - 3, /* Elements count */ - &asn_SPC_FQIPERSlicesPerPlmnPerCellListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h deleted file mode 100644 index 1b22e34..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _FQIPERSlicesPerPlmnPerCellListItem_H_ -#define _FQIPERSlicesPerPlmnPerCellListItem_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* FQIPERSlicesPerPlmnPerCellListItem */ -typedef struct FQIPERSlicesPerPlmnPerCellListItem { - long fiveQI; - long *dl_PRBUsage; /* OPTIONAL */ - long *ul_PRBUsage; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} FQIPERSlicesPerPlmnPerCellListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnPerCellListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnPerCellListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnPerCellListItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _FQIPERSlicesPerPlmnPerCellListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.c deleted file mode 100644 index 029ca92..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-CU-CP-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -GNB_CU_CP_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_GNB_CU_CP_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_GNB_CU_CP_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_CU_CP_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_GNB_CU_CP_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_GNB_CU_CP_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_GNB_CU_CP_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_CU_CP_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_Name = { - "GNB-CU-CP-Name", - "GNB-CU-CP-Name", - &asn_OP_PrintableString, - asn_DEF_GNB_CU_CP_Name_tags_1, - sizeof(asn_DEF_GNB_CU_CP_Name_tags_1) - /sizeof(asn_DEF_GNB_CU_CP_Name_tags_1[0]), /* 1 */ - asn_DEF_GNB_CU_CP_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_CU_CP_Name_tags_1) - /sizeof(asn_DEF_GNB_CU_CP_Name_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_CU_CP_Name_constr_1, &asn_PER_type_GNB_CU_CP_Name_constr_1, GNB_CU_CP_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.h deleted file mode 100644 index 1eb3404..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-CP-Name.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_CU_CP_Name_H_ -#define _GNB_CU_CP_Name_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-CU-CP-Name */ -typedef PrintableString_t GNB_CU_CP_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_CU_CP_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_Name; -asn_struct_free_f GNB_CU_CP_Name_free; -asn_struct_print_f GNB_CU_CP_Name_print; -asn_constr_check_f GNB_CU_CP_Name_constraint; -ber_type_decoder_f GNB_CU_CP_Name_decode_ber; -der_type_encoder_f GNB_CU_CP_Name_encode_der; -xer_type_decoder_f GNB_CU_CP_Name_decode_xer; -xer_type_encoder_f GNB_CU_CP_Name_encode_xer; -oer_type_decoder_f GNB_CU_CP_Name_decode_oer; -oer_type_encoder_f GNB_CU_CP_Name_encode_oer; -per_type_decoder_f GNB_CU_CP_Name_decode_uper; -per_type_encoder_f GNB_CU_CP_Name_encode_uper; -per_type_decoder_f GNB_CU_CP_Name_decode_aper; -per_type_encoder_f GNB_CU_CP_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_CU_CP_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.c deleted file mode 100644 index 737a4f3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-CU-UP-ID.h" - -int -GNB_CU_UP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 68719476735)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using INTEGER, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_CU_UP_ID_constr_1 CC_NOTUSED = { - { 8, 1 } /* (0..68719476735) */, - -1}; -asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_CU_UP_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID = { - "GNB-CU-UP-ID", - "GNB-CU-UP-ID", - &asn_OP_INTEGER, - asn_DEF_GNB_CU_UP_ID_tags_1, - sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ - asn_DEF_GNB_CU_UP_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_CU_UP_ID_constr_1, &asn_PER_type_GNB_CU_UP_ID_constr_1, GNB_CU_UP_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.h deleted file mode 100644 index e6b9c43..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_CU_UP_ID_H_ -#define _GNB_CU_UP_ID_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-CU-UP-ID */ -typedef INTEGER_t GNB_CU_UP_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID; -asn_struct_free_f GNB_CU_UP_ID_free; -asn_struct_print_f GNB_CU_UP_ID_print; -asn_constr_check_f GNB_CU_UP_ID_constraint; -ber_type_decoder_f GNB_CU_UP_ID_decode_ber; -der_type_encoder_f GNB_CU_UP_ID_encode_der; -xer_type_decoder_f GNB_CU_UP_ID_decode_xer; -xer_type_encoder_f GNB_CU_UP_ID_encode_xer; -oer_type_decoder_f GNB_CU_UP_ID_decode_oer; -oer_type_encoder_f GNB_CU_UP_ID_encode_oer; -per_type_decoder_f GNB_CU_UP_ID_decode_uper; -per_type_encoder_f GNB_CU_UP_ID_encode_uper; -per_type_decoder_f GNB_CU_UP_ID_decode_aper; -per_type_encoder_f GNB_CU_UP_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_CU_UP_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.c deleted file mode 100644 index b64d5b1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-CU-UP-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -GNB_CU_UP_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_GNB_CU_UP_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_GNB_CU_UP_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_CU_UP_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_GNB_CU_UP_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_GNB_CU_UP_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_GNB_CU_UP_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_CU_UP_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_Name = { - "GNB-CU-UP-Name", - "GNB-CU-UP-Name", - &asn_OP_PrintableString, - asn_DEF_GNB_CU_UP_Name_tags_1, - sizeof(asn_DEF_GNB_CU_UP_Name_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_Name_tags_1[0]), /* 1 */ - asn_DEF_GNB_CU_UP_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_CU_UP_Name_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_Name_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_CU_UP_Name_constr_1, &asn_PER_type_GNB_CU_UP_Name_constr_1, GNB_CU_UP_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.h deleted file mode 100644 index c1b9d7e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-CU-UP-Name.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_CU_UP_Name_H_ -#define _GNB_CU_UP_Name_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-CU-UP-Name */ -typedef PrintableString_t GNB_CU_UP_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_CU_UP_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_Name; -asn_struct_free_f GNB_CU_UP_Name_free; -asn_struct_print_f GNB_CU_UP_Name_print; -asn_constr_check_f GNB_CU_UP_Name_constraint; -ber_type_decoder_f GNB_CU_UP_Name_decode_ber; -der_type_encoder_f GNB_CU_UP_Name_encode_der; -xer_type_decoder_f GNB_CU_UP_Name_decode_xer; -xer_type_encoder_f GNB_CU_UP_Name_encode_xer; -oer_type_decoder_f GNB_CU_UP_Name_decode_oer; -oer_type_encoder_f GNB_CU_UP_Name_encode_oer; -per_type_decoder_f GNB_CU_UP_Name_decode_uper; -per_type_encoder_f GNB_CU_UP_Name_encode_uper; -per_type_decoder_f GNB_CU_UP_Name_decode_aper; -per_type_encoder_f GNB_CU_UP_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_CU_UP_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.c deleted file mode 100644 index b43653e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-DU-ID.h" - -int -GNB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 68719476735)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using INTEGER, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_DU_ID_constr_1 CC_NOTUSED = { - { 8, 1 } /* (0..68719476735) */, - -1}; -asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_DU_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID = { - "GNB-DU-ID", - "GNB-DU-ID", - &asn_OP_INTEGER, - asn_DEF_GNB_DU_ID_tags_1, - sizeof(asn_DEF_GNB_DU_ID_tags_1) - /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ - asn_DEF_GNB_DU_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_DU_ID_tags_1) - /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_DU_ID_constr_1, &asn_PER_type_GNB_DU_ID_constr_1, GNB_DU_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.h deleted file mode 100644 index 65e23da..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_DU_ID_H_ -#define _GNB_DU_ID_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-DU-ID */ -typedef INTEGER_t GNB_DU_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID; -asn_struct_free_f GNB_DU_ID_free; -asn_struct_print_f GNB_DU_ID_print; -asn_constr_check_f GNB_DU_ID_constraint; -ber_type_decoder_f GNB_DU_ID_decode_ber; -der_type_encoder_f GNB_DU_ID_encode_der; -xer_type_decoder_f GNB_DU_ID_decode_xer; -xer_type_encoder_f GNB_DU_ID_encode_xer; -oer_type_decoder_f GNB_DU_ID_decode_oer; -oer_type_encoder_f GNB_DU_ID_encode_oer; -per_type_decoder_f GNB_DU_ID_decode_uper; -per_type_encoder_f GNB_DU_ID_encode_uper; -per_type_decoder_f GNB_DU_ID_decode_aper; -per_type_encoder_f GNB_DU_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_DU_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.c deleted file mode 100644 index 8ac789d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-DU-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -GNB_DU_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_GNB_DU_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_GNB_DU_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_DU_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_GNB_DU_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_GNB_DU_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_GNB_DU_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_DU_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_DU_Name = { - "GNB-DU-Name", - "GNB-DU-Name", - &asn_OP_PrintableString, - asn_DEF_GNB_DU_Name_tags_1, - sizeof(asn_DEF_GNB_DU_Name_tags_1) - /sizeof(asn_DEF_GNB_DU_Name_tags_1[0]), /* 1 */ - asn_DEF_GNB_DU_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_DU_Name_tags_1) - /sizeof(asn_DEF_GNB_DU_Name_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_DU_Name_constr_1, &asn_PER_type_GNB_DU_Name_constr_1, GNB_DU_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.h deleted file mode 100644 index e4994e6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-DU-Name.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_DU_Name_H_ -#define _GNB_DU_Name_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-DU-Name */ -typedef PrintableString_t GNB_DU_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_DU_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_DU_Name; -asn_struct_free_f GNB_DU_Name_free; -asn_struct_print_f GNB_DU_Name_print; -asn_constr_check_f GNB_DU_Name_constraint; -ber_type_decoder_f GNB_DU_Name_decode_ber; -der_type_encoder_f GNB_DU_Name_encode_der; -xer_type_decoder_f GNB_DU_Name_decode_xer; -xer_type_encoder_f GNB_DU_Name_encode_xer; -oer_type_decoder_f GNB_DU_Name_decode_oer; -oer_type_encoder_f GNB_DU_Name_encode_oer; -per_type_decoder_f GNB_DU_Name_decode_uper; -per_type_encoder_f GNB_DU_Name_encode_uper; -per_type_decoder_f GNB_DU_Name_decode_aper; -per_type_encoder_f GNB_DU_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_DU_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.c deleted file mode 100644 index 81bc2b0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-ID-Choice.h" - -static int -memb_gnb_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size >= 22 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_gnb_ID_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(22..32)) */}; -static asn_per_constraints_t asn_PER_memb_gnb_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GNB_ID_Choice, choice.gnb_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_gnb_ID_constr_2, &asn_PER_memb_gnb_ID_constr_2, memb_gnb_ID_constraint_1 }, - 0, 0, /* No default value */ - "gnb-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_Choice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gnb-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1 = { - sizeof(struct GNB_ID_Choice), - offsetof(struct GNB_ID_Choice, _asn_ctx), - offsetof(struct GNB_ID_Choice, present), - sizeof(((struct GNB_ID_Choice *)0)->present), - asn_MAP_GNB_ID_Choice_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice = { - "GNB-ID-Choice", - "GNB-ID-Choice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_GNB_ID_Choice_constr_1, &asn_PER_type_GNB_ID_Choice_constr_1, CHOICE_constraint }, - asn_MBR_GNB_ID_Choice_1, - 1, /* Elements count */ - &asn_SPC_GNB_ID_Choice_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.h deleted file mode 100644 index cf5438c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-ID-Choice.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_ID_Choice_H_ -#define _GNB_ID_Choice_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GNB_ID_Choice_PR { - GNB_ID_Choice_PR_NOTHING, /* No components present */ - GNB_ID_Choice_PR_gnb_ID - /* Extensions may appear below */ - -} GNB_ID_Choice_PR; - -/* GNB-ID-Choice */ -typedef struct GNB_ID_Choice { - GNB_ID_Choice_PR present; - union GNB_ID_Choice_u { - BIT_STRING_t gnb_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GNB_ID_Choice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice; -extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1; -extern asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[1]; -extern asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_ID_Choice_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.c deleted file mode 100644 index aeee9d8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-Name.h" - -static asn_oer_constraints_t asn_OER_type_GNB_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_GNB_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_GNB_Name_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GNB_Name, choice.gNB_DU_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct GNB_Name, choice.gNB_CU_CP_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_CP_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-CP-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct GNB_Name, choice.gNB_CU_UP_Name), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-UP-Name" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GNB_Name_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-DU-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-CP-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-CU-UP-Name */ -}; -asn_CHOICE_specifics_t asn_SPC_GNB_Name_specs_1 = { - sizeof(struct GNB_Name), - offsetof(struct GNB_Name, _asn_ctx), - offsetof(struct GNB_Name, present), - sizeof(((struct GNB_Name *)0)->present), - asn_MAP_GNB_Name_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GNB_Name = { - "GNB-Name", - "GNB-Name", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_GNB_Name_constr_1, &asn_PER_type_GNB_Name_constr_1, CHOICE_constraint }, - asn_MBR_GNB_Name_1, - 3, /* Elements count */ - &asn_SPC_GNB_Name_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.h deleted file mode 100644 index 3c69172..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GNB-Name.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_Name_H_ -#define _GNB_Name_H_ - - -#include - -/* Including external dependencies */ -#include "GNB-DU-Name.h" -#include "GNB-CU-CP-Name.h" -#include "GNB-CU-UP-Name.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GNB_Name_PR { - GNB_Name_PR_NOTHING, /* No components present */ - GNB_Name_PR_gNB_DU_Name, - GNB_Name_PR_gNB_CU_CP_Name, - GNB_Name_PR_gNB_CU_UP_Name - /* Extensions may appear below */ - -} GNB_Name_PR; - -/* GNB-Name */ -typedef struct GNB_Name { - GNB_Name_PR present; - union GNB_Name_u { - GNB_DU_Name_t gNB_DU_Name; - GNB_CU_CP_Name_t gNB_CU_CP_Name; - GNB_CU_UP_Name_t gNB_CU_UP_Name; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GNB_Name_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GNB_Name; -extern asn_CHOICE_specifics_t asn_SPC_GNB_Name_specs_1; -extern asn_TYPE_member_t asn_MBR_GNB_Name_1[3]; -extern asn_per_constraints_t asn_PER_type_GNB_Name_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.c deleted file mode 100644 index 0b194e6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "GlobalE2node-ID.h" - -#include "GlobalE2node-gNB-ID.h" -#include "GlobalE2node-en-gNB-ID.h" -#include "GlobalE2node-ng-eNB-ID.h" -#include "GlobalE2node-eNB-ID.h" -static asn_per_constraints_t asn_PER_type_GlobalE2node_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_GlobalE2node_ID_1[] = { - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.gNB), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.en_gNB), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_en_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "en-gNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.ng_eNB), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_ng_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ng-eNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.eNB), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eNB" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */ -}; -static asn_CHOICE_specifics_t asn_SPC_GlobalE2node_ID_specs_1 = { - sizeof(struct GlobalE2node_ID), - offsetof(struct GlobalE2node_ID, _asn_ctx), - offsetof(struct GlobalE2node_ID, present), - sizeof(((struct GlobalE2node_ID *)0)->present), - asn_MAP_GlobalE2node_ID_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, - 4 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID = { - "GlobalE2node-ID", - "GlobalE2node-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_GlobalE2node_ID_constr_1, CHOICE_constraint }, - asn_MBR_GlobalE2node_ID_1, - 4, /* Elements count */ - &asn_SPC_GlobalE2node_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.h deleted file mode 100644 index 339797e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ID.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _GlobalE2node_ID_H_ -#define _GlobalE2node_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GlobalE2node_ID_PR { - GlobalE2node_ID_PR_NOTHING, /* No components present */ - GlobalE2node_ID_PR_gNB, - GlobalE2node_ID_PR_en_gNB, - GlobalE2node_ID_PR_ng_eNB, - GlobalE2node_ID_PR_eNB - /* Extensions may appear below */ - -} GlobalE2node_ID_PR; - -/* Forward declarations */ -struct GlobalE2node_gNB_ID; -struct GlobalE2node_en_gNB_ID; -struct GlobalE2node_ng_eNB_ID; -struct GlobalE2node_eNB_ID; - -/* GlobalE2node-ID */ -typedef struct GlobalE2node_ID { - GlobalE2node_ID_PR present; - union GlobalE2node_ID_u { - struct GlobalE2node_gNB_ID *gNB; - struct GlobalE2node_en_gNB_ID *en_gNB; - struct GlobalE2node_ng_eNB_ID *ng_eNB; - struct GlobalE2node_eNB_ID *eNB; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.c deleted file mode 100644 index f31a018..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "GlobalE2node-eNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_eNB_ID, global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1 = { - sizeof(struct GlobalE2node_eNB_ID), - offsetof(struct GlobalE2node_eNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_eNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID = { - "GlobalE2node-eNB-ID", - "GlobalE2node-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_eNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalE2node_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.h deleted file mode 100644 index 6047414..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-eNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _GlobalE2node_eNB_ID_H_ -#define _GlobalE2node_eNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalENB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalE2node-eNB-ID */ -typedef struct GlobalE2node_eNB_ID { - GlobalENB_ID_t global_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_eNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.c deleted file mode 100644 index 2728634..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "GlobalE2node-en-gNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_en_gNB_ID, global_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalenGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-gNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_en_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-gNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1 = { - sizeof(struct GlobalE2node_en_gNB_ID), - offsetof(struct GlobalE2node_en_gNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID = { - "GlobalE2node-en-gNB-ID", - "GlobalE2node-en-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_en_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_en_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_en_gNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalE2node_en_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.h deleted file mode 100644 index 0bae91d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-en-gNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _GlobalE2node_en_gNB_ID_H_ -#define _GlobalE2node_en_gNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalenGNB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalE2node-en-gNB-ID */ -typedef struct GlobalE2node_en_gNB_ID { - GlobalenGNB_ID_t global_gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_en_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_en_gNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.c deleted file mode 100644 index 25f0346..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "GlobalE2node-gNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_gNB_ID, global_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalgNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-gNB-ID" - }, - { ATF_POINTER, 2, offsetof(struct GlobalE2node_gNB_ID, gNB_CU_UP_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-UP-ID" - }, - { ATF_POINTER, 1, offsetof(struct GlobalE2node_gNB_ID, gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-ID" - }, -}; -static const int asn_MAP_GlobalE2node_gNB_ID_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-UP-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1 = { - sizeof(struct GlobalE2node_gNB_ID), - offsetof(struct GlobalE2node_gNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_gNB_ID_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_GlobalE2node_gNB_ID_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID = { - "GlobalE2node-gNB-ID", - "GlobalE2node-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_gNB_ID_1, - 3, /* Elements count */ - &asn_SPC_GlobalE2node_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.h deleted file mode 100644 index 2f36099..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-gNB-ID.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _GlobalE2node_gNB_ID_H_ -#define _GlobalE2node_gNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalgNB-ID.h" -#include "GNB-CU-UP-ID.h" -#include "GNB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalE2node-gNB-ID */ -typedef struct GlobalE2node_gNB_ID { - GlobalgNB_ID_t global_gNB_ID; - GNB_CU_UP_ID_t *gNB_CU_UP_ID; /* OPTIONAL */ - GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_gNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.c deleted file mode 100644 index 91e427b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "GlobalE2node-ng-eNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_ng_eNB_ID, global_ng_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalngeNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-ng-eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-ng-eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 = { - sizeof(struct GlobalE2node_ng_eNB_ID), - offsetof(struct GlobalE2node_ng_eNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID = { - "GlobalE2node-ng-eNB-ID", - "GlobalE2node-ng-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_ng_eNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.h deleted file mode 100644 index d6767bf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalE2node-ng-eNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _GlobalE2node_ng_eNB_ID_H_ -#define _GlobalE2node_ng_eNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalngeNB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalE2node-ng-eNB-ID */ -typedef struct GlobalE2node_ng_eNB_ID { - GlobalngeNB_ID_t global_ng_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_ng_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_ng_eNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.c deleted file mode 100644 index 58f3724..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalENB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_ENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = { - sizeof(struct GlobalENB_ID), - offsetof(struct GlobalENB_ID, _asn_ctx), - asn_MAP_GlobalENB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID = { - "GlobalENB-ID", - "GlobalENB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalENB_ID_tags_1, - sizeof(asn_DEF_GlobalENB_ID_tags_1) - /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalENB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalENB_ID_tags_1) - /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalENB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalENB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.h deleted file mode 100644 index bd653ae..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalENB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalENB_ID_H_ -#define _GlobalENB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "ENB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalENB-ID */ -typedef struct GlobalENB_ID { - PLMN_Identity_t pLMN_Identity; - ENB_ID_t eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalENB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalENB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ID.c deleted file mode 100644 index 5202400..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ID.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-ID.h" - -static asn_oer_constraints_t asn_OER_type_GlobalKPMnode_ID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_GlobalKPMnode_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_GlobalKPMnode_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.gNB), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.en_gNB), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_en_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "en-gNB" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.ng_eNB), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_ng_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ng-eNB" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.eNB), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eNB" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */ -}; -asn_CHOICE_specifics_t asn_SPC_GlobalKPMnode_ID_specs_1 = { - sizeof(struct GlobalKPMnode_ID), - offsetof(struct GlobalKPMnode_ID, _asn_ctx), - offsetof(struct GlobalKPMnode_ID, present), - sizeof(((struct GlobalKPMnode_ID *)0)->present), - asn_MAP_GlobalKPMnode_ID_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, - 4 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ID = { - "GlobalKPMnode-ID", - "GlobalKPMnode-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_GlobalKPMnode_ID_constr_1, &asn_PER_type_GlobalKPMnode_ID_constr_1, CHOICE_constraint }, - asn_MBR_GlobalKPMnode_ID_1, - 4, /* Elements count */ - &asn_SPC_GlobalKPMnode_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ID.h deleted file mode 100644 index a93e881..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ID.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_ID_H_ -#define _GlobalKPMnode_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalKPMnode-gNB-ID.h" -#include "GlobalKPMnode-en-gNB-ID.h" -#include "GlobalKPMnode-ng-eNB-ID.h" -#include "GlobalKPMnode-eNB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GlobalKPMnode_ID_PR { - GlobalKPMnode_ID_PR_NOTHING, /* No components present */ - GlobalKPMnode_ID_PR_gNB, - GlobalKPMnode_ID_PR_en_gNB, - GlobalKPMnode_ID_PR_ng_eNB, - GlobalKPMnode_ID_PR_eNB - /* Extensions may appear below */ - -} GlobalKPMnode_ID_PR; - -/* GlobalKPMnode-ID */ -typedef struct GlobalKPMnode_ID { - GlobalKPMnode_ID_PR present; - union GlobalKPMnode_ID_u { - GlobalKPMnode_gNB_ID_t gNB; - GlobalKPMnode_en_gNB_ID_t en_gNB; - GlobalKPMnode_ng_eNB_ID_t ng_eNB; - GlobalKPMnode_eNB_ID_t eNB; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ID; -extern asn_CHOICE_specifics_t asn_SPC_GlobalKPMnode_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_ID_1[4]; -extern asn_per_constraints_t asn_PER_type_GlobalKPMnode_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.c deleted file mode 100644 index e4039b9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-eNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalKPMnode_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_eNB_ID, global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_eNB_ID_specs_1 = { - sizeof(struct GlobalKPMnode_eNB_ID), - offsetof(struct GlobalKPMnode_eNB_ID, _asn_ctx), - asn_MAP_GlobalKPMnode_eNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_eNB_ID = { - "GlobalKPMnode-eNB-ID", - "GlobalKPMnode-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalKPMnode_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalKPMnode_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalKPMnode_eNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalKPMnode_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.h deleted file mode 100644 index 9941095..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-eNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_eNB_ID_H_ -#define _GlobalKPMnode_eNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalENB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalKPMnode-eNB-ID */ -typedef struct GlobalKPMnode_eNB_ID { - GlobalENB_ID_t global_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_eNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_eNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.c deleted file mode 100644 index 68e34d7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-en-gNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalKPMnode_en_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_en_gNB_ID, global_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalenGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-gNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_en_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-gNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_en_gNB_ID_specs_1 = { - sizeof(struct GlobalKPMnode_en_gNB_ID), - offsetof(struct GlobalKPMnode_en_gNB_ID, _asn_ctx), - asn_MAP_GlobalKPMnode_en_gNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_en_gNB_ID = { - "GlobalKPMnode-en-gNB-ID", - "GlobalKPMnode-en-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalKPMnode_en_gNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalKPMnode_en_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.h deleted file mode 100644 index 7994b62..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-en-gNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_en_gNB_ID_H_ -#define _GlobalKPMnode_en_gNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalenGNB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalKPMnode-en-gNB-ID */ -typedef struct GlobalKPMnode_en_gNB_ID { - GlobalenGNB_ID_t global_gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_en_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_en_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_en_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_en_gNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_en_gNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.c deleted file mode 100644 index 49e21ba..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-gNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalKPMnode_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_gNB_ID, global_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalgNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-gNB-ID" - }, - { ATF_POINTER, 2, offsetof(struct GlobalKPMnode_gNB_ID, gNB_CU_UP_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-UP-ID" - }, - { ATF_POINTER, 1, offsetof(struct GlobalKPMnode_gNB_ID, gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-ID" - }, -}; -static const int asn_MAP_GlobalKPMnode_gNB_ID_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-UP-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_gNB_ID_specs_1 = { - sizeof(struct GlobalKPMnode_gNB_ID), - offsetof(struct GlobalKPMnode_gNB_ID, _asn_ctx), - asn_MAP_GlobalKPMnode_gNB_ID_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_GlobalKPMnode_gNB_ID_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_gNB_ID = { - "GlobalKPMnode-gNB-ID", - "GlobalKPMnode-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalKPMnode_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalKPMnode_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalKPMnode_gNB_ID_1, - 3, /* Elements count */ - &asn_SPC_GlobalKPMnode_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.h deleted file mode 100644 index facef92..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-gNB-ID.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_gNB_ID_H_ -#define _GlobalKPMnode_gNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalgNB-ID.h" -#include "GNB-CU-UP-ID.h" -#include "GNB-DU-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalKPMnode-gNB-ID */ -typedef struct GlobalKPMnode_gNB_ID { - GlobalgNB_ID_t global_gNB_ID; - GNB_CU_UP_ID_t *gNB_CU_UP_ID; /* OPTIONAL */ - GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_gNB_ID_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_gNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.c deleted file mode 100644 index 299fb25..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-ng-eNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalKPMnode_ng_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ng_eNB_ID, global_ng_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalngeNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-ng-eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_ng_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-ng-eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_ng_eNB_ID_specs_1 = { - sizeof(struct GlobalKPMnode_ng_eNB_ID), - offsetof(struct GlobalKPMnode_ng_eNB_ID, _asn_ctx), - asn_MAP_GlobalKPMnode_ng_eNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ng_eNB_ID = { - "GlobalKPMnode-ng-eNB-ID", - "GlobalKPMnode-ng-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalKPMnode_ng_eNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalKPMnode_ng_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.h deleted file mode 100644 index 9ad8057..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalKPMnode-ng-eNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_ng_eNB_ID_H_ -#define _GlobalKPMnode_ng_eNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalngeNB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalKPMnode-ng-eNB-ID */ -typedef struct GlobalKPMnode_ng_eNB_ID { - GlobalngeNB_ID_t global_ng_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_ng_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ng_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_ng_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_ng_eNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_ng_eNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.c deleted file mode 100644 index f113921..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "GlobalRIC-ID.h" - -static int -memb_ric_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_ric_ID_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_GlobalRIC_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, ric_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_ric_ID_constr_3, memb_ric_ID_constraint_1 }, - 0, 0, /* No default value */ - "ric-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalRIC_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalRIC_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-ID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_GlobalRIC_ID_specs_1 = { - sizeof(struct GlobalRIC_ID), - offsetof(struct GlobalRIC_ID, _asn_ctx), - asn_MAP_GlobalRIC_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID = { - "GlobalRIC-ID", - "GlobalRIC-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalRIC_ID_tags_1, - sizeof(asn_DEF_GlobalRIC_ID_tags_1) - /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalRIC_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalRIC_ID_tags_1) - /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalRIC_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalRIC_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.h deleted file mode 100644 index c1ab6be..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalRIC-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _GlobalRIC_ID_H_ -#define _GlobalRIC_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "BIT_STRING.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalRIC-ID */ -typedef struct GlobalRIC_ID { - PLMN_Identity_t pLMN_Identity; - BIT_STRING_t ric_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalRIC_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalRIC_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.c deleted file mode 100644 index 07f8116..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalenGNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_ENGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalenGNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalenGNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1 = { - sizeof(struct GlobalenGNB_ID), - offsetof(struct GlobalenGNB_ID, _asn_ctx), - asn_MAP_GlobalenGNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID = { - "GlobalenGNB-ID", - "GlobalenGNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalenGNB_ID_tags_1, - sizeof(asn_DEF_GlobalenGNB_ID_tags_1) - /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalenGNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalenGNB_ID_tags_1) - /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalenGNB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalenGNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.h deleted file mode 100644 index 1e254a7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalenGNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalenGNB_ID_H_ -#define _GlobalenGNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "ENGNB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalenGNB-ID */ -typedef struct GlobalenGNB_ID { - PLMN_Identity_t pLMN_Identity; - ENGNB_ID_t gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalenGNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalenGNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.c deleted file mode 100644 index bfcc098..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalgNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, plmn_id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "plmn-id" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, gnb_id), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_GNB_ID_Choice, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gnb-id" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalgNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalgNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gnb-id */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1 = { - sizeof(struct GlobalgNB_ID), - offsetof(struct GlobalgNB_ID, _asn_ctx), - asn_MAP_GlobalgNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID = { - "GlobalgNB-ID", - "GlobalgNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalgNB_ID_tags_1, - sizeof(asn_DEF_GlobalgNB_ID_tags_1) - /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalgNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalgNB_ID_tags_1) - /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalgNB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalgNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.h deleted file mode 100644 index e31846d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalgNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalgNB_ID_H_ -#define _GlobalgNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "GNB-ID-Choice.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalgNB-ID */ -typedef struct GlobalgNB_ID { - PLMN_Identity_t plmn_id; - GNB_ID_Choice_t gnb_id; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalgNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalgNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.c deleted file mode 100644 index d220e9a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalngeNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, plmn_id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "plmn-id" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, enb_id), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_ENB_ID_Choice, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "enb-id" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalngeNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalngeNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* enb-id */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1 = { - sizeof(struct GlobalngeNB_ID), - offsetof(struct GlobalngeNB_ID, _asn_ctx), - asn_MAP_GlobalngeNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID = { - "GlobalngeNB-ID", - "GlobalngeNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalngeNB_ID_tags_1, - sizeof(asn_DEF_GlobalngeNB_ID_tags_1) - /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalngeNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalngeNB_ID_tags_1) - /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalngeNB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalngeNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.h deleted file mode 100644 index e8246ca..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/GlobalngeNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalngeNB_ID_H_ -#define _GlobalngeNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "ENB-ID-Choice.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalngeNB-ID */ -typedef struct GlobalngeNB_ID { - PLMN_Identity_t plmn_id; - ENB_ID_Choice_t enb_id; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalngeNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalngeNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.c deleted file mode 100644 index 2a2f4d7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.c +++ /dev/null @@ -1,1735 +0,0 @@ -/*- - * Copyright (c) 2003-2014 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* Encoder and decoder of a primitive type */ -#include - -/* - * INTEGER basic type description. - */ -static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_INTEGER = { - INTEGER_free, - INTEGER_print, - INTEGER_compare, - ber_decode_primitive, - INTEGER_encode_der, - INTEGER_decode_xer, - INTEGER_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - INTEGER_decode_oer, /* OER decoder */ - INTEGER_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - INTEGER_decode_uper, /* Unaligned PER decoder */ - INTEGER_encode_uper, /* Unaligned PER encoder */ - INTEGER_decode_aper, /* Aligned PER decoder */ - INTEGER_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - INTEGER_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_INTEGER = { - "INTEGER", - "INTEGER", - &asn_OP_INTEGER, - asn_DEF_INTEGER_tags, - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - asn_DEF_INTEGER_tags, /* Same as above */ - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Encode INTEGER type using DER. - */ -asn_enc_rval_t -INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t rval; - INTEGER_t effective_integer; - - ASN_DEBUG("%s %s as INTEGER (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - /* - * Canonicalize integer in the buffer. - * (Remove too long sign extension, remove some first 0x00 bytes) - */ - if(st->buf) { - uint8_t *buf = st->buf; - uint8_t *end1 = buf + st->size - 1; - int shift; - - /* Compute the number of superfluous leading bytes */ - for(; buf < end1; buf++) { - /* - * If the contents octets of an integer value encoding - * consist of more than one octet, then the bits of the - * first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - switch(*buf) { - case 0x00: if((buf[1] & 0x80) == 0) - continue; - break; - case 0xff: if((buf[1] & 0x80)) - continue; - break; - } - break; - } - - /* Remove leading superfluous bytes from the integer */ - shift = buf - st->buf; - if(shift) { - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - unconst.c_buf = st->buf; - effective_integer.buf = unconst.nc_buf + shift; - effective_integer.size = st->size - shift; - - st = &effective_integer; - } - } - - rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); - if(rval.structure_ptr == &effective_integer) { - rval.structure_ptr = sptr; - } - return rval; -} - -static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( - const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop); - -/* - * INTEGER specific human-readable output. - */ -static ssize_t -INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; - uint8_t *buf = st->buf; - uint8_t *buf_end = st->buf + st->size; - intmax_t value; - ssize_t wrote = 0; - char *p; - int ret; - - if(specs && specs->field_unsigned) - ret = asn_INTEGER2umax(st, (uintmax_t *)&value); - else - ret = asn_INTEGER2imax(st, &value); - - /* Simple case: the integer size is small */ - if(ret == 0) { - const asn_INTEGER_enum_map_t *el; - el = (value >= 0 || !specs || !specs->field_unsigned) - ? INTEGER_map_value2enum(specs, value) : 0; - if(el) { - if(plainOrXER == 0) - return asn__format_to_callback(cb, app_key, - "%" ASN_PRIdMAX " (%s)", value, el->enum_name); - else - return asn__format_to_callback(cb, app_key, - "<%s/>", el->enum_name); - } else if(plainOrXER && specs && specs->strict_enumeration) { - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } else { - return asn__format_to_callback(cb, app_key, - (specs && specs->field_unsigned) - ? "%" ASN_PRIuMAX - : "%" ASN_PRIdMAX, - value); - } - } else if(plainOrXER && specs && specs->strict_enumeration) { - /* - * Here and earlier, we cannot encode the ENUMERATED values - * if there is no corresponding identifier. - */ - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } - - /* Output in the long xx:yy:zz... format */ - /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ - for(p = scratch; buf < buf_end; buf++) { - const char * const h2c = "0123456789ABCDEF"; - if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { - /* Flush buffer */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - wrote += p - scratch; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x3a; /* ":" */ - } - if(p != scratch) - p--; /* Remove the last ":" */ - - wrote += p - scratch; - return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; -} - -/* - * INTEGER specific human-readable output. - */ -int -INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - ssize_t ret; - - (void)ilevel; - - if(!st || !st->buf) - ret = cb("", 8, app_key); - else - ret = INTEGER__dump(td, st, cb, app_key, 0); - - return (ret < 0) ? -1 : 0; -} - -struct e2v_key { - const char *start; - const char *stop; - const asn_INTEGER_enum_map_t *vemap; - const unsigned int *evmap; -}; -static int -INTEGER__compar_enum2value(const void *kp, const void *am) { - const struct e2v_key *key = (const struct e2v_key *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - const char *ptr, *end, *name; - - /* Remap the element (sort by different criterion) */ - el = key->vemap + key->evmap[el - key->vemap]; - - /* Compare strings */ - for(ptr = key->start, end = key->stop, name = el->enum_name; - ptr < end; ptr++, name++) { - if(*ptr != *name || !*name) - return *(const unsigned char *)ptr - - *(const unsigned char *)name; - } - return name[0] ? -1 : 0; -} - -static const asn_INTEGER_enum_map_t * -INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop) { - const asn_INTEGER_enum_map_t *el_found; - int count = specs ? specs->map_count : 0; - struct e2v_key key; - const char *lp; - - if(!count) return NULL; - - /* Guaranteed: assert(lstart < lstop); */ - /* Figure out the tag name */ - for(lstart++, lp = lstart; lp < lstop; lp++) { - switch(*lp) { - case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ - case 0x2f: /* '/' */ case 0x3e: /* '>' */ - break; - default: - continue; - } - break; - } - if(lp == lstop) return NULL; /* No tag found */ - lstop = lp; - - key.start = lstart; - key.stop = lstop; - key.vemap = specs->value2enum; - key.evmap = specs->enum2value; - el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, - specs->value2enum, count, sizeof(specs->value2enum[0]), - INTEGER__compar_enum2value); - if(el_found) { - /* Remap enum2value into value2enum */ - el_found = key.vemap + key.evmap[el_found - key.vemap]; - } - return el_found; -} - -static int -INTEGER__compar_value2enum(const void *kp, const void *am) { - long a = *(const long *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - long b = el->nat_value; - if(a < b) return -1; - else if(a == b) return 0; - else return 1; -} - -const asn_INTEGER_enum_map_t * -INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { - int count = specs ? specs->map_count : 0; - if(!count) return 0; - return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, - count, sizeof(specs->value2enum[0]), - INTEGER__compar_value2enum); -} - -static int -INTEGER_st_prealloc(INTEGER_t *st, int min_size) { - void *p = MALLOC(min_size + 1); - if(p) { - void *b = st->buf; - st->size = 0; - st->buf = p; - FREEMEM(b); - return 0; - } else { - return -1; - } -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -static enum xer_pbd_rval -INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, - const void *chunk_buf, size_t chunk_size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - INTEGER_t *st = (INTEGER_t *)sptr; - intmax_t dec_value; - intmax_t hex_value = 0; - const char *lp; - const char *lstart = (const char *)chunk_buf; - const char *lstop = lstart + chunk_size; - enum { - ST_LEADSPACE, - ST_SKIPSPHEX, - ST_WAITDIGITS, - ST_DIGITS, - ST_DIGITS_TRAILSPACE, - ST_HEXDIGIT1, - ST_HEXDIGIT2, - ST_HEXDIGITS_TRAILSPACE, - ST_HEXCOLON, - ST_END_ENUM, - ST_UNEXPECTED - } state = ST_LEADSPACE; - const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ - const char *dec_value_end = 0; - - if(chunk_size) - ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", - (long)chunk_size, *lstart, lstop[-1]); - - if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) - return XPBD_SYSTEM_FAILURE; - - /* - * We may have received a tag here. It will be processed inline. - * Use strtoul()-like code and serialize the result. - */ - for(lp = lstart; lp < lstop; lp++) { - int lv = *lp; - switch(lv) { - case 0x09: case 0x0a: case 0x0d: case 0x20: - switch(state) { - case ST_LEADSPACE: - case ST_DIGITS_TRAILSPACE: - case ST_HEXDIGITS_TRAILSPACE: - case ST_SKIPSPHEX: - continue; - case ST_DIGITS: - dec_value_end = lp; - state = ST_DIGITS_TRAILSPACE; - continue; - case ST_HEXCOLON: - state = ST_HEXDIGITS_TRAILSPACE; - continue; - default: - break; - } - break; - case 0x2d: /* '-' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x2b: /* '+' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: - switch(state) { - case ST_DIGITS: continue; - case ST_SKIPSPHEX: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = (lv - 0x30) << 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += (lv - 0x30); - state = ST_HEXCOLON; - st->buf[st->size++] = (uint8_t)hex_value; - continue; - case ST_HEXCOLON: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - dec_value = 0; - dec_value_start = lp; - /* FALL THROUGH */ - case ST_WAITDIGITS: - state = ST_DIGITS; - continue; - default: - break; - } - break; - case 0x3c: /* '<', start of XML encoded enumeration */ - if(state == ST_LEADSPACE) { - const asn_INTEGER_enum_map_t *el; - el = INTEGER_map_enum2value( - (const asn_INTEGER_specifics_t *) - td->specifics, lstart, lstop); - if(el) { - ASN_DEBUG("Found \"%s\" => %ld", - el->enum_name, el->nat_value); - dec_value = el->nat_value; - state = ST_END_ENUM; - lp = lstop - 1; - continue; - } - ASN_DEBUG("Unknown identifier for INTEGER"); - } - return XPBD_BROKEN_ENCODING; - case 0x3a: /* ':' */ - if(state == ST_HEXCOLON) { - /* This colon is expected */ - state = ST_HEXDIGIT1; - continue; - } else if(state == ST_DIGITS) { - /* The colon here means that we have - * decoded the first two hexadecimal - * places as a decimal value. - * Switch decoding mode. */ - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - } else { - ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); - break; - } - /* [A-Fa-f] */ - case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: - case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: - switch(state) { - case ST_SKIPSPHEX: - case ST_LEADSPACE: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - hex_value <<= 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - st->buf[st->size++] = (uint8_t)hex_value; - state = ST_HEXCOLON; - continue; - case ST_DIGITS: - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - default: - break; - } - break; - } - - /* Found extra non-numeric stuff */ - ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", - lv, (long)(lp - lstart)); - state = ST_UNEXPECTED; - break; - } - - switch(state) { - case ST_END_ENUM: - /* Got a complete and valid enumeration encoded as a tag. */ - break; - case ST_DIGITS: - dec_value_end = lstop; - /* FALL THROUGH */ - case ST_DIGITS_TRAILSPACE: - /* The last symbol encountered was a digit. */ - switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { - case ASN_STRTOX_OK: - if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { - break; - } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { - break; - } else { - /* - * We model INTEGER on long for XER, - * to avoid rewriting all the tests at once. - */ - ASN_DEBUG("INTEGER exceeds long range"); - } - /* Fall through */ - case ASN_STRTOX_ERROR_RANGE: - ASN_DEBUG("INTEGER decode %s hit range limit", td->name); - return XPBD_DECODER_LIMIT; - case ASN_STRTOX_ERROR_INVAL: - case ASN_STRTOX_EXPECT_MORE: - case ASN_STRTOX_EXTRA_DATA: - return XPBD_BROKEN_ENCODING; - } - break; - case ST_HEXCOLON: - case ST_HEXDIGITS_TRAILSPACE: - st->buf[st->size] = 0; /* Just in case termination */ - return XPBD_BODY_CONSUMED; - case ST_HEXDIGIT1: - case ST_HEXDIGIT2: - case ST_SKIPSPHEX: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - /* Content not found */ - return XPBD_NOT_BODY_IGNORE; - case ST_WAITDIGITS: - case ST_UNEXPECTED: - ASN_DEBUG("INTEGER: No useful digits (state %d)", state); - return XPBD_BROKEN_ENCODING; /* No digits */ - } - - /* - * Convert the result of parsing of enumeration or a straight - * decimal value into a BER representation. - */ - if(asn_imax2INTEGER(st, dec_value)) { - ASN_DEBUG("INTEGER decode %s conversion failed", td->name); - return XPBD_SYSTEM_FAILURE; - } - - return XPBD_BODY_CONSUMED; -} - -asn_dec_rval_t -INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return xer_decode_primitive(opt_codec_ctx, td, - sptr, sizeof(INTEGER_t), opt_mname, - buf_ptr, size, INTEGER__xer_body_decode); -} - -asn_enc_rval_t -INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t er = {0,0,0}; - - (void)ilevel; - (void)flags; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = INTEGER__dump(td, st, cb, app_key, 1); - if(er.encoded < 0) ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691-2008/11, #13.2.2, constrained whole number */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #11.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) - ASN__DECODE_FAILED; - - if(specs && specs->field_unsigned) { - unsigned long uvalue = 0; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - uvalue += ct->lower_bound; - if(asn_ulong2INTEGER(st, uvalue)) - ASN__DECODE_FAILED; - } else { - unsigned long uvalue = 0; - long svalue; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - if(per_long_range_unrebase(uvalue, ct->lower_bound, - ct->upper_bound, &svalue) - || asn_long2INTEGER(st, svalue)) { - ASN__DECODE_FAILED; - } - } - return rval; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len = 0; - void *p = NULL; - int ret = 0; - - /* Get the PER length */ - len = uper_get_length(pd, -1, 0, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value = 0; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_imax2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - - /* X.691-11/2008, #13.2.2, test if constrained whole number */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - /* #11.5.6 -> #11.3 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - if(specs && specs->field_unsigned) { - if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) - || ((unsigned long)value < (unsigned long)ct->lower_bound)) - || ((unsigned long)value > (unsigned long)ct->upper_bound) - ) { - ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", - value, ct->lower_bound, ct->upper_bound); - ASN__ENCODE_FAILED; - } - v = (unsigned long)value - (unsigned long)ct->lower_bound; - } else { - if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { - ASN__ENCODE_FAILED; - } - } - if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - int need_eom = 0; - ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; - } - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #10.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if (ct->range_bits > 16) { - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - int length = 0, i; - long value = 0; - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, - max_range_bytes, i); - - if ((length = per_get_few_bits(pd, i)) < 0) - ASN__DECODE_FAILED; - - /* X.691 #12.2.6 length determinant + lb (1) */ - length += 1; - ASN_DEBUG("Got length %d", length); - if (aper_get_align(pd) != 0) - ASN__DECODE_FAILED; - while (length--) { - int buf = per_get_few_bits(pd, 8); - if (buf < 0) - ASN__DECODE_FAILED; - value += (((long)buf) << (8 * length)); - } - - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_uint642INTEGER(st, (unsigned long)value) - : asn_int642INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } else { - long value = 0; - if (ct->range_bits < 8) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else if (ct->range_bits == 8) { - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else { - /* Align */ - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, 16); - if(value < 0) ASN__DECODE_STARVED; - } - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_ulong2INTEGER(st, value) - : asn_long2INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } - return rval; - } else { - ASN__DECODE_FAILED; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len; - void *p; - int ret; - - /* Get the PER length */ - len = aper_get_length(pd, -1, -1, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_long2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - - /* #10.5.6 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - - v = value - ct->lower_bound; - - /* #12 <= 8 -> alignment ? */ - if (ct->range_bits < 8) { - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits == 8) { - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits <= 16) { - /* Consume the bytes to align on octet */ - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x0000 | v, - 16)) - ASN__ENCODE_FAILED; - } else { - /* TODO: extend to >64 bits */ - int64_t v64 = v; - int i, j; - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - - for (j = sizeof(int64_t) -1; j != 0; j--) { - int64_t val; - val = v64 >> (j * 8); - if (val != 0) - break; - } - - /* Putting length in the minimum number of bits ex: 5 = 3bits */ - if (per_put_few_bits(po, j, i)) - ASN__ENCODE_FAILED; - - /* Consume the bits to align on octet */ - if (aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - /* Put the value */ - for (i = 0; i <= j; i++) { - if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) - ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - ssize_t mayEncode = aper_put_length(po, -1, end - buf); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - } - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -static intmax_t -asn__integer_convert(const uint8_t *b, const uint8_t *end) { - uintmax_t value; - - /* Perform the sign initialization */ - /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ - if((*b >> 7)) { - value = (uintmax_t)(-1); - } else { - value = 0; - } - - /* Conversion engine */ - for(; b < end; b++) { - value = (value << 8) | *b; - } - - return value; -} - -int -asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { - uint8_t *b, *end; - size_t size; - - /* Sanity checking */ - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - /* Cache the begin/end of the buffer */ - b = iptr->buf; /* Start of the INTEGER buffer */ - size = iptr->size; - end = b + size; /* Where to stop */ - - if(size > sizeof(intmax_t)) { - uint8_t *end1 = end - 1; - /* - * Slightly more advanced processing, - * able to process INTEGERs with >sizeof(intmax_t) bytes - * when the actual value is small, e.g. for intmax_t == int32_t - * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) - */ - /* Skip out the insignificant leading bytes */ - for(; b < end1; b++) { - switch(*b) { - case 0x00: if((b[1] & 0x80) == 0) continue; break; - case 0xff: if((b[1] & 0x80) != 0) continue; break; - } - break; - } - - size = end - b; - if(size > sizeof(intmax_t)) { - /* Still cannot fit the sizeof(intmax_t) */ - errno = ERANGE; - return -1; - } - } - - /* Shortcut processing of a corner case */ - if(end == b) { - *lptr = 0; - return 0; - } - - *lptr = asn__integer_convert(b, end); - return 0; -} - -/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ -int -asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { - uint8_t *b, *end; - uintmax_t value; - size_t size; - - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - b = iptr->buf; - size = iptr->size; - end = b + size; - - /* If all extra leading bytes are zeroes, ignore them */ - for(; size > sizeof(value); b++, size--) { - if(*b) { - /* Value won't fit into uintmax_t */ - errno = ERANGE; - return -1; - } - } - - /* Conversion engine */ - for(value = 0; b < end; b++) - value = (value << 8) | *b; - - *lptr = value; - return 0; -} - -int -asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= ((~(uintmax_t)0) >> 1)) { - return asn_imax2INTEGER(st, value); - } - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ - for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)(long *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -int -asn_INTEGER2long(const INTEGER_t *iptr, long *l) { - intmax_t v; - if(asn_INTEGER2imax(iptr, &v) == 0) { - if(v < LONG_MIN || v > LONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { - uintmax_t v; - if(asn_INTEGER2umax(iptr, &v) == 0) { - if(v > ULONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_long2INTEGER(INTEGER_t *st, long value) { - return asn_imax2INTEGER(st, value); -} - -int -asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { - return asn_imax2INTEGER(st, value); -} - - -int -asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= INT64_MAX) - return asn_int642INTEGER(st, value); - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; - for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_int642INTEGER(INTEGER_t *st, int64_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtol/strtoimax(3). - */ -enum asn_strtox_result_e -asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { - int sign = 1; - intmax_t value; - -#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) - const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; - intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; -#undef ASN1_INTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - last_digit_max++; - sign = -1; - /* FALL THROUGH */ - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - if(sign > 0) { - value = value * 10 + d; - } else { - sign = 1; - value = -value * 10 - d; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *intp = sign * value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *intp = sign * value; - return ASN_STRTOX_OK; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtoul/strtoumax(3). - */ -enum asn_strtox_result_e -asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { - uintmax_t value; - -#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) - const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; - uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; -#undef ASN1_UINTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - return ASN_STRTOX_ERROR_INVAL; - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - unsigned int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - value = value * 10 + d; - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *uintp = value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *uintp = value; - return ASN_STRTOX_OK; -} - -enum asn_strtox_result_e -asn_strtol_lim(const char *str, const char **end, long *lp) { - intmax_t value; - switch(asn_strtoimax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -enum asn_strtox_result_e -asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { - uintmax_t value; - switch(asn_strtoumax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -int -INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const INTEGER_t *a = aptr; - const INTEGER_t *b = bptr; - - (void)td; - - if(a && b) { - if(a->size && b->size) { - int sign_a = (a->buf[0] & 0x80) ? -1 : 1; - int sign_b = (b->buf[0] & 0x80) ? -1 : 1; - - if(sign_a < sign_b) return -1; - if(sign_a > sign_b) return 1; - - /* The shortest integer wins, unless comparing negatives */ - if(a->size < b->size) { - return -1 * sign_a; - } else if(a->size > b->size) { - return 1 * sign_b; - } - - return sign_a * memcmp(a->buf, b->buf, a->size); - } else if(a->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (1) * sign; - } else if(b->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (-1) * sign; - } else { - return 0; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } - -} - -asn_random_fill_result_t -INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - INTEGER_t *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (INTEGER_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - if(asn_imax2INTEGER(st, value)) { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return result_failed; - } else { - *sptr = st; - result_ok.length = st->size; - return result_ok; - } -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.h deleted file mode 100644 index f776c07..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER.h +++ /dev/null @@ -1,108 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER_oer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER_oer.c deleted file mode 100644 index 110689b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/INTEGER_oer.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -asn_dec_rval_t -INTEGER_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = {RC_OK, 0}; - INTEGER_t *st = (INTEGER_t *)*sptr; - struct asn_oer_constraint_number_s ct = {0, 0}; - size_t req_bytes; - - (void)opt_codec_ctx; - (void)specs; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - - if(!constraints) constraints = td->encoding_constraints.oer_constraints; - if(constraints) ct = constraints->value; - - if(ct.width) { - req_bytes = ct.width; - } else { - /* No lower bound and no upper bound, effectively */ - - ssize_t consumed = oer_fetch_length(ptr, size, &req_bytes); - if(consumed == 0) { - ASN__DECODE_STARVED; - } else if(consumed == -1) { - ASN__DECODE_FAILED; - } - rval.consumed += consumed; - ptr = (const char *)ptr + consumed; - size -= consumed; - } - - if(req_bytes > size) { - ASN__DECODE_STARVED; - } - - if(ct.positive) { - /* X.969 08/2015 10.2(a) */ - unsigned msb; /* Most significant bit */ - size_t useful_size; - - /* Check most significant bit */ - msb = *(const uint8_t *)ptr >> 7; /* yields 0 or 1 */ - useful_size = msb + req_bytes; - st->buf = (uint8_t *)MALLOC(useful_size + 1); - if(!st->buf) { - ASN__DECODE_FAILED; - } - - /* - * Record a large unsigned in a way not to confuse it - * with signed value. - */ - st->buf[0] = '\0'; - memcpy(st->buf + msb, ptr, req_bytes); - st->buf[useful_size] = '\0'; /* Just in case, 0-terminate */ - st->size = useful_size; - - rval.consumed += req_bytes; - return rval; - } else { - /* X.969 08/2015 10.2(b) */ - st->buf = (uint8_t *)MALLOC(req_bytes + 1); - if(!st->buf) { - ASN__DECODE_FAILED; - } - - memcpy(st->buf, ptr, req_bytes); - st->buf[req_bytes] = '\0'; /* Just in case, 0-terminate */ - st->size = req_bytes; - - rval.consumed += req_bytes; - return rval; - } -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -INTEGER_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = sptr; - asn_enc_rval_t er = {0,0,0}; - struct asn_oer_constraint_number_s ct = {0, 0}; - const uint8_t *buf; - const uint8_t *end; - size_t useful_bytes; - size_t req_bytes = 0; - int sign = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.oer_constraints; - if(constraints) ct = constraints->value; - - er.encoded = 0; - - buf = st->buf; - end = buf + st->size; - - sign = (buf && buf < end) ? buf[0] & 0x80 : 0; - - /* Ignore 9 leading zeroes or ones */ - if(ct.positive) { - if(sign) { - /* The value given is a signed value. Can't proceed. */ - ASN__ENCODE_FAILED; - } - /* Remove leading zeros. */ - for(; buf + 1 < end; buf++) { - if(buf[0] != 0x0) break; - } - } else { - for(; buf + 1 < end; buf++) { - if(buf[0] == 0x0 && (buf[1] & 0x80) == 0) { - continue; - } else if(buf[0] == 0xff && (buf[1] & 0x80) != 0) { - continue; - } - break; - } - } - - useful_bytes = end - buf; - if(ct.width) { - req_bytes = ct.width; - } else { - ssize_t r = oer_serialize_length(useful_bytes, cb, app_key); - if(r < 0) { - ASN__ENCODE_FAILED; - } - er.encoded += r; - req_bytes = useful_bytes; - } - - if(req_bytes < useful_bytes) { - ASN__ENCODE_FAILED; - } - - er.encoded += req_bytes; - - for(; req_bytes > useful_bytes; req_bytes--) { - if(cb(sign?"\xff":"\0", 1, app_key) < 0) { - ASN__ENCODE_FAILED; - } - } - - if(cb(buf, useful_bytes, app_key) < 0) { - ASN__ENCODE_FAILED; - } - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/InitiatingMessage.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/InitiatingMessage.c deleted file mode 100644 index de67caf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/InitiatingMessage.c +++ /dev/null @@ -1,389 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "InitiatingMessage.h" - -static const long asn_VAL_1_id_RICsubscription = 8; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_2_id_RICsubscriptionDelete = 9; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_3_id_RICserviceUpdate = 7; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_4_id_RICcontrol = 4; -static const long asn_VAL_4_reject = 0; -static const long asn_VAL_5_id_E2setup = 1; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_6_id_Reset = 3; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_7_id_RICindication = 5; -static const long asn_VAL_7_ignore = 1; -static const long asn_VAL_8_id_RICserviceQuery = 6; -static const long asn_VAL_8_ignore = 1; -static const long asn_VAL_9_id_ErrorIndication = 2; -static const long asn_VAL_9_ignore = 1; -static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_Reset }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICindication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_RICserviceQuery }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_ErrorIndication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore } -}; -static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { - { 9, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } -}; -static int -memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_InitiatingMessage_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 4; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_InitiatingMessage_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 0; /* &InitiatingMessage */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceUpdate), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdate, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceUpdate" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICcontrolRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2setupRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2setupRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResetRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ResetRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICindication), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICindication, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindication" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceQuery), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceQuery, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceQuery" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ErrorIndication), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ErrorIndication, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ErrorIndication" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 8 }, /* RICsubscriptionRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 7 }, /* RICsubscriptionDeleteRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 6 }, /* RICserviceUpdate */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 5 }, /* RICcontrolRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 4 }, /* E2setupRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 3 }, /* ResetRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 2 }, /* RICindication */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 1 }, /* RICserviceQuery */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 0 } /* ErrorIndication */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct InitiatingMessage__value), - offsetof(struct InitiatingMessage__value, _asn_ctx), - offsetof(struct InitiatingMessage__value, present), - sizeof(((struct InitiatingMessage__value *)0)->present), - asn_MAP_value_tag2el_4, - 9, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 9, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_InitiatingMessage_criticality_type, - { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_InitiatingMessage_value_type, - { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = { - sizeof(struct InitiatingMessage), - offsetof(struct InitiatingMessage, _asn_ctx), - asn_MAP_InitiatingMessage_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = { - "InitiatingMessage", - "InitiatingMessage", - &asn_OP_SEQUENCE, - asn_DEF_InitiatingMessage_tags_1, - sizeof(asn_DEF_InitiatingMessage_tags_1) - /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ - asn_DEF_InitiatingMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_InitiatingMessage_tags_1) - /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_InitiatingMessage_1, - 3, /* Elements count */ - &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/InitiatingMessage.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/InitiatingMessage.h deleted file mode 100644 index a8a01f6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/InitiatingMessage.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _InitiatingMessage_H_ -#define _InitiatingMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICsubscriptionRequest.h" -#include "RICsubscriptionResponse.h" -#include "RICsubscriptionFailure.h" -#include "RICsubscriptionDeleteRequest.h" -#include "RICsubscriptionDeleteResponse.h" -#include "RICsubscriptionDeleteFailure.h" -#include "RICserviceUpdate.h" -#include "RICserviceUpdateAcknowledge.h" -#include "RICserviceUpdateFailure.h" -#include "RICcontrolRequest.h" -#include "RICcontrolAcknowledge.h" -#include "RICcontrolFailure.h" -#include "E2setupRequest.h" -#include "E2setupResponse.h" -#include "E2setupFailure.h" -#include "ResetRequest.h" -#include "ResetResponse.h" -#include "RICindication.h" -#include "RICserviceQuery.h" -#include "ErrorIndication.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum InitiatingMessage__value_PR { - InitiatingMessage__value_PR_NOTHING, /* No components present */ - InitiatingMessage__value_PR_RICsubscriptionRequest, - InitiatingMessage__value_PR_RICsubscriptionDeleteRequest, - InitiatingMessage__value_PR_RICserviceUpdate, - InitiatingMessage__value_PR_RICcontrolRequest, - InitiatingMessage__value_PR_E2setupRequest, - InitiatingMessage__value_PR_ResetRequest, - InitiatingMessage__value_PR_RICindication, - InitiatingMessage__value_PR_RICserviceQuery, - InitiatingMessage__value_PR_ErrorIndication -} InitiatingMessage__value_PR; - -/* InitiatingMessage */ -typedef struct InitiatingMessage { - ProcedureCode_t procedureCode; - Criticality_t criticality; - struct InitiatingMessage__value { - InitiatingMessage__value_PR present; - union InitiatingMessage__value_u { - RICsubscriptionRequest_t RICsubscriptionRequest; - RICsubscriptionDeleteRequest_t RICsubscriptionDeleteRequest; - RICserviceUpdate_t RICserviceUpdate; - RICcontrolRequest_t RICcontrolRequest; - E2setupRequest_t E2setupRequest; - ResetRequest_t ResetRequest; - RICindication_t RICindication; - RICserviceQuery_t RICserviceQuery; - ErrorIndication_t ErrorIndication; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} InitiatingMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage; -extern asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1; -extern asn_TYPE_member_t asn_MBR_InitiatingMessage_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _InitiatingMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Makefile.am.asn1convert b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Makefile.am.asn1convert deleted file mode 100644 index c1bec19..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Makefile.am.asn1convert +++ /dev/null @@ -1,14 +0,0 @@ -include Makefile.am.libasncodec - -bin_PROGRAMS += asn1convert -asn1convert_CFLAGS = $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION -asn1convert_CPPFLAGS = -I$(top_srcdir)/ -asn1convert_LDADD = libasncodec.la -asn1convert_SOURCES = \ - converter-example.c\ - pdu_collection.c -regen: regenerate-from-asn1-source - -regenerate-from-asn1-source: - asn1c -fcompound-names /home/rshacham/e2sm-kpm-v01.02.asn - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Makefile.am.libasncodec b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Makefile.am.libasncodec deleted file mode 100644 index 8abd4f1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Makefile.am.libasncodec +++ /dev/null @@ -1,240 +0,0 @@ -ASN_MODULE_SRCS= \ - GlobalKPMnode-ID.c \ - GlobalKPMnode-gNB-ID.c \ - GlobalgNB-ID.c \ - GNB-CU-UP-ID.c \ - GNB-DU-ID.c \ - GNB-ID-Choice.c \ - GlobalKPMnode-en-gNB-ID.c \ - GlobalenGNB-ID.c \ - ENGNB-ID.c \ - GlobalKPMnode-ng-eNB-ID.c \ - GlobalngeNB-ID.c \ - ENB-ID-Choice.c \ - GlobalKPMnode-eNB-ID.c \ - GlobalENB-ID.c \ - ENB-ID.c \ - NRCGI.c \ - PLMN-Identity.c \ - NRCellIdentity.c \ - SNSSAI.c \ - C-RNTI.c \ - RIC-Style-Type.c \ - RIC-Style-Name.c \ - RIC-Format-Type.c \ - E2SM-KPM-EventTriggerDefinition.c \ - E2SM-KPM-EventTriggerDefinition-Format1.c \ - E2SM-KPM-ActionDefinition.c \ - E2SM-KPM-IndicationHeader.c \ - E2SM-KPM-IndicationHeader-Format1.c \ - E2SM-KPM-IndicationMessage.c \ - E2SM-KPM-IndicationMessage-Format1.c \ - PM-Containers-List.c \ - E2SM-KPM-RANfunction-Description.c \ - NI-Type.c \ - RAN-Container.c \ - Timestamp.c \ - Trigger-ConditionIE-Item.c \ - RT-Period-IE.c \ - RANcallProcess-ID-string.c \ - RANfunction-Name.c \ - RIC-EventTriggerStyle-List.c \ - RIC-ReportStyle-List.c \ - PF-Container.c \ - GNB-Name.c \ - GNB-CU-CP-Name.c \ - GNB-DU-Name.c \ - GNB-CU-UP-Name.c \ - UE-Report-Type.c \ - ODU-PF-Container.c \ - CellResourceReportListItem.c \ - ServedPlmnPerCellListItem.c \ - FGC-DU-PM-Container.c \ - SlicePerPlmnPerCellListItem.c \ - FQIPERSlicesPerPlmnPerCellListItem.c \ - EPC-DU-PM-Container.c \ - PerQCIReportListItem.c \ - DU-Usage-Report-Per-UE.c \ - DU-Usage-Report-CellResourceReportItem.c \ - DU-Usage-Report-UeResourceReportItem.c \ - OCUCP-PF-Container.c \ - CU-CP-Usage-Report-Per-UE.c \ - CU-CP-Usage-Report-CellResourceReportItem.c \ - CU-CP-Usage-Report-UeResourceReportItem.c \ - OCUUP-PF-Container.c \ - PF-ContainerListItem.c \ - CUUPMeasurement-Container.c \ - PlmnID-List.c \ - FGC-CUUP-PM-Format.c \ - SliceToReportListItem.c \ - FQIPERSlicesPerPlmnListItem.c \ - EPC-CUUP-PM-Format.c \ - PerQCIReportListItemFormat.c \ - CU-UP-Usage-Report-Per-UE.c \ - CU-UP-Usage-Report-CellResourceReportItem.c \ - CU-UP-Usage-Report-UeResourceReportItem.c - -ASN_MODULE_HDRS= \ - GlobalKPMnode-ID.h \ - GlobalKPMnode-gNB-ID.h \ - GlobalgNB-ID.h \ - GNB-CU-UP-ID.h \ - GNB-DU-ID.h \ - GNB-ID-Choice.h \ - GlobalKPMnode-en-gNB-ID.h \ - GlobalenGNB-ID.h \ - ENGNB-ID.h \ - GlobalKPMnode-ng-eNB-ID.h \ - GlobalngeNB-ID.h \ - ENB-ID-Choice.h \ - GlobalKPMnode-eNB-ID.h \ - GlobalENB-ID.h \ - ENB-ID.h \ - NRCGI.h \ - PLMN-Identity.h \ - NRCellIdentity.h \ - SNSSAI.h \ - C-RNTI.h \ - RIC-Style-Type.h \ - RIC-Style-Name.h \ - RIC-Format-Type.h \ - E2SM-KPM-EventTriggerDefinition.h \ - E2SM-KPM-EventTriggerDefinition-Format1.h \ - E2SM-KPM-ActionDefinition.h \ - E2SM-KPM-IndicationHeader.h \ - E2SM-KPM-IndicationHeader-Format1.h \ - E2SM-KPM-IndicationMessage.h \ - E2SM-KPM-IndicationMessage-Format1.h \ - PM-Containers-List.h \ - E2SM-KPM-RANfunction-Description.h \ - NI-Type.h \ - RAN-Container.h \ - Timestamp.h \ - Trigger-ConditionIE-Item.h \ - RT-Period-IE.h \ - RANcallProcess-ID-string.h \ - RANfunction-Name.h \ - RIC-EventTriggerStyle-List.h \ - RIC-ReportStyle-List.h \ - PF-Container.h \ - GNB-Name.h \ - GNB-CU-CP-Name.h \ - GNB-DU-Name.h \ - GNB-CU-UP-Name.h \ - UE-Report-Type.h \ - ODU-PF-Container.h \ - CellResourceReportListItem.h \ - ServedPlmnPerCellListItem.h \ - FGC-DU-PM-Container.h \ - SlicePerPlmnPerCellListItem.h \ - FQIPERSlicesPerPlmnPerCellListItem.h \ - EPC-DU-PM-Container.h \ - PerQCIReportListItem.h \ - DU-Usage-Report-Per-UE.h \ - DU-Usage-Report-CellResourceReportItem.h \ - DU-Usage-Report-UeResourceReportItem.h \ - OCUCP-PF-Container.h \ - CU-CP-Usage-Report-Per-UE.h \ - CU-CP-Usage-Report-CellResourceReportItem.h \ - CU-CP-Usage-Report-UeResourceReportItem.h \ - OCUUP-PF-Container.h \ - PF-ContainerListItem.h \ - CUUPMeasurement-Container.h \ - PlmnID-List.h \ - FGC-CUUP-PM-Format.h \ - SliceToReportListItem.h \ - FQIPERSlicesPerPlmnListItem.h \ - EPC-CUUP-PM-Format.h \ - PerQCIReportListItemFormat.h \ - CU-UP-Usage-Report-Per-UE.h \ - CU-UP-Usage-Report-CellResourceReportItem.h \ - CU-UP-Usage-Report-UeResourceReportItem.h - -ASN_MODULE_HDRS+=OPEN_TYPE.h -ASN_MODULE_SRCS+=OPEN_TYPE.c -ASN_MODULE_HDRS+=constr_CHOICE.h -ASN_MODULE_HDRS+=INTEGER.h -ASN_MODULE_SRCS+=INTEGER.c -ASN_MODULE_HDRS+=NativeEnumerated.h -ASN_MODULE_SRCS+=NativeEnumerated.c -ASN_MODULE_HDRS+=NativeInteger.h -ASN_MODULE_SRCS+=NativeInteger.c -ASN_MODULE_HDRS+=PrintableString.h -ASN_MODULE_SRCS+=PrintableString.c -ASN_MODULE_HDRS+=OCTET_STRING.h -ASN_MODULE_HDRS+=asn_SEQUENCE_OF.h -ASN_MODULE_SRCS+=asn_SEQUENCE_OF.c -ASN_MODULE_HDRS+=asn_SET_OF.h -ASN_MODULE_SRCS+=asn_SET_OF.c -ASN_MODULE_SRCS+=constr_CHOICE.c -ASN_MODULE_HDRS+=constr_SEQUENCE.h -ASN_MODULE_SRCS+=constr_SEQUENCE.c -ASN_MODULE_HDRS+=constr_SEQUENCE_OF.h -ASN_MODULE_SRCS+=constr_SEQUENCE_OF.c -ASN_MODULE_HDRS+=constr_SET_OF.h -ASN_MODULE_SRCS+=constr_SET_OF.c -ASN_MODULE_HDRS+=asn_application.h -ASN_MODULE_SRCS+=asn_application.c -ASN_MODULE_HDRS+=asn_ioc.h -ASN_MODULE_HDRS+=asn_system.h -ASN_MODULE_HDRS+=asn_codecs.h -ASN_MODULE_HDRS+=asn_internal.h -ASN_MODULE_SRCS+=asn_internal.c -ASN_MODULE_HDRS+=asn_random_fill.h -ASN_MODULE_SRCS+=asn_random_fill.c -ASN_MODULE_HDRS+=asn_bit_data.h -ASN_MODULE_SRCS+=asn_bit_data.c -ASN_MODULE_SRCS+=OCTET_STRING.c -ASN_MODULE_HDRS+=BIT_STRING.h -ASN_MODULE_SRCS+=BIT_STRING.c -ASN_MODULE_SRCS+=asn_codecs_prim.c -ASN_MODULE_HDRS+=asn_codecs_prim.h -ASN_MODULE_HDRS+=ber_tlv_length.h -ASN_MODULE_SRCS+=ber_tlv_length.c -ASN_MODULE_HDRS+=ber_tlv_tag.h -ASN_MODULE_SRCS+=ber_tlv_tag.c -ASN_MODULE_HDRS+=ber_decoder.h -ASN_MODULE_SRCS+=ber_decoder.c -ASN_MODULE_HDRS+=der_encoder.h -ASN_MODULE_SRCS+=der_encoder.c -ASN_MODULE_HDRS+=constr_TYPE.h -ASN_MODULE_SRCS+=constr_TYPE.c -ASN_MODULE_HDRS+=constraints.h -ASN_MODULE_SRCS+=constraints.c -ASN_MODULE_HDRS+=xer_support.h -ASN_MODULE_SRCS+=xer_support.c -ASN_MODULE_HDRS+=xer_decoder.h -ASN_MODULE_SRCS+=xer_decoder.c -ASN_MODULE_HDRS+=xer_encoder.h -ASN_MODULE_SRCS+=xer_encoder.c -ASN_MODULE_HDRS+=per_support.h -ASN_MODULE_SRCS+=per_support.c -ASN_MODULE_HDRS+=per_decoder.h -ASN_MODULE_SRCS+=per_decoder.c -ASN_MODULE_HDRS+=per_encoder.h -ASN_MODULE_SRCS+=per_encoder.c -ASN_MODULE_HDRS+=per_opentype.h -ASN_MODULE_SRCS+=per_opentype.c -ASN_MODULE_HDRS+=oer_decoder.h -ASN_MODULE_HDRS+=oer_encoder.h -ASN_MODULE_HDRS+=oer_support.h -ASN_MODULE_SRCS+=oer_decoder.c -ASN_MODULE_SRCS+=oer_encoder.c -ASN_MODULE_SRCS+=oer_support.c -ASN_MODULE_SRCS+=OPEN_TYPE_oer.c -ASN_MODULE_SRCS+=INTEGER_oer.c -ASN_MODULE_SRCS+=BIT_STRING_oer.c -ASN_MODULE_SRCS+=OCTET_STRING_oer.c -ASN_MODULE_SRCS+=NativeInteger_oer.c -ASN_MODULE_SRCS+=NativeEnumerated_oer.c -ASN_MODULE_SRCS+=constr_CHOICE_oer.c -ASN_MODULE_SRCS+=constr_SEQUENCE_oer.c -ASN_MODULE_SRCS+=constr_SET_OF_oer.c - -ASN_MODULE_CFLAGS= - -lib_LTLIBRARIES+=libasncodec.la -libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) -libasncodec_la_CPPFLAGS=-I$(top_srcdir)/ -libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) -libasncodec_la_LDFLAGS=-lm diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.c deleted file mode 100644 index 1162fd8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "NI-Type.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_NI_Type_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_NI_Type_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_NI_Type_value2enum_1[] = { - { 0, 4, "x2-u" }, - { 1, 4, "xn-u" }, - { 2, 4, "f1-u" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_NI_Type_enum2value_1[] = { - 2, /* f1-u(2) */ - 0, /* x2-u(0) */ - 1 /* xn-u(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_NI_Type_specs_1 = { - asn_MAP_NI_Type_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_NI_Type_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_NI_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_NI_Type = { - "NI-Type", - "NI-Type", - &asn_OP_NativeEnumerated, - asn_DEF_NI_Type_tags_1, - sizeof(asn_DEF_NI_Type_tags_1) - /sizeof(asn_DEF_NI_Type_tags_1[0]), /* 1 */ - asn_DEF_NI_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_NI_Type_tags_1) - /sizeof(asn_DEF_NI_Type_tags_1[0]), /* 1 */ - { &asn_OER_type_NI_Type_constr_1, &asn_PER_type_NI_Type_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_NI_Type_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.h deleted file mode 100644 index c696a44..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NI-Type.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _NI_Type_H_ -#define _NI_Type_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum NI_Type { - NI_Type_x2_u = 0, - NI_Type_xn_u = 1, - NI_Type_f1_u = 2 - /* - * Enumeration is extensible - */ -} e_NI_Type; - -/* NI-Type */ -typedef long NI_Type_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_NI_Type_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_NI_Type; -extern const asn_INTEGER_specifics_t asn_SPC_NI_Type_specs_1; -asn_struct_free_f NI_Type_free; -asn_struct_print_f NI_Type_print; -asn_constr_check_f NI_Type_constraint; -ber_type_decoder_f NI_Type_decode_ber; -der_type_encoder_f NI_Type_encode_der; -xer_type_decoder_f NI_Type_decode_xer; -xer_type_encoder_f NI_Type_encode_xer; -oer_type_decoder_f NI_Type_decode_oer; -oer_type_encoder_f NI_Type_encode_oer; -per_type_decoder_f NI_Type_decode_uper; -per_type_encoder_f NI_Type_encode_uper; -per_type_decoder_f NI_Type_decode_aper; -per_type_encoder_f NI_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _NI_Type_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.c deleted file mode 100644 index 94d8d4b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "NRCGI.h" - -asn_TYPE_member_t asn_MBR_NRCGI_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct NRCGI, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct NRCGI, nRCellIdentity), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCellIdentity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCellIdentity" - }, -}; -static const ber_tlv_tag_t asn_DEF_NRCGI_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_NRCGI_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nRCellIdentity */ -}; -asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1 = { - sizeof(struct NRCGI), - offsetof(struct NRCGI, _asn_ctx), - asn_MAP_NRCGI_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_NRCGI = { - "NRCGI", - "NRCGI", - &asn_OP_SEQUENCE, - asn_DEF_NRCGI_tags_1, - sizeof(asn_DEF_NRCGI_tags_1) - /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ - asn_DEF_NRCGI_tags_1, /* Same as above */ - sizeof(asn_DEF_NRCGI_tags_1) - /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_NRCGI_1, - 2, /* Elements count */ - &asn_SPC_NRCGI_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.h deleted file mode 100644 index b4938d0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCGI.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _NRCGI_H_ -#define _NRCGI_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "NRCellIdentity.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* NRCGI */ -typedef struct NRCGI { - PLMN_Identity_t pLMN_Identity; - NRCellIdentity_t nRCellIdentity; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} NRCGI_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_NRCGI; -extern asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1; -extern asn_TYPE_member_t asn_MBR_NRCGI_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _NRCGI_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.c deleted file mode 100644 index 8e0310e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "NRCellIdentity.h" - -int -NRCellIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 36)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using BIT_STRING, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_NRCellIdentity_constr_1 CC_NOTUSED = { - { 0, 0 }, - 36 /* (SIZE(36..36)) */}; -asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 36, 36 } /* (SIZE(36..36)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_NRCellIdentity_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_NRCellIdentity = { - "NRCellIdentity", - "NRCellIdentity", - &asn_OP_BIT_STRING, - asn_DEF_NRCellIdentity_tags_1, - sizeof(asn_DEF_NRCellIdentity_tags_1) - /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */ - asn_DEF_NRCellIdentity_tags_1, /* Same as above */ - sizeof(asn_DEF_NRCellIdentity_tags_1) - /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */ - { &asn_OER_type_NRCellIdentity_constr_1, &asn_PER_type_NRCellIdentity_constr_1, NRCellIdentity_constraint }, - 0, 0, /* No members */ - &asn_SPC_BIT_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.h deleted file mode 100644 index 701f381..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NRCellIdentity.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _NRCellIdentity_H_ -#define _NRCellIdentity_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* NRCellIdentity */ -typedef BIT_STRING_t NRCellIdentity_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_NRCellIdentity; -asn_struct_free_f NRCellIdentity_free; -asn_struct_print_f NRCellIdentity_print; -asn_constr_check_f NRCellIdentity_constraint; -ber_type_decoder_f NRCellIdentity_decode_ber; -der_type_encoder_f NRCellIdentity_encode_der; -xer_type_decoder_f NRCellIdentity_decode_xer; -xer_type_encoder_f NRCellIdentity_encode_xer; -oer_type_decoder_f NRCellIdentity_decode_oer; -oer_type_encoder_f NRCellIdentity_encode_oer; -per_type_decoder_f NRCellIdentity_decode_uper; -per_type_encoder_f NRCellIdentity_encode_uper; -per_type_decoder_f NRCellIdentity_decode_aper; -per_type_encoder_f NRCellIdentity_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _NRCellIdentity_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated.c deleted file mode 100644 index 50ffb1d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated.c +++ /dev/null @@ -1,367 +0,0 @@ -/*- - * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeEnumerated basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeEnumerated = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeEnumerated_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeEnumerated_decode_oer, - NativeEnumerated_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeEnumerated_decode_uper, - NativeEnumerated_encode_uper, - NativeEnumerated_decode_aper, - NativeEnumerated_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeEnumerated_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { - "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ - "ENUMERATED", - &asn_OP_NativeEnumerated, - asn_DEF_NativeEnumerated_tags, - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - asn_DEF_NativeEnumerated_tags, /* Same as above */ - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -asn_enc_rval_t -NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - const asn_INTEGER_enum_map_t *el; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - el = INTEGER_map_value2enum(specs, *native); - if(el) { - er.encoded = - asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); - if(er.encoded < 0) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } else { - ASN_DEBUG( - "ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - long *native = (long *)*sptr; - const asn_per_constraint_t *ct = NULL; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -static int -NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { - const asn_INTEGER_enum_map_t *a = ap; - const asn_INTEGER_enum_map_t *b = bp; - if(a->nat_value == b->nat_value) - return 0; - if(a->nat_value < b->nat_value) - return -1; - return 1; -} - -asn_enc_rval_t -NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct = NULL; - int inext = 0; - asn_INTEGER_enum_map_t key; - const asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct && ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct && 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 = NULL; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - /* Deal with APER padding */ - if(ct && ct->upper_bound >= 255) { - int padding = 0; - padding = (8 - (pd->moved % 8)) % 8; - ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); - ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); - if(padding > 0) - per_get_few_bits(pd, padding); - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -asn_enc_rval_t -NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct = NULL; - int inext = 0; - asn_INTEGER_enum_map_t key; - asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - if(native < 0) ASN__ENCODE_FAILED; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct && ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct && 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated.h deleted file mode 100644 index 459f0e6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated_oer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated_oer.c deleted file mode 100644 index ee3c189..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeEnumerated_oer.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -static long -asn__nativeenumerated_convert(const uint8_t *b, const uint8_t *end) { - unsigned long value; - - /* Perform the sign initialization */ - /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ - if((*b >> 7)) { - value = (unsigned long)(-1); - } else { - value = 0; - } - - /* Conversion engine */ - for(; b < end; b++) { - value = (value << 8) | *b; - } - - return value; -} - -asn_dec_rval_t -NativeEnumerated_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - void **nint_ptr, const void *ptr, size_t size) { - asn_dec_rval_t rval = {RC_OK, 0}; - long *native = (long *)*nint_ptr; - const uint8_t *b = ptr; - - (void)opt_codec_ctx; - (void)constraints; - - if(size < 1) { - ASN__DECODE_STARVED; - } - - if((*b & 0x80) == 0) { - /* - * X.696 (08/2015) #11.2 Short form for Enumerated. - */ - if(!native) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - *native = *b; - rval.consumed = 1; - } else { - /* - * X.696 (08/2015) #11.4 Long form for Enumerated. - */ - size_t length = *b & 0x7f; - const uint8_t *bend; - long value; - - if(length < 1 || length > sizeof(*native)) { - ASN__DECODE_FAILED; - } - if((1 + length) > size) { - ASN__DECODE_STARVED; - } - b++; - bend = b + length; - - value = asn__nativeenumerated_convert(b, bend); - if(value < 0) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - if(specs && specs->field_unsigned) { - ASN__DECODE_FAILED; - } - } - - if(!native) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - *native = value; - - rval.consumed = (1 + length); - } - - return rval; -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -NativeEnumerated_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0,0,0}; - long native; - - (void)constraints; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - if(native >= 0 && native <= 127) { - /* #11.2 Short form */ - uint8_t b = native; - er.encoded = 1; - if(cb(&b, er.encoded, app_key) < 0) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } else { - /* #11.2 Long form */ - uint8_t buf[1 + sizeof(native)]; - uint8_t *b = &buf[sizeof(native)]; /* Last addressable */ - long final_pattern = -1 * (native < 0); - - for(;;) { - *b-- = native; - native >>= 8; - if(native == final_pattern) { - if(final_pattern) { - if((b[1] & 0x80)) break; - } else { - if(!(b[1] & 0x80)) break; - } - } - } - *b = 0x80 | (&buf[sizeof(native)] - b); - er.encoded = 1 + (&buf[sizeof(native)] - b); - if(cb(b, er.encoded, app_key) < 0) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.c deleted file mode 100644 index 316e872..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.c +++ /dev/null @@ -1,550 +0,0 @@ -/*- - * Copyright (c) 2004, 2005, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeInteger basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeInteger = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeInteger_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeInteger_decode_oer, /* OER decoder */ - NativeInteger_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeInteger_decode_uper, /* Unaligned PER decoder */ - NativeInteger_encode_uper, /* Unaligned PER encoder */ - NativeInteger_decode_aper, /* Aligned PER decoder */ - NativeInteger_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeInteger_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeInteger = { - "INTEGER", /* The ASN.1 type is still INTEGER */ - "INTEGER", - &asn_OP_NativeInteger, - asn_DEF_NativeInteger_tags, - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - asn_DEF_NativeInteger_tags, /* Same as above */ - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Decode INTEGER type. - */ -asn_dec_rval_t -NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **nint_ptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - long *native = (long *)*nint_ptr; - asn_dec_rval_t rval; - ber_tlv_len_t length; - - /* - * If the structure is not there, allocate it. - */ - if(native == NULL) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(native == NULL) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - } - - ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", - td->name, tag_mode); - - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - /* - * ASN.1 encoded INTEGER: buf_ptr, length - * Fill the native, at the same time checking for overflow. - * If overflow occured, return with RC_FAIL. - */ - { - INTEGER_t tmp; - union { - const void *constbuf; - void *nonconstbuf; - } unconst_buf; - long l; - - unconst_buf.constbuf = buf_ptr; - tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; - tmp.size = length; - - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&tmp, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - - *native = l; - } - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", - (long)rval.consumed, (long)length, td->name, (long)*native); - - return rval; -} - -/* - * Encode the NativeInteger using the standard INTEGER type DER encoder. - */ -asn_enc_rval_t -NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ - asn_enc_rval_t erval = {0,0,0}; - INTEGER_t tmp; - -#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ - - tmp.buf = (uint8_t *)&native; - tmp.size = sizeof(native); - -#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ - uint8_t buf[sizeof(native)]; - uint8_t *p; - - /* Prepare a fake INTEGER */ - for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) - *p = (uint8_t)native; - - tmp.buf = buf; - tmp.size = sizeof(buf); -#endif /* WORDS_BIGENDIAN */ - - /* Encode fake INTEGER */ - erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); - if(erval.structure_ptr == &tmp) { - erval.structure_ptr = ptr; - } - return erval; -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -asn_dec_rval_t -NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - INTEGER_t st; - void *st_ptr = (void *)&st; - long *native = (long *)*sptr; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&st, 0, sizeof(st)); - rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, - opt_mname, buf_ptr, size); - if(rval.code == RC_OK) { - long l; - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&st, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - } else { - *native = l; - } - } else { - /* - * Cannot restart from the middle; - * there is no place to save state in the native type. - * Request a continuation from the very beginning. - */ - rval.consumed = 0; - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); - return rval; -} - - -asn_enc_rval_t -NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; /* Enough for 64-bit int */ - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - er.encoded = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) - ? "%lu" : "%ld", *native); - if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) - || cb(scratch, er.encoded, app_key) < 0) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_uper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -asn_dec_rval_t -NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_aper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -/* - * INTEGER specific human-readable output. - */ -int -NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - const long *native = (const long *)sptr; - char scratch[32]; /* Enough for 64-bit int */ - int ret; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(native) { - long value = *native; - ret = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) ? "%lu" : "%ld", value); - assert(ret > 0 && (size_t)ret < sizeof(scratch)); - if(cb(scratch, ret, app_key) < 0) return -1; - if(specs && (value >= 0 || !specs->field_unsigned)) { - const asn_INTEGER_enum_map_t *el = - INTEGER_map_value2enum(specs, value); - if(el) { - if(cb(" (", 2, app_key) < 0) return -1; - if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; - if(cb(")", 1, app_key) < 0) return -1; - } - } - return 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", - td->name, method, ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, sizeof(long)); - break; - } -} - -int -NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - (void)td; - - if(aptr && bptr) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - if(specs && specs->field_unsigned) { - const unsigned long *a = aptr; - const unsigned long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } else { - const long *a = aptr; - const long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } - } else if(!aptr) { - return -1; - } else { - return 1; - } -} - -asn_random_fill_result_t -NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - long *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (long *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - *sptr = st; - *st = value; - return result_ok; -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.h deleted file mode 100644 index c74406a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger.h +++ /dev/null @@ -1,46 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger_oer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger_oer.c deleted file mode 100644 index 411413a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/NativeInteger_oer.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -asn_dec_rval_t -NativeInteger_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - void **nint_ptr, const void *ptr, size_t size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = {RC_OK, 0}; - long *native = (long *)*nint_ptr; - INTEGER_t tmpint; - INTEGER_t *tmpintptr = &tmpint; - - memset(&tmpint, 0, sizeof(tmpint)); - - if(!native) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - /* - * OPTIMIZATION: Encode directly rather than passing through INTEGER. - * Saves a memory allocation. - */ - rval = INTEGER_decode_oer(opt_codec_ctx, td, constraints, - (void **)&tmpintptr, ptr, size); - if(rval.code != RC_OK) { - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return rval; - } - - if(specs && specs->field_unsigned) { - unsigned long ul; - int ok = asn_INTEGER2ulong(&tmpint, &ul) == 0; - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - if(ok) { - *native = ul; - } else { - rval.code = RC_FAIL; - return rval; - } - } else { - long l; - int ok = asn_INTEGER2long(&tmpint, &l) == 0; - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - if(ok) { - *native = l; - } else { - rval.code = RC_FAIL; - return rval; - } - } - - return rval; -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -NativeInteger_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - INTEGER_t tmpint; - long native; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - memset(&tmpint, 0, sizeof(tmpint)); - - ASN_DEBUG("Encoding %s %ld as NativeInteger", td ? td->name : "", native); - - if((specs && specs->field_unsigned) ? asn_ulong2INTEGER(&tmpint, native) - : asn_long2INTEGER(&tmpint, native)) { - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - ASN__ENCODE_FAILED; - } else { - asn_enc_rval_t er = - INTEGER_encode_oer(td, constraints, &tmpint, cb, app_key); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.c deleted file mode 100644 index ae34c96..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.c +++ /dev/null @@ -1,2411 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* for .bits_unused member */ -#include - -/* - * OCTET STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { - sizeof(OCTET_STRING_t), - offsetof(OCTET_STRING_t, _asn_ctx), - ASN_OSUBV_STR -}; - -asn_TYPE_operation_t asn_OP_OCTET_STRING = { - OCTET_STRING_free, - OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ - OCTET_STRING_compare, - OCTET_STRING_decode_ber, - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_hex, - OCTET_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - OCTET_STRING_decode_oer, - OCTET_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - OCTET_STRING_decode_uper, /* Unaligned PER decoder */ - OCTET_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - OCTET_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { - "OCTET STRING", /* Canonical name */ - "OCTET_STRING", /* XML tag name */ - &asn_OP_OCTET_STRING, - asn_DEF_OCTET_STRING_tags, - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - asn_DEF_OCTET_STRING_tags, /* Same as above */ - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs -}; - -#undef _CH_PHASE -#undef NEXT_PHASE -#undef PREV_PHASE -#define _CH_PHASE(ctx, inc) do { \ - if(ctx->phase == 0) \ - ctx->context = 0; \ - ctx->phase += inc; \ - } while(0) -#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) -#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -#undef APPEND -#define APPEND(bufptr, bufsize) do { \ - size_t _bs = (bufsize); /* Append size */ \ - size_t _ns = ctx->context; /* Allocated now */ \ - size_t _es = st->size + _bs; /* Expected size */ \ - /* int is really a typeof(st->size): */ \ - if((int)_es < 0) RETURN(RC_FAIL); \ - if(_ns <= _es) { \ - void *ptr; \ - /* Be nice and round to the memory allocator */ \ - do { _ns = _ns ? _ns << 1 : 16; } \ - while(_ns <= _es); \ - /* int is really a typeof(st->size): */ \ - if((int)_ns < 0) RETURN(RC_FAIL); \ - ptr = REALLOC(st->buf, _ns); \ - if(ptr) { \ - st->buf = (uint8_t *)ptr; \ - ctx->context = _ns; \ - } else { \ - RETURN(RC_FAIL); \ - } \ - ASN_DEBUG("Reallocating into %ld", (long)_ns); \ - } \ - memcpy(st->buf + st->size, bufptr, _bs); \ - /* Convenient nul-termination */ \ - st->buf[_es] = '\0'; \ - st->size = _es; \ - } while(0) - -/* - * The main reason why ASN.1 is still alive is that too much time and effort - * is necessary for learning it more or less adequately, thus creating a gut - * necessity to demonstrate that aquired skill everywhere afterwards. - * No, I am not going to explain what the following stuff is. - */ -struct _stack_el { - ber_tlv_len_t left; /* What's left to read (or -1) */ - ber_tlv_len_t got; /* What was actually processed */ - unsigned cont_level; /* Depth of subcontainment */ - int want_nulls; /* Want null "end of content" octets? */ - int bits_chopped; /* Flag in BIT STRING mode */ - ber_tlv_tag_t tag; /* For debugging purposes */ - struct _stack_el *prev; - struct _stack_el *next; -}; -struct _stack { - struct _stack_el *tail; - struct _stack_el *cur_ptr; -}; - -static struct _stack_el * -OS__add_stack_el(struct _stack *st) { - struct _stack_el *nel; - - /* - * Reuse the old stack frame or allocate a new one. - */ - if(st->cur_ptr && st->cur_ptr->next) { - nel = st->cur_ptr->next; - nel->bits_chopped = 0; - nel->got = 0; - /* Retain the nel->cont_level, it's correct. */ - } else { - nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); - if(nel == NULL) - return NULL; - - if(st->tail) { - /* Increase a subcontainment depth */ - nel->cont_level = st->tail->cont_level + 1; - st->tail->next = nel; - } - nel->prev = st->tail; - st->tail = nel; - } - - st->cur_ptr = nel; - - return nel; -} - -static struct _stack * -_new_stack(void) { - return (struct _stack *)CALLOC(1, sizeof(struct _stack)); -} - -/* - * Decode OCTET STRING type. - */ -asn_dec_rval_t -OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - asn_dec_rval_t rval; - asn_struct_ctx_t *ctx; - ssize_t consumed_myself = 0; - struct _stack *stck; /* Expectations stack structure */ - struct _stack_el *sel = 0; /* Stack element */ - int tlv_constr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - - ASN_DEBUG("Decoding %s as %s (frame %ld)", - td->name, - (type_variant == ASN_OSUBV_STR) ? - "OCTET STRING" : "OS-SpecialCase", - (long)size); - - /* - * Create the string if does not exist. - */ - if(st == NULL) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) RETURN(RC_FAIL); - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - switch(ctx->phase) { - case 0: - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, ctx, - buf_ptr, size, tag_mode, -1, - &ctx->left, &tlv_constr); - if(rval.code != RC_OK) - return rval; - - if(tlv_constr) { - /* - * Complex operation, requires stack of expectations. - */ - ctx->ptr = _new_stack(); - if(!ctx->ptr) { - RETURN(RC_FAIL); - } - } else { - /* - * Jump into stackless primitive decoding. - */ - _CH_PHASE(ctx, 3); - if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) - APPEND(buf_ptr, rval.consumed); - ADVANCE(rval.consumed); - goto phase3; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - phase1: - /* - * Fill the stack with expectations. - */ - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - do { - ber_tlv_tag_t tlv_tag; - ber_tlv_len_t tlv_len; - ber_tlv_tag_t expected_tag; - ssize_t tl, ll, tlvl; - /* This one works even if (sel->left == -1) */ - size_t Left = ((!sel||(size_t)sel->left >= size) - ?size:(size_t)sel->left); - - - ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)(sel?sel->got:0) - ); - if(sel && sel->left <= 0 && sel->want_nulls == 0) { - if(sel->prev) { - struct _stack_el *prev = sel->prev; - if(prev->left != -1) { - if(prev->left < sel->got) - RETURN(RC_FAIL); - prev->left -= sel->got; - } - prev->got += sel->got; - sel = stck->cur_ptr = prev; - if(!sel) break; - tlv_constr = 1; - continue; - } else { - sel = stck->cur_ptr = 0; - break; /* Nothing to wait */ - } - } - - tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); - ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", - (long)size, (long)Left, sel?"":"!", - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)tl); - switch(tl) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); - - ll = ber_fetch_length(tlv_constr, - (const char *)buf_ptr + tl,Left - tl,&tlv_len); - ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", - ber_tlv_tag_string(tlv_tag), tlv_constr, - (long)Left, (long)tl, (long)tlv_len, (long)ll); - switch(ll) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - if(sel && sel->want_nulls - && ((const uint8_t *)buf_ptr)[0] == 0 - && ((const uint8_t *)buf_ptr)[1] == 0) - { - - ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); - - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND("\0\0", 2); - - ADVANCE(2); - sel->got += 2; - if(sel->left != -1) { - sel->left -= 2; /* assert(sel->left >= 2) */ - } - - sel->want_nulls--; - if(sel->want_nulls == 0) { - /* Move to the next expectation */ - sel->left = 0; - tlv_constr = 1; - } - - continue; - } - - /* - * Set up expected tags, - * depending on ASN.1 type being decoded. - */ - switch(type_variant) { - case ASN_OSUBV_BIT: - /* X.690: 8.6.4.1, NOTE 2 */ - /* Fall through */ - case ASN_OSUBV_STR: - default: - if(sel) { - unsigned level = sel->cont_level; - if(level < td->all_tags_count) { - expected_tag = td->all_tags[level]; - break; - } else if(td->all_tags_count) { - expected_tag = td->all_tags - [td->all_tags_count - 1]; - break; - } - /* else, Fall through */ - } - /* Fall through */ - case ASN_OSUBV_ANY: - expected_tag = tlv_tag; - break; - } - - - if(tlv_tag != expected_tag) { - char buf[2][32]; - ber_tlv_tag_snprint(tlv_tag, - buf[0], sizeof(buf[0])); - ber_tlv_tag_snprint(td->tags[td->tags_count-1], - buf[1], sizeof(buf[1])); - ASN_DEBUG("Tag does not match expectation: %s != %s", - buf[0], buf[1]); - RETURN(RC_FAIL); - } - - tlvl = tl + ll; /* Combined length of T and L encoding */ - if((tlv_len + tlvl) < 0) { - /* tlv_len value is too big */ - ASN_DEBUG("TLV encoding + length (%ld) is too big", - (long)tlv_len); - RETURN(RC_FAIL); - } - - /* - * Append a new expectation. - */ - sel = OS__add_stack_el(stck); - if(!sel) RETURN(RC_FAIL); - - sel->tag = tlv_tag; - - sel->want_nulls = (tlv_len==-1); - if(sel->prev && sel->prev->left != -1) { - /* Check that the parent frame is big enough */ - if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) - RETURN(RC_FAIL); - if(tlv_len == -1) - sel->left = sel->prev->left - tlvl; - else - sel->left = tlv_len; - } else { - sel->left = tlv_len; - } - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND(buf_ptr, tlvl); - sel->got += tlvl; - ADVANCE(tlvl); - - ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", - (long)sel->got, (long)sel->left, - sel->want_nulls, sel->cont_level); - - } while(tlv_constr); - if(sel == NULL) { - /* Finished operation, "phase out" */ - ASN_DEBUG("Phase out"); - _CH_PHASE(ctx, +3); - break; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 2: - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", - (long)sel->left, (long)size, (long)sel->got, - sel->want_nulls); - { - ber_tlv_len_t len; - - assert(sel->left >= 0); - - len = ((ber_tlv_len_t)size < sel->left) - ? (ber_tlv_len_t)size : sel->left; - if(len > 0) { - if(type_variant == ASN_OSUBV_BIT - && sel->bits_chopped == 0) { - /* Put the unused-bits-octet away */ - st->bits_unused = *(const uint8_t *)buf_ptr; - APPEND(((const char *)buf_ptr+1), (len - 1)); - sel->bits_chopped = 1; - } else { - APPEND(buf_ptr, len); - } - ADVANCE(len); - sel->left -= len; - sel->got += len; - } - - if(sel->left) { - ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", - (long)sel->left, (long)size, sel->want_nulls); - RETURN(RC_WMORE); - } - - PREV_PHASE(ctx); - goto phase1; - } - break; - case 3: - phase3: - /* - * Primitive form, no stack required. - */ - assert(ctx->left >= 0); - - if(size < (size_t)ctx->left) { - if(!size) RETURN(RC_WMORE); - if(type_variant == ASN_OSUBV_BIT && !ctx->context) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, size); - assert(ctx->context > 0); - ctx->left -= size; - ADVANCE(size); - RETURN(RC_WMORE); - } else { - if(type_variant == ASN_OSUBV_BIT - && !ctx->context && ctx->left) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, ctx->left); - ADVANCE(ctx->left); - ctx->left = 0; - - NEXT_PHASE(ctx); - } - break; - } - - if(sel) { - ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", - (void *)sel->prev, sel->want_nulls, - (long)sel->left, (long)sel->got, (long)size); - if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { - RETURN(RC_WMORE); - } - } - - /* - * BIT STRING-specific processing. - */ - if(type_variant == ASN_OSUBV_BIT) { - if(st->size) { - if(st->bits_unused < 0 || st->bits_unused > 7) { - RETURN(RC_FAIL); - } - /* Finalize BIT STRING: zero out unused bits. */ - st->buf[st->size-1] &= 0xff << st->bits_unused; - } else { - if(st->bits_unused) { - RETURN(RC_FAIL); - } - } - } - - ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", - (long)consumed_myself, td->name, - (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", - (long)st->size); - - - RETURN(RC_OK); -} - -/* - * Encode OCTET STRING type using DER. - */ -asn_enc_rval_t -OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = { 0, 0, 0 }; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - int fix_last_byte = 0; - - ASN_DEBUG("%s %s as OCTET STRING", - cb?"Estimating":"Encoding", td->name); - - /* - * Write tags. - */ - if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { - er.encoded = der_write_tags(td, - (type_variant == ASN_OSUBV_BIT) + st->size, - tag_mode, type_variant == ASN_OSUBV_ANY, tag, - cb, app_key); - if(er.encoded == -1) { - er.failed_type = td; - er.structure_ptr = sptr; - return er; - } - } else { - /* Disallow: [] IMPLICIT ANY */ - assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); - er.encoded = 0; - } - - if(!cb) { - er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; - ASN__ENCODED_OK(er); - } - - /* - * Prepare to deal with the last octet of BIT STRING. - */ - if(type_variant == ASN_OSUBV_BIT) { - uint8_t b = st->bits_unused & 0x07; - if(b && st->size) fix_last_byte = 1; - ASN__CALLBACK(&b, 1); - } - - /* Invoke callback for the main part of the buffer */ - ASN__CALLBACK(st->buf, st->size - fix_last_byte); - - /* The last octet should be stripped off the unused bits */ - if(fix_last_byte) { - uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); - ASN__CALLBACK(&b, 1); - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_enc_rval_t -OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - char scratch[16 * 3 + 4]; - char *p = scratch; - uint8_t *buf; - uint8_t *end; - size_t i; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - /* - * Dump the contents of the buffer in hexadecimal. - */ - buf = st->buf; - end = buf + st->size; - if(flags & XER_F_CANONICAL) { - char *scend = scratch + (sizeof(scratch) - 2); - for(; buf < end; buf++) { - if(p >= scend) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - } - - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - } else { - for(i = 0; buf < end; buf++, i++) { - if(!(i % 16) && (i || st->size > 16)) { - ASN__CALLBACK(scratch, p-scratch); - p = scratch; - ASN__TEXT_INDENT(1, ilevel); - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - if(p - scratch) { - p--; /* Remove the tail space */ - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - if(st->size > 16) - ASN__TEXT_INDENT(1, ilevel-1); - } - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -static const struct OCTET_STRING__xer_escape_table_s { - const char *string; - int size; -} OCTET_STRING__xer_escape_table[] = { -#define OSXET(s) { s, sizeof(s) - 1 } - OSXET("\074\156\165\154\057\076"), /* */ - OSXET("\074\163\157\150\057\076"), /* */ - OSXET("\074\163\164\170\057\076"), /* */ - OSXET("\074\145\164\170\057\076"), /* */ - OSXET("\074\145\157\164\057\076"), /* */ - OSXET("\074\145\156\161\057\076"), /* */ - OSXET("\074\141\143\153\057\076"), /* */ - OSXET("\074\142\145\154\057\076"), /* */ - OSXET("\074\142\163\057\076"), /* */ - OSXET("\011"), /* \t */ - OSXET("\012"), /* \n */ - OSXET("\074\166\164\057\076"), /* */ - OSXET("\074\146\146\057\076"), /* */ - OSXET("\015"), /* \r */ - OSXET("\074\163\157\057\076"), /* */ - OSXET("\074\163\151\057\076"), /* */ - OSXET("\074\144\154\145\057\076"), /* */ - OSXET("\074\144\143\061\057\076"), /* */ - OSXET("\074\144\143\062\057\076"), /* */ - OSXET("\074\144\143\063\057\076"), /* */ - OSXET("\074\144\143\064\057\076"), /* */ - OSXET("\074\156\141\153\057\076"), /* */ - OSXET("\074\163\171\156\057\076"), /* */ - OSXET("\074\145\164\142\057\076"), /* */ - OSXET("\074\143\141\156\057\076"), /* */ - OSXET("\074\145\155\057\076"), /* */ - OSXET("\074\163\165\142\057\076"), /* */ - OSXET("\074\145\163\143\057\076"), /* */ - OSXET("\074\151\163\064\057\076"), /* */ - OSXET("\074\151\163\063\057\076"), /* */ - OSXET("\074\151\163\062\057\076"), /* */ - OSXET("\074\151\163\061\057\076"), /* */ - { 0, 0 }, /* " " */ - { 0, 0 }, /* ! */ - { 0, 0 }, /* \" */ - { 0, 0 }, /* # */ - { 0, 0 }, /* $ */ - { 0, 0 }, /* % */ - OSXET("\046\141\155\160\073"), /* & */ - { 0, 0 }, /* ' */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ - {0,0},{0,0},{0,0},{0,0}, /* 89:; */ - OSXET("\046\154\164\073"), /* < */ - { 0, 0 }, /* = */ - OSXET("\046\147\164\073"), /* > */ -}; - -static int -OS__check_escaped_control_char(const void *buf, int size) { - size_t i; - /* - * Inefficient algorithm which translates the escape sequences - * defined above into characters. Returns -1 if not found. - * TODO: replace by a faster algorithm (bsearch(), hash or - * nested table lookups). - */ - for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { - const struct OCTET_STRING__xer_escape_table_s *el; - el = &OCTET_STRING__xer_escape_table[i]; - if(el->size == size && memcmp(buf, el->string, size) == 0) - return i; - } - return -1; -} - -static int -OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { - /* - * This might be one of the escape sequences - * for control characters. Check it out. - * #11.15.5 - */ - int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); - if(control_char >= 0) { - OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; - void *p = REALLOC(st->buf, st->size + 2); - if(p) { - st->buf = (uint8_t *)p; - st->buf[st->size++] = control_char; - st->buf[st->size] = '\0'; /* nul-termination */ - return 0; - } - } - - return -1; /* No, it's not */ -} - -asn_enc_rval_t -OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - uint8_t *buf, *end; - uint8_t *ss; /* Sequence start */ - ssize_t encoded_len = 0; - - (void)ilevel; /* Unused argument */ - (void)flags; /* Unused argument */ - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - buf = st->buf; - end = buf + st->size; - for(ss = buf; buf < end; buf++) { - unsigned int ch = *buf; - int s_len; /* Special encoding sequence length */ - - /* - * Escape certain characters: X.680/11.15 - */ - if(ch < sizeof(OCTET_STRING__xer_escape_table) - /sizeof(OCTET_STRING__xer_escape_table[0]) - && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { - if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) - || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, - app_key) < 0) - ASN__ENCODE_FAILED; - encoded_len += (buf - ss) + s_len; - ss = buf + 1; - } - } - - encoded_len += (buf - ss); - if((buf - ss) && cb(ss, buf - ss, app_key) < 0) - ASN__ENCODE_FAILED; - - er.encoded = encoded_len; - ASN__ENCODED_OK(er); -} - -/* - * Convert from hexadecimal format (cstring): "AB CD EF" - */ -static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *chunk_stop = (const char *)chunk_buf; - const char *p = chunk_stop; - const char *pend = p + chunk_size; - unsigned int clv = 0; - int half = 0; /* Half bit */ - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 1) / 2; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * If something like " a b c " appears here, the " a b":3 will be - * converted, and the rest skipped. That is, unless buf_size is greater - * than chunk_size, then it'll be equivalent to "ABC0". - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - continue; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - clv = (clv << 4) + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - clv = (clv << 4) + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - clv = (clv << 4) + (ch - 0x61 + 10); - break; - default: - *buf = 0; /* JIC */ - return -1; - } - if(half++) { - half = 0; - *buf++ = clv; - chunk_stop = p + 1; - } - } - - /* - * Check partial decoding. - */ - if(half) { - if(have_more) { - /* - * Partial specification is fine, - * because no more more PXER_TEXT data is available. - */ - *buf++ = clv << 4; - chunk_stop = p; - } - } else { - chunk_stop = p; - } - - st->size = buf - st->buf; /* Adjust the buffer size */ - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return (chunk_stop - (const char *)chunk_buf); /* Converted size */ -} - -/* - * Convert from binary format: "00101011101" - */ -static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - BIT_STRING_t *st = (BIT_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - int bits_unused = st->bits_unused & 0x7; - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 7) / 8; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - (void)have_more; - - if(bits_unused == 0) - bits_unused = 8; - else if(st->size) - buf--; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - break; - case 0x30: - case 0x31: - if(bits_unused-- <= 0) { - *++buf = 0; /* Clean the cell */ - bits_unused = 7; - } - *buf |= (ch&1) << bits_unused; - break; - default: - st->bits_unused = bits_unused; - return -1; - } - } - - if(bits_unused == 8) { - st->size = buf - st->buf; - st->bits_unused = 0; - } else { - st->size = buf - st->buf + 1; - st->bits_unused = bits_unused; - } - - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Something like strtod(), but with stricter rules. - */ -static int -OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { - const int32_t last_unicode_codepoint = 0x10ffff; - int32_t val = 0; - const char *p; - - for(p = buf; p < end; p++) { - int ch = *p; - - switch(ch) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - val = val * base + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - val = val * base + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - val = val * base + (ch - 0x61 + 10); - break; - case 0x3b: /* ';' */ - *ret_value = val; - return (p - buf) + 1; - default: - return -1; /* Character set error */ - } - - /* Value exceeds the Unicode range. */ - if(val > last_unicode_codepoint) { - return -1; - } - } - - *ret_value = -1; - return (p - buf); -} - -/* - * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" - */ -static ssize_t -OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, - size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - uint8_t *buf; - - /* Reallocate buffer */ - size_t new_size = st->size + chunk_size; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - int len; /* Length of the rest of the chunk */ - - if(ch != 0x26 /* '&' */) { - *buf++ = ch; - continue; /* That was easy... */ - } - - /* - * Process entity reference. - */ - len = chunk_size - (p - (const char *)chunk_buf); - if(len == 1 /* "&" */) goto want_more; - if(p[1] == 0x23 /* '#' */) { - const char *pval; /* Pointer to start of digits */ - int32_t val = 0; /* Entity reference value */ - int base; - - if(len == 2 /* "&#" */) goto want_more; - if(p[2] == 0x78 /* 'x' */) - pval = p + 3, base = 16; - else - pval = p + 2, base = 10; - len = OS__strtoent(base, pval, p + len, &val); - if(len == -1) { - /* Invalid charset. Just copy verbatim. */ - *buf++ = ch; - continue; - } - if(!len || pval[len-1] != 0x3b) goto want_more; - assert(val > 0); - p += (pval - p) + len - 1; /* Advance past entref */ - - if(val < 0x80) { - *buf++ = (char)val; - } else if(val < 0x800) { - *buf++ = 0xc0 | ((val >> 6)); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x10000) { - *buf++ = 0xe0 | ((val >> 12)); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x200000) { - *buf++ = 0xf0 | ((val >> 18)); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x4000000) { - *buf++ = 0xf8 | ((val >> 24)); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else { - *buf++ = 0xfc | ((val >> 30) & 0x1); - *buf++ = 0x80 | ((val >> 24) & 0x3f); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } - } else { - /* - * Ugly, limited parsing of & > < - */ - char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); - if(!sc) goto want_more; - if((sc - p) == 4 - && p[1] == 0x61 /* 'a' */ - && p[2] == 0x6d /* 'm' */ - && p[3] == 0x70 /* 'p' */) { - *buf++ = 0x26; - p = sc; - continue; - } - if((sc - p) == 3) { - if(p[1] == 0x6c) { - *buf = 0x3c; /* '<' */ - } else if(p[1] == 0x67) { - *buf = 0x3e; /* '>' */ - } else { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - if(p[2] != 0x74) { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - buf++; - p = sc; - continue; - } - /* Unsupported entity reference */ - *buf++ = ch; - } - - continue; - want_more: - if(have_more) { - /* - * We know that no more data (of the same type) - * is coming. Copy the rest verbatim. - */ - *buf++ = ch; - continue; - } - chunk_size = (p - (const char *)chunk_buf); - /* Processing stalled: need more data */ - break; - } - - st->size = buf - st->buf; - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Decode OCTET STRING from the XML element's body. - */ -static asn_dec_rval_t -OCTET_STRING__decode_xer( - const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, - void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size), - ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size, int have_more)) { - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t *ctx; /* Per-structure parser context */ - asn_dec_rval_t rval; /* Return value from the decoder */ - int st_allocated; - - /* - * Create the string if does not exist. - */ - if(!st) { - st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); - *sptr = (void *)st; - if(!st) goto sta_failed; - st_allocated = 1; - } else { - st_allocated = 0; - } - if(!st->buf) { - /* This is separate from above section */ - st->buf = (uint8_t *)CALLOC(1, 1); - if(!st->buf) { - if(st_allocated) { - *sptr = 0; - goto stb_failed; - } else { - goto sta_failed; - } - } - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); - - return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, - buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); - -stb_failed: - FREEMEM(st); -sta_failed: - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; -} - -/* - * Decode OCTET STRING from the hexadecimal data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); -} - -/* - * Decode OCTET STRING from the binary (0/1) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_binary); -} - -/* - * Decode OCTET STRING from the string (ASCII/UTF-8) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, - OCTET_STRING__handle_control_chars, - OCTET_STRING__convert_entrefs); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -static int -OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", - (int)units, lb, ub, unit_bits); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Decode without translation */ - lb = 0; - } else if(pc && pc->code2value) { - if(unit_bits > 16) - return 1; /* FATAL: can't have constrained - * UniversalString with more than - * 16 million code points */ - for(; buf < end; buf += bpc) { - int value; - int code = per_get_few_bits(po, unit_bits); - if(code < 0) return -1; /* WMORE */ - value = pc->code2value(code); - if(value < 0) { - ASN_DEBUG("Code %d (0x%02x) is" - " not in map (%ld..%ld)", - code, code, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = value; break; - case 2: buf[0] = value >> 8; buf[1] = value; break; - case 4: buf[0] = value >> 24; buf[1] = value >> 16; - buf[2] = value >> 8; buf[3] = value; break; - } - } - return 0; - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_get_many_bits(po, buf, 0, unit_bits * units); - } - - for(; buf < end; buf += bpc) { - int32_t code = per_get_few_bits(po, unit_bits); - int32_t ch = code + lb; - if(code < 0) return -1; /* WMORE */ - if(ch > ub) { - ASN_DEBUG("Code %d is out of range (%ld..%ld)", - ch, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = ch; break; - case 2: buf[0] = ch >> 8; buf[1] = ch; break; - case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; - buf[2] = ch >> 8; buf[3] = ch; break; - } - } - - return 0; -} - -static int -OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - const uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", - (int)units, lb, ub, unit_bits, bpc); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Encode as is */ - lb = 0; - } else if(pc && pc->value2code) { - for(; buf < end; buf += bpc) { - int code; - uint32_t value; - switch(bpc) { - case 1: value = *(const uint8_t *)buf; break; - case 2: value = (buf[0] << 8) | buf[1]; break; - case 4: value = (buf[0] << 24) | (buf[1] << 16) - | (buf[2] << 8) | buf[3]; break; - default: return -1; - } - code = pc->value2code(value); - if(code < 0) { - ASN_DEBUG("Character %d (0x%02x) is" - " not in map (%ld..%ld)", - *buf, *buf, lb, ub); - return -1; - } - if(per_put_few_bits(po, code, unit_bits)) - return -1; - } - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_put_many_bits(po, buf, unit_bits * units); - } - - for(ub -= lb; buf < end; buf += bpc) { - int ch; - uint32_t value; - switch(bpc) { - case 1: - value = *(const uint8_t *)buf; - break; - case 2: - value = (buf[0] << 8) | buf[1]; - break; - case 4: - value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; - break; - default: - return -1; - } - ch = value - lb; - if(ch < 0 || ch > ub) { - ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, - value, lb, ub + lb); - return -1; - } - if(per_put_few_bits(po, ch, unit_bits)) return -1; - } - - return 0; -} - -static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { - { APC_CONSTRAINED, 8, 8, 0, 255 }, - { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, - 0, 0 -}; - -asn_dec_rval_t -OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); - break; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if(bpc) { - ASN_DEBUG("Encoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Encoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len * bpc; - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, - bpc, unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - size_t size_in_units; - const uint8_t *buf; - int ret; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN__ENCODE_FAILED; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - size_in_units = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - size_in_units = st->size >> 1; - if(st->size & 1) { - ASN_DEBUG("%s string size is not modulo 2", td->name); - ASN__ENCODE_FAILED; - } - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - size_in_units = st->size >> 2; - if(st->size & 3) { - ASN_DEBUG("%s string size is not modulo 4", td->name); - ASN__ENCODE_FAILED; - } - break; - } - - ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_units, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_units < csiz->lower_bound - || (ssize_t)size_in_units > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, - size_in_units - csiz->lower_bound, csiz->effective_bits); - ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, - unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, - need_eom ? ",+EOM" : ""); - - ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, - cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save * bpc; - size_in_units -= may_save; - assert(!(may_save & 0x07) || !size_in_units); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_units); - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: -/* case ASN_OSUBV_ANY: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); -*/ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; -*/ - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - cval = &asn_DEF_OCTET_STRING_constraints.value; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if (st->size > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - if(bpc) { - ASN_DEBUG("Decoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Decoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - if(bpc == 0) { - int ubs = (csiz->upper_bound & 0x7); - st->bits_unused = ubs ? 8 - ubs : 0; - } - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - if (csiz->upper_bound - csiz->lower_bound == 0) - /* Indefinite length case */ - raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); - else - raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); - repeat = 0; - if(raw_len < 0) RETURN(RC_WMORE); - raw_len += csiz->lower_bound; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - - if (raw_len > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - - if(bpc) { - len_bytes = raw_len * bpc; - len_bits = len_bytes * unit_bits; - } else { - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) - st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - } - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - if(bpc) { - ret = OCTET_STRING_per_get_characters(pd, - &st->buf[st->size], raw_len, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ret = per_get_many_bits(pd, &st->buf[st->size], - 0, len_bits); - } - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - unsigned int sizeinunits; - const uint8_t *buf; - int ret; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - /* case ASN_OSUBV_ANY: - ASN__ENCODE_FAILED; - */ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - sizeinunits = st->size * 8 - (st->bits_unused & 0x07); - ASN_DEBUG("BIT STRING of %d bytes", - sizeinunits); - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = 8; -*/ - bpc = OS__BPC_CHAR; - sizeinunits = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - sizeinunits = st->size / 2; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - sizeinunits = st->size / 4; - break; - } - - ASN_DEBUG("Encoding %s into %d units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, sizeinunits, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out wheter size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((int)sizeinunits < csiz->lower_bound - || (int)sizeinunits > csiz->upper_bound) { - if(ct_extensible) { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else - ASN__ENCODE_FAILED; - } - } else { - inext = 0; - } - - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits >= 0) { - ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", - st->size, sizeinunits - csiz->lower_bound, - csiz->effective_bits); - if (csiz->effective_bits > 0) { - ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); - if(ret) ASN__ENCODE_FAILED; - } - /* EB MOD - AFAIU if lb != ub it is aligned whatever the number of bits */ - if ((st->size > 2) || (csiz->lower_bound != csiz->upper_bound)) { /* X.691 #16.11 */ - 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.h deleted file mode 100644 index c2f8bae..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING.h +++ /dev/null @@ -1,102 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING_oer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING_oer.c deleted file mode 100644 index c16faea..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCTET_STRING_oer.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -asn_dec_rval_t -OCTET_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - const asn_oer_constraints_t *cts = - constraints ? constraints : td->encoding_constraints.oer_constraints; - ssize_t ct_size = cts ? cts->size : -1; - asn_dec_rval_t rval = {RC_OK, 0}; - size_t expected_length = 0; - - size_t unit_bytes; - switch(specs->subvariant) { - default: - case ASN_OSUBV_BIT: - ASN_DEBUG("Invalid use of OCTET STRING to decode BIT STRING"); - ASN__DECODE_FAILED; - case ASN_OSUBV_ANY: - /* Fall through */ - case ASN_OSUBV_STR: - unit_bytes = 1; - break; - case ASN_OSUBV_U16: - unit_bytes = 2; - break; - case ASN_OSUBV_U32: - unit_bytes = 4; - break; - } - - (void)opt_codec_ctx; - - if(!st) { - st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) ASN__DECODE_FAILED; - } - - if(ct_size >= 0) { - expected_length = unit_bytes * ct_size; - } else { - /* - * X.696 (08/2015) #27.2 - * Encode length determinant as _number of octets_, but only - * if upper bound is not equal to lower bound. - */ - ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); - if(len_len > 0) { - rval.consumed = len_len; - ptr = (const char *)ptr + len_len; - size -= len_len; - } else if(len_len == 0) { - ASN__DECODE_STARVED; - } else if(len_len < 0) { - ASN__DECODE_FAILED; - } - - if(expected_length % unit_bytes != 0) { - ASN_DEBUG( - "Data size %" ASN_PRI_SIZE " bytes is not consistent with multiplier %" ASN_PRI_SIZE "", - expected_length, unit_bytes); - ASN__DECODE_FAILED; - } - } - - if(size < expected_length) { - ASN__DECODE_STARVED; - } else { - uint8_t *buf = MALLOC(expected_length + 1); - if(buf == NULL) { - ASN__DECODE_FAILED; - } else { - memcpy(buf, ptr, expected_length); - buf[expected_length] = '\0'; - } - FREEMEM(st->buf); - st->buf = buf; - st->size = expected_length; - - rval.consumed += expected_length; - return rval; - } -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -OCTET_STRING_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - const asn_oer_constraints_t *cts = - constraints ? constraints : td->encoding_constraints.oer_constraints; - ssize_t ct_size = cts ? cts->size : -1; - asn_enc_rval_t er = {0, 0, 0}; - - if(!st) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s %" ASN_PRI_SIZE " as OCTET STRING", td ? td->name : "", st->size); - - if(ct_size >= 0) { - /* - * Check that available data matches the constraint - */ - size_t unit_bytes; - switch(specs->subvariant) { - default: - case ASN_OSUBV_BIT: - ASN_DEBUG("Invalid use of OCTET STRING to encode BIT STRING"); - ASN__ENCODE_FAILED; - case ASN_OSUBV_ANY: - /* Fall through */ - case ASN_OSUBV_STR: - unit_bytes = 1; - break; - case ASN_OSUBV_U16: - unit_bytes = 2; - break; - case ASN_OSUBV_U32: - unit_bytes = 4; - break; - } - - if(st->size != unit_bytes * (size_t)ct_size) { - ASN_DEBUG( - "Trying to encode %s (%" ASN_PRI_SIZE " bytes) which doesn't fit SIZE " - "constraint (%" ASN_PRI_SIZE ")", - td->name, st->size, ct_size); - ASN__ENCODE_FAILED; - } - } else { - /* - * X.696 (08/2015) #27.2 - * Encode length determinant as _number of octets_, but only - * if upper bound is not equal to lower bound. - */ - ssize_t ret = oer_serialize_length(st->size, cb, app_key); - if(ret < 0) { - ASN__ENCODE_FAILED; - } - er.encoded += ret; - } - - er.encoded += st->size; - if(cb(st->buf, st->size, app_key) < 0) { - ASN__ENCODE_FAILED; - } else { - ASN__ENCODED_OK(er); - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUCP-PF-Container.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUCP-PF-Container.c deleted file mode 100644 index 121932b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUCP-PF-Container.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "OCUCP-PF-Container.h" - -static int -memb_numberOfActive_UEs_constraint_3(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 1 && value <= 65536)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_numberOfActive_UEs_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_numberOfActive_UEs_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 16, -1, 1, 65536 } /* (1..65536,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cu_CP_Resource_Status_3[] = { - { ATF_POINTER, 1, offsetof(struct OCUCP_PF_Container__cu_CP_Resource_Status, numberOfActive_UEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_numberOfActive_UEs_constr_4, &asn_PER_memb_numberOfActive_UEs_constr_4, memb_numberOfActive_UEs_constraint_3 }, - 0, 0, /* No default value */ - "numberOfActive-UEs" - }, -}; -static const int asn_MAP_cu_CP_Resource_Status_oms_3[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_cu_CP_Resource_Status_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_cu_CP_Resource_Status_tag2el_3[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* numberOfActive-UEs */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_cu_CP_Resource_Status_specs_3 = { - sizeof(struct OCUCP_PF_Container__cu_CP_Resource_Status), - offsetof(struct OCUCP_PF_Container__cu_CP_Resource_Status, _asn_ctx), - asn_MAP_cu_CP_Resource_Status_tag2el_3, - 1, /* Count of tags in the map */ - asn_MAP_cu_CP_Resource_Status_oms_3, /* Optional members */ - 1, 0, /* Root/Additions */ - -1, /* First extension addition */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cu_CP_Resource_Status_3 = { - "cu-CP-Resource-Status", - "cu-CP-Resource-Status", - &asn_OP_SEQUENCE, - asn_DEF_cu_CP_Resource_Status_tags_3, - sizeof(asn_DEF_cu_CP_Resource_Status_tags_3) - /sizeof(asn_DEF_cu_CP_Resource_Status_tags_3[0]) - 1, /* 1 */ - asn_DEF_cu_CP_Resource_Status_tags_3, /* Same as above */ - sizeof(asn_DEF_cu_CP_Resource_Status_tags_3) - /sizeof(asn_DEF_cu_CP_Resource_Status_tags_3[0]), /* 2 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_cu_CP_Resource_Status_3, - 1, /* Elements count */ - &asn_SPC_cu_CP_Resource_Status_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_OCUCP_PF_Container_1[] = { - { ATF_POINTER, 1, offsetof(struct OCUCP_PF_Container, gNB_CU_CP_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_CP_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-CP-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct OCUCP_PF_Container, cu_CP_Resource_Status), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_cu_CP_Resource_Status_3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cu-CP-Resource-Status" - }, -}; -static const int asn_MAP_OCUCP_PF_Container_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_OCUCP_PF_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_OCUCP_PF_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-CP-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cu-CP-Resource-Status */ -}; -asn_SEQUENCE_specifics_t asn_SPC_OCUCP_PF_Container_specs_1 = { - sizeof(struct OCUCP_PF_Container), - offsetof(struct OCUCP_PF_Container, _asn_ctx), - asn_MAP_OCUCP_PF_Container_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_OCUCP_PF_Container_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_OCUCP_PF_Container = { - "OCUCP-PF-Container", - "OCUCP-PF-Container", - &asn_OP_SEQUENCE, - asn_DEF_OCUCP_PF_Container_tags_1, - sizeof(asn_DEF_OCUCP_PF_Container_tags_1) - /sizeof(asn_DEF_OCUCP_PF_Container_tags_1[0]), /* 1 */ - asn_DEF_OCUCP_PF_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_OCUCP_PF_Container_tags_1) - /sizeof(asn_DEF_OCUCP_PF_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_OCUCP_PF_Container_1, - 2, /* Elements count */ - &asn_SPC_OCUCP_PF_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUCP-PF-Container.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUCP-PF-Container.h deleted file mode 100644 index aee0f21..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUCP-PF-Container.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _OCUCP_PF_Container_H_ -#define _OCUCP_PF_Container_H_ - - -#include - -/* Including external dependencies */ -#include "GNB-CU-CP-Name.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* OCUCP-PF-Container */ -typedef struct OCUCP_PF_Container { - GNB_CU_CP_Name_t *gNB_CU_CP_Name; /* OPTIONAL */ - struct OCUCP_PF_Container__cu_CP_Resource_Status { - long *numberOfActive_UEs; /* OPTIONAL */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cu_CP_Resource_Status; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} OCUCP_PF_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_OCUCP_PF_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_OCUCP_PF_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_OCUCP_PF_Container_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _OCUCP_PF_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUUP-PF-Container.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUUP-PF-Container.c deleted file mode 100644 index e1f754e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUUP-PF-Container.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "OCUUP-PF-Container.h" - -static int -memb_pf_ContainerList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 3)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_pf_ContainerList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..3)) */}; -static asn_per_constraints_t asn_PER_type_pf_ContainerList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 2, 2, 1, 3 } /* (SIZE(1..3)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pf_ContainerList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..3)) */}; -static asn_per_constraints_t asn_PER_memb_pf_ContainerList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 2, 2, 1, 3 } /* (SIZE(1..3)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_pf_ContainerList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PF_ContainerListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_pf_ContainerList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_pf_ContainerList_specs_3 = { - sizeof(struct OCUUP_PF_Container__pf_ContainerList), - offsetof(struct OCUUP_PF_Container__pf_ContainerList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_pf_ContainerList_3 = { - "pf-ContainerList", - "pf-ContainerList", - &asn_OP_SEQUENCE_OF, - asn_DEF_pf_ContainerList_tags_3, - sizeof(asn_DEF_pf_ContainerList_tags_3) - /sizeof(asn_DEF_pf_ContainerList_tags_3[0]) - 1, /* 1 */ - asn_DEF_pf_ContainerList_tags_3, /* Same as above */ - sizeof(asn_DEF_pf_ContainerList_tags_3) - /sizeof(asn_DEF_pf_ContainerList_tags_3[0]), /* 2 */ - { &asn_OER_type_pf_ContainerList_constr_3, &asn_PER_type_pf_ContainerList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_pf_ContainerList_3, - 1, /* Single element */ - &asn_SPC_pf_ContainerList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_OCUUP_PF_Container_1[] = { - { ATF_POINTER, 1, offsetof(struct OCUUP_PF_Container, gNB_CU_UP_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-UP-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct OCUUP_PF_Container, pf_ContainerList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_pf_ContainerList_3, - 0, - { &asn_OER_memb_pf_ContainerList_constr_3, &asn_PER_memb_pf_ContainerList_constr_3, memb_pf_ContainerList_constraint_1 }, - 0, 0, /* No default value */ - "pf-ContainerList" - }, -}; -static const int asn_MAP_OCUUP_PF_Container_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_OCUUP_PF_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_OCUUP_PF_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-UP-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pf-ContainerList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_OCUUP_PF_Container_specs_1 = { - sizeof(struct OCUUP_PF_Container), - offsetof(struct OCUUP_PF_Container, _asn_ctx), - asn_MAP_OCUUP_PF_Container_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_OCUUP_PF_Container_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_OCUUP_PF_Container = { - "OCUUP-PF-Container", - "OCUUP-PF-Container", - &asn_OP_SEQUENCE, - asn_DEF_OCUUP_PF_Container_tags_1, - sizeof(asn_DEF_OCUUP_PF_Container_tags_1) - /sizeof(asn_DEF_OCUUP_PF_Container_tags_1[0]), /* 1 */ - asn_DEF_OCUUP_PF_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_OCUUP_PF_Container_tags_1) - /sizeof(asn_DEF_OCUUP_PF_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_OCUUP_PF_Container_1, - 2, /* Elements count */ - &asn_SPC_OCUUP_PF_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUUP-PF-Container.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUUP-PF-Container.h deleted file mode 100644 index 9f19985..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OCUUP-PF-Container.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _OCUUP_PF_Container_H_ -#define _OCUUP_PF_Container_H_ - - -#include - -/* Including external dependencies */ -#include "GNB-CU-UP-Name.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PF_ContainerListItem; - -/* OCUUP-PF-Container */ -typedef struct OCUUP_PF_Container { - GNB_CU_UP_Name_t *gNB_CU_UP_Name; /* OPTIONAL */ - struct OCUUP_PF_Container__pf_ContainerList { - A_SEQUENCE_OF(struct PF_ContainerListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } pf_ContainerList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} OCUUP_PF_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_OCUUP_PF_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_OCUUP_PF_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_OCUUP_PF_Container_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PF-ContainerListItem.h" - -#endif /* _OCUUP_PF_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ODU-PF-Container.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ODU-PF-Container.c deleted file mode 100644 index a28d59a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ODU-PF-Container.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "ODU-PF-Container.h" - -static int -memb_cellResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 512)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CellResourceReportListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = { - sizeof(struct ODU_PF_Container__cellResourceReportList), - offsetof(struct ODU_PF_Container__cellResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = { - "cellResourceReportList", - "cellResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_cellResourceReportList_tags_2, - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_cellResourceReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_cellResourceReportList_2, - 1, /* Single element */ - &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ODU_PF_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ODU_PF_Container, cellResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_cellResourceReportList_2, - 0, - { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "cellResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_ODU_PF_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ODU_PF_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ODU_PF_Container_specs_1 = { - sizeof(struct ODU_PF_Container), - offsetof(struct ODU_PF_Container, _asn_ctx), - asn_MAP_ODU_PF_Container_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ODU_PF_Container = { - "ODU-PF-Container", - "ODU-PF-Container", - &asn_OP_SEQUENCE, - asn_DEF_ODU_PF_Container_tags_1, - sizeof(asn_DEF_ODU_PF_Container_tags_1) - /sizeof(asn_DEF_ODU_PF_Container_tags_1[0]), /* 1 */ - asn_DEF_ODU_PF_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_ODU_PF_Container_tags_1) - /sizeof(asn_DEF_ODU_PF_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ODU_PF_Container_1, - 1, /* Elements count */ - &asn_SPC_ODU_PF_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ODU-PF-Container.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ODU-PF-Container.h deleted file mode 100644 index 4da50a3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ODU-PF-Container.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _ODU_PF_Container_H_ -#define _ODU_PF_Container_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CellResourceReportListItem; - -/* ODU-PF-Container */ -typedef struct ODU_PF_Container { - struct ODU_PF_Container__cellResourceReportList { - A_SEQUENCE_OF(struct CellResourceReportListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cellResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ODU_PF_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ODU_PF_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_ODU_PF_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_ODU_PF_Container_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CellResourceReportListItem.h" - -#endif /* _ODU_PF_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.c deleted file mode 100644 index a54e99c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.c +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include -#include - -asn_TYPE_operation_t asn_OP_OPEN_TYPE = { - OPEN_TYPE_free, - OPEN_TYPE_print, - OPEN_TYPE_compare, - OPEN_TYPE_decode_ber, - OPEN_TYPE_encode_der, - OPEN_TYPE_decode_xer, - OPEN_TYPE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, 0, /* No OER support, use "-gen-OER" to enable */ -#else - OPEN_TYPE_decode_oer, - OPEN_TYPE_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, 0, 0, 0, -#else - OPEN_TYPE_decode_uper, - OPEN_TYPE_encode_uper, - OPEN_TYPE_decode_aper, - OPEN_TYPE_encode_aper, -#endif - 0, /* Random fill is not supported for open type */ - 0 /* Use generic outmost tag fetcher */ -}; - -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -asn_dec_rval_t -OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - ASN_DEBUG("presence %d\n", selected.presence_index); - - rv = selected.type_descriptor->op->ber_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, - elm->tag_mode); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - rv.code = RC_OK; - rv.consumed = consumed_myself; - return rv; - } else { - /* Oh, now a full-blown failure failure */ - } - /* Fall through */ - case RC_FAIL: - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - break; - } - - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; -} - -asn_dec_rval_t -OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - int xer_context = 0; - ssize_t ch_size; - pxer_chunk_type_e ch_type; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - /* - * Confirm wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_OPENING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = selected.type_descriptor->op->xer_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_FAIL: - /* Point to a best position where failure occurred */ - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - /* Wrt. rv.consumed==0: - * In case a genuine RC_WMORE, the whole Open Type decoding - * will have to be restarted. - */ - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; - } - - /* - * Finalize wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_CLOSING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - rv.consumed += consumed_myself; - - return rv; -} - - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.h deleted file mode 100644 index b0d023c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE.h +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE_oer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE_oer.c deleted file mode 100644 index dd2f5c6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/OPEN_TYPE_oer.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -asn_dec_rval_t -OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - asn_TYPE_member_t *elm, const void *ptr, size_t size) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - size_t ot_ret; - - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - ot_ret = oer_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, ptr, size); - switch(ot_ret) { - default: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - rv.code = RC_OK; - rv.consumed = ot_ret; - return rv; - } else { - /* Oh, now a full-blown failure failure */ - } - /* Fall through */ - case -1: - rv.code = RC_FAIL; - rv.consumed = ot_ret; - break; - case 0: - rv.code = RC_WMORE; - rv.consumed = 0; - break; - } - - if(*memb_ptr2) { - const asn_CHOICE_specifics_t *specs = - selected.type_descriptor->specifics; - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_FREE_CONTENTS_ONLY(*selected.type_descriptor, - inner_value); - memset(*memb_ptr2, 0, specs->struct_size); - } - } - return rv; -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.c deleted file mode 100644 index ce46255..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PF-Container.h" - -static asn_oer_constraints_t asn_OER_type_PF_Container_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_PF_Container_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_PF_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PF_Container, choice.oDU), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ODU_PF_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oDU" - }, - { ATF_NOFLAGS, 0, offsetof(struct PF_Container, choice.oCU_CP), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCUCP_PF_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oCU-CP" - }, - { ATF_NOFLAGS, 0, offsetof(struct PF_Container, choice.oCU_UP), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCUUP_PF_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oCU-UP" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_PF_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oDU */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* oCU-CP */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* oCU-UP */ -}; -asn_CHOICE_specifics_t asn_SPC_PF_Container_specs_1 = { - sizeof(struct PF_Container), - offsetof(struct PF_Container, _asn_ctx), - offsetof(struct PF_Container, present), - sizeof(((struct PF_Container *)0)->present), - asn_MAP_PF_Container_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_PF_Container = { - "PF-Container", - "PF-Container", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_PF_Container_constr_1, &asn_PER_type_PF_Container_constr_1, CHOICE_constraint }, - asn_MBR_PF_Container_1, - 3, /* Elements count */ - &asn_SPC_PF_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.h deleted file mode 100644 index 853642a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-Container.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PF_Container_H_ -#define _PF_Container_H_ - - -#include - -/* Including external dependencies */ -#include "ODU-PF-Container.h" -#include "OCUCP-PF-Container.h" -#include "OCUUP-PF-Container.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum PF_Container_PR { - PF_Container_PR_NOTHING, /* No components present */ - PF_Container_PR_oDU, - PF_Container_PR_oCU_CP, - PF_Container_PR_oCU_UP - /* Extensions may appear below */ - -} PF_Container_PR; - -/* PF-Container */ -typedef struct PF_Container { - PF_Container_PR present; - union PF_Container_u { - ODU_PF_Container_t oDU; - OCUCP_PF_Container_t oCU_CP; - OCUUP_PF_Container_t oCU_UP; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PF_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PF_Container; -extern asn_CHOICE_specifics_t asn_SPC_PF_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_PF_Container_1[3]; -extern asn_per_constraints_t asn_PER_type_PF_Container_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _PF_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-ContainerListItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-ContainerListItem.c deleted file mode 100644 index e3aad2c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-ContainerListItem.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PF-ContainerListItem.h" - -asn_TYPE_member_t asn_MBR_PF_ContainerListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PF_ContainerListItem, interface_type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NI_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interface-type" - }, - { ATF_NOFLAGS, 0, offsetof(struct PF_ContainerListItem, o_CU_UP_PM_Container), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CUUPMeasurement_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "o-CU-UP-PM-Container" - }, -}; -static const ber_tlv_tag_t asn_DEF_PF_ContainerListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PF_ContainerListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* o-CU-UP-PM-Container */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PF_ContainerListItem_specs_1 = { - sizeof(struct PF_ContainerListItem), - offsetof(struct PF_ContainerListItem, _asn_ctx), - asn_MAP_PF_ContainerListItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PF_ContainerListItem = { - "PF-ContainerListItem", - "PF-ContainerListItem", - &asn_OP_SEQUENCE, - asn_DEF_PF_ContainerListItem_tags_1, - sizeof(asn_DEF_PF_ContainerListItem_tags_1) - /sizeof(asn_DEF_PF_ContainerListItem_tags_1[0]), /* 1 */ - asn_DEF_PF_ContainerListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_PF_ContainerListItem_tags_1) - /sizeof(asn_DEF_PF_ContainerListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PF_ContainerListItem_1, - 2, /* Elements count */ - &asn_SPC_PF_ContainerListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-ContainerListItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-ContainerListItem.h deleted file mode 100644 index bc4495e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PF-ContainerListItem.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PF_ContainerListItem_H_ -#define _PF_ContainerListItem_H_ - - -#include - -/* Including external dependencies */ -#include "NI-Type.h" -#include "CUUPMeasurement-Container.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* PF-ContainerListItem */ -typedef struct PF_ContainerListItem { - NI_Type_t interface_type; - CUUPMeasurement_Container_t o_CU_UP_PM_Container; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PF_ContainerListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PF_ContainerListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_PF_ContainerListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_PF_ContainerListItem_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _PF_ContainerListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.c deleted file mode 100644 index e3754f8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PLMN-Identity.h" - -int -PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 3)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_PLMN_Identity_constr_1 CC_NOTUSED = { - { 0, 0 }, - 3 /* (SIZE(3..3)) */}; -asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = { - "PLMN-Identity", - "PLMN-Identity", - &asn_OP_OCTET_STRING, - asn_DEF_PLMN_Identity_tags_1, - sizeof(asn_DEF_PLMN_Identity_tags_1) - /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ - asn_DEF_PLMN_Identity_tags_1, /* Same as above */ - sizeof(asn_DEF_PLMN_Identity_tags_1) - /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ - { &asn_OER_type_PLMN_Identity_constr_1, &asn_PER_type_PLMN_Identity_constr_1, PLMN_Identity_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.h deleted file mode 100644 index 6835400..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PLMN-Identity.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PLMN_Identity_H_ -#define _PLMN_Identity_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* PLMN-Identity */ -typedef OCTET_STRING_t PLMN_Identity_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity; -asn_struct_free_f PLMN_Identity_free; -asn_struct_print_f PLMN_Identity_print; -asn_constr_check_f PLMN_Identity_constraint; -ber_type_decoder_f PLMN_Identity_decode_ber; -der_type_encoder_f PLMN_Identity_encode_der; -xer_type_decoder_f PLMN_Identity_decode_xer; -xer_type_encoder_f PLMN_Identity_encode_xer; -oer_type_decoder_f PLMN_Identity_decode_oer; -oer_type_encoder_f PLMN_Identity_encode_oer; -per_type_decoder_f PLMN_Identity_decode_uper; -per_type_encoder_f PLMN_Identity_encode_uper; -per_type_decoder_f PLMN_Identity_decode_aper; -per_type_encoder_f PLMN_Identity_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _PLMN_Identity_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PM-Containers-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PM-Containers-List.c deleted file mode 100644 index 326ec75..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PM-Containers-List.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PM-Containers-List.h" - -asn_TYPE_member_t asn_MBR_PM_Containers_List_1[] = { - { ATF_POINTER, 2, offsetof(struct PM_Containers_List, performanceContainer), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_PF_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "performanceContainer" - }, - { ATF_POINTER, 1, offsetof(struct PM_Containers_List, theRANContainer), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RAN_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "theRANContainer" - }, -}; -static const int asn_MAP_PM_Containers_List_oms_1[] = { 0, 1 }; -static const ber_tlv_tag_t asn_DEF_PM_Containers_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PM_Containers_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* performanceContainer */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* theRANContainer */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PM_Containers_List_specs_1 = { - sizeof(struct PM_Containers_List), - offsetof(struct PM_Containers_List, _asn_ctx), - asn_MAP_PM_Containers_List_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_PM_Containers_List_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PM_Containers_List = { - "PM-Containers-List", - "PM-Containers-List", - &asn_OP_SEQUENCE, - asn_DEF_PM_Containers_List_tags_1, - sizeof(asn_DEF_PM_Containers_List_tags_1) - /sizeof(asn_DEF_PM_Containers_List_tags_1[0]), /* 1 */ - asn_DEF_PM_Containers_List_tags_1, /* Same as above */ - sizeof(asn_DEF_PM_Containers_List_tags_1) - /sizeof(asn_DEF_PM_Containers_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PM_Containers_List_1, - 2, /* Elements count */ - &asn_SPC_PM_Containers_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PM-Containers-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PM-Containers-List.h deleted file mode 100644 index 0a99c3b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PM-Containers-List.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PM_Containers_List_H_ -#define _PM_Containers_List_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PF_Container; -struct RAN_Container; - -/* PM-Containers-List */ -typedef struct PM_Containers_List { - struct PF_Container *performanceContainer; /* OPTIONAL */ - struct RAN_Container *theRANContainer; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PM_Containers_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PM_Containers_List; -extern asn_SEQUENCE_specifics_t asn_SPC_PM_Containers_List_specs_1; -extern asn_TYPE_member_t asn_MBR_PM_Containers_List_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PF-Container.h" -#include "RAN-Container.h" - -#endif /* _PM_Containers_List_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItem.c deleted file mode 100644 index 1c57dfd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItem.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PerQCIReportListItem.h" - -static int -memb_qci_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_dl_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 100)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ul_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 100)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_qci_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_qci_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { 1, 1 } /* (0..100) */, - -1}; -static asn_per_constraints_t asn_PER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { 1, 1 } /* (0..100) */, - -1}; -static asn_per_constraints_t asn_PER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_PerQCIReportListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PerQCIReportListItem, qci), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_qci_constr_2, &asn_PER_memb_qci_constr_2, memb_qci_constraint_1 }, - 0, 0, /* No default value */ - "qci" - }, - { ATF_POINTER, 2, offsetof(struct PerQCIReportListItem, dl_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_dl_PRBUsage_constr_3, &asn_PER_memb_dl_PRBUsage_constr_3, memb_dl_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "dl-PRBUsage" - }, - { ATF_POINTER, 1, offsetof(struct PerQCIReportListItem, ul_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ul_PRBUsage_constr_4, &asn_PER_memb_ul_PRBUsage_constr_4, memb_ul_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "ul-PRBUsage" - }, -}; -static const int asn_MAP_PerQCIReportListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_PerQCIReportListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PerQCIReportListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* qci */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-PRBUsage */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ul-PRBUsage */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItem_specs_1 = { - sizeof(struct PerQCIReportListItem), - offsetof(struct PerQCIReportListItem, _asn_ctx), - asn_MAP_PerQCIReportListItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_PerQCIReportListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItem = { - "PerQCIReportListItem", - "PerQCIReportListItem", - &asn_OP_SEQUENCE, - asn_DEF_PerQCIReportListItem_tags_1, - sizeof(asn_DEF_PerQCIReportListItem_tags_1) - /sizeof(asn_DEF_PerQCIReportListItem_tags_1[0]), /* 1 */ - asn_DEF_PerQCIReportListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_PerQCIReportListItem_tags_1) - /sizeof(asn_DEF_PerQCIReportListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PerQCIReportListItem_1, - 3, /* Elements count */ - &asn_SPC_PerQCIReportListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItem.h deleted file mode 100644 index 32508ea..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItem.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PerQCIReportListItem_H_ -#define _PerQCIReportListItem_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* PerQCIReportListItem */ -typedef struct PerQCIReportListItem { - long qci; - long *dl_PRBUsage; /* OPTIONAL */ - long *ul_PRBUsage; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PerQCIReportListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_PerQCIReportListItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _PerQCIReportListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItemFormat.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItemFormat.c deleted file mode 100644 index 239cbd8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItemFormat.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PerQCIReportListItemFormat.h" - -static int -memb_qci_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_qci_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_qci_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_PerQCIReportListItemFormat_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PerQCIReportListItemFormat, qci), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_qci_constr_2, &asn_PER_memb_qci_constr_2, memb_qci_constraint_1 }, - 0, 0, /* No default value */ - "qci" - }, - { ATF_POINTER, 2, offsetof(struct PerQCIReportListItemFormat, pDCPBytesDL), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesDL_constr_3, &asn_PER_memb_pDCPBytesDL_constr_3, memb_pDCPBytesDL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesDL" - }, - { ATF_POINTER, 1, offsetof(struct PerQCIReportListItemFormat, pDCPBytesUL), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesUL_constr_4, &asn_PER_memb_pDCPBytesUL_constr_4, memb_pDCPBytesUL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesUL" - }, -}; -static const int asn_MAP_PerQCIReportListItemFormat_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_PerQCIReportListItemFormat_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PerQCIReportListItemFormat_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* qci */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pDCPBytesDL */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pDCPBytesUL */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItemFormat_specs_1 = { - sizeof(struct PerQCIReportListItemFormat), - offsetof(struct PerQCIReportListItemFormat, _asn_ctx), - asn_MAP_PerQCIReportListItemFormat_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_PerQCIReportListItemFormat_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItemFormat = { - "PerQCIReportListItemFormat", - "PerQCIReportListItemFormat", - &asn_OP_SEQUENCE, - asn_DEF_PerQCIReportListItemFormat_tags_1, - sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1) - /sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1[0]), /* 1 */ - asn_DEF_PerQCIReportListItemFormat_tags_1, /* Same as above */ - sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1) - /sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PerQCIReportListItemFormat_1, - 3, /* Elements count */ - &asn_SPC_PerQCIReportListItemFormat_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItemFormat.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItemFormat.h deleted file mode 100644 index 7fb1ecf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PerQCIReportListItemFormat.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PerQCIReportListItemFormat_H_ -#define _PerQCIReportListItemFormat_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* PerQCIReportListItemFormat */ -typedef struct PerQCIReportListItemFormat { - long qci; - INTEGER_t *pDCPBytesDL; /* OPTIONAL */ - INTEGER_t *pDCPBytesUL; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PerQCIReportListItemFormat_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItemFormat; -extern asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItemFormat_specs_1; -extern asn_TYPE_member_t asn_MBR_PerQCIReportListItemFormat_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _PerQCIReportListItemFormat_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.c deleted file mode 100644 index 2126cf5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PlmnID-List.h" - -asn_TYPE_member_t asn_MBR_PlmnID_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PlmnID_List, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_POINTER, 2, offsetof(struct PlmnID_List, cu_UP_PM_5GC), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_FGC_CUUP_PM_Format, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cu-UP-PM-5GC" - }, - { ATF_POINTER, 1, offsetof(struct PlmnID_List, cu_UP_PM_EPC), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_EPC_CUUP_PM_Format, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cu-UP-PM-EPC" - }, -}; -static const int asn_MAP_PlmnID_List_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_PlmnID_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PlmnID_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cu-UP-PM-5GC */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cu-UP-PM-EPC */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PlmnID_List_specs_1 = { - sizeof(struct PlmnID_List), - offsetof(struct PlmnID_List, _asn_ctx), - asn_MAP_PlmnID_List_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_PlmnID_List_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PlmnID_List = { - "PlmnID-List", - "PlmnID-List", - &asn_OP_SEQUENCE, - asn_DEF_PlmnID_List_tags_1, - sizeof(asn_DEF_PlmnID_List_tags_1) - /sizeof(asn_DEF_PlmnID_List_tags_1[0]), /* 1 */ - asn_DEF_PlmnID_List_tags_1, /* Same as above */ - sizeof(asn_DEF_PlmnID_List_tags_1) - /sizeof(asn_DEF_PlmnID_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PlmnID_List_1, - 3, /* Elements count */ - &asn_SPC_PlmnID_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.h deleted file mode 100644 index 79d1dd5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PlmnID-List.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PlmnID_List_H_ -#define _PlmnID_List_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct FGC_CUUP_PM_Format; -struct EPC_CUUP_PM_Format; - -/* PlmnID-List */ -typedef struct PlmnID_List { - PLMN_Identity_t pLMN_Identity; - struct FGC_CUUP_PM_Format *cu_UP_PM_5GC; /* OPTIONAL */ - struct EPC_CUUP_PM_Format *cu_UP_PM_EPC; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PlmnID_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PlmnID_List; -extern asn_SEQUENCE_specifics_t asn_SPC_PlmnID_List_specs_1; -extern asn_TYPE_member_t asn_MBR_PlmnID_List_1[3]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "FGC-CUUP-PM-Format.h" -#include "EPC-CUUP-PM-Format.h" - -#endif /* _PlmnID_List_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.c deleted file mode 100644 index 4f55ae3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "Presence.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_Presence_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = { - { 0, 8, "optional" }, - { 1, 11, "conditional" }, - { 2, 9, "mandatory" } -}; -static const unsigned int asn_MAP_Presence_enum2value_1[] = { - 1, /* conditional(1) */ - 2, /* mandatory(2) */ - 0 /* optional(0) */ -}; -const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = { - asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_Presence_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_Presence = { - "Presence", - "Presence", - &asn_OP_NativeEnumerated, - asn_DEF_Presence_tags_1, - sizeof(asn_DEF_Presence_tags_1) - /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ - asn_DEF_Presence_tags_1, /* Same as above */ - sizeof(asn_DEF_Presence_tags_1) - /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_Presence_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_Presence_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.h deleted file mode 100644 index 8f93430..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Presence.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _Presence_H_ -#define _Presence_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum Presence { - Presence_optional = 0, - Presence_conditional = 1, - Presence_mandatory = 2 -} e_Presence; - -/* Presence */ -typedef long Presence_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_Presence_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_Presence; -extern const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1; -asn_struct_free_f Presence_free; -asn_struct_print_f Presence_print; -asn_constr_check_f Presence_constraint; -ber_type_decoder_f Presence_decode_ber; -der_type_encoder_f Presence_encode_der; -xer_type_decoder_f Presence_decode_xer; -xer_type_encoder_f Presence_encode_xer; -per_type_decoder_f Presence_decode_uper; -per_type_encoder_f Presence_encode_uper; -per_type_decoder_f Presence_decode_aper; -per_type_encoder_f Presence_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _Presence_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PrintableString.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PrintableString.c deleted file mode 100644 index 8fc3939..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PrintableString.c +++ /dev/null @@ -1,130 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PrintableString.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PrintableString.h deleted file mode 100644 index 8c2b61a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/PrintableString.h +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.c deleted file mode 100644 index 0e488d4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ProcedureCode.h" - -int -ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProcedureCode = { - "ProcedureCode", - "ProcedureCode", - &asn_OP_NativeInteger, - asn_DEF_ProcedureCode_tags_1, - sizeof(asn_DEF_ProcedureCode_tags_1) - /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ - asn_DEF_ProcedureCode_tags_1, /* Same as above */ - sizeof(asn_DEF_ProcedureCode_tags_1) - /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_ProcedureCode_constr_1, ProcedureCode_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.h deleted file mode 100644 index a2e8fe8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProcedureCode.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ProcedureCode_H_ -#define _ProcedureCode_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ProcedureCode */ -typedef long ProcedureCode_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode; -asn_struct_free_f ProcedureCode_free; -asn_struct_print_f ProcedureCode_print; -asn_constr_check_f ProcedureCode_constraint; -ber_type_decoder_f ProcedureCode_decode_ber; -der_type_encoder_f ProcedureCode_encode_der; -xer_type_decoder_f ProcedureCode_decode_xer; -xer_type_encoder_f ProcedureCode_encode_xer; -per_type_decoder_f ProcedureCode_decode_uper; -per_type_encoder_f ProcedureCode_encode_uper; -per_type_decoder_f ProcedureCode_decode_aper; -per_type_encoder_f ProcedureCode_encode_aper; -#define ProcedureCode_id_E2setup ((ProcedureCode_t)1) -#define ProcedureCode_id_ErrorIndication ((ProcedureCode_t)2) -#define ProcedureCode_id_Reset ((ProcedureCode_t)3) -#define ProcedureCode_id_RICcontrol ((ProcedureCode_t)4) -#define ProcedureCode_id_RICindication ((ProcedureCode_t)5) -#define ProcedureCode_id_RICserviceQuery ((ProcedureCode_t)6) -#define ProcedureCode_id_RICserviceUpdate ((ProcedureCode_t)7) -#define ProcedureCode_id_RICsubscription ((ProcedureCode_t)8) -#define ProcedureCode_id_RICsubscriptionDelete ((ProcedureCode_t)9) - -#ifdef __cplusplus -} -#endif - -#endif /* _ProcedureCode_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Container.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Container.c deleted file mode 100644 index 4046387..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Container.c +++ /dev/null @@ -1,810 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ProtocolIE-Container.h" - -#include "ProtocolIE-Field.h" -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P0_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P1_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P2_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P3_constr_7 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P4_constr_9 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P5_constr_11 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P6_constr_13 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P7_constr_15 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P8_constr_17 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P9_constr_19 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P10_constr_21 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P11_constr_23 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P12_constr_25 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P13_constr_27 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P14_constr_29 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P15_constr_31 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P16_constr_33 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P17_constr_35 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P18_constr_37 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P19_constr_39 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P0_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionRequest_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P0_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P0_specs_1 = { - sizeof(struct ProtocolIE_Container_1527P0), - offsetof(struct ProtocolIE_Container_1527P0, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P0 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P0_tags_1, - sizeof(asn_DEF_ProtocolIE_Container_1527P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_Container_1527P0_tags_1[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P0_tags_1, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_Container_1527P0_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P0_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P0_1, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P0_specs_1 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P1_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionResponse_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P1_tags_3[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P1_specs_3 = { - sizeof(struct ProtocolIE_Container_1527P1), - offsetof(struct ProtocolIE_Container_1527P1, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P1 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P1_tags_3, - sizeof(asn_DEF_ProtocolIE_Container_1527P1_tags_3) - /sizeof(asn_DEF_ProtocolIE_Container_1527P1_tags_3[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P1_tags_3, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P1_tags_3) - /sizeof(asn_DEF_ProtocolIE_Container_1527P1_tags_3[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P1_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P1_3, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P1_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P2_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P2_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P2_specs_5 = { - sizeof(struct ProtocolIE_Container_1527P2), - offsetof(struct ProtocolIE_Container_1527P2, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P2 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P2_tags_5, - sizeof(asn_DEF_ProtocolIE_Container_1527P2_tags_5) - /sizeof(asn_DEF_ProtocolIE_Container_1527P2_tags_5[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P2_tags_5, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P2_tags_5) - /sizeof(asn_DEF_ProtocolIE_Container_1527P2_tags_5[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P2_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P2_5, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P2_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P3_7[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequest_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P3_tags_7[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P3_specs_7 = { - sizeof(struct ProtocolIE_Container_1527P3), - offsetof(struct ProtocolIE_Container_1527P3, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P3 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P3_tags_7, - sizeof(asn_DEF_ProtocolIE_Container_1527P3_tags_7) - /sizeof(asn_DEF_ProtocolIE_Container_1527P3_tags_7[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P3_tags_7, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P3_tags_7) - /sizeof(asn_DEF_ProtocolIE_Container_1527P3_tags_7[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P3_constr_7, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P3_7, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P3_specs_7 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P4_9[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteResponse_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P4_tags_9[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P4_specs_9 = { - sizeof(struct ProtocolIE_Container_1527P4), - offsetof(struct ProtocolIE_Container_1527P4, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P4 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P4_tags_9, - sizeof(asn_DEF_ProtocolIE_Container_1527P4_tags_9) - /sizeof(asn_DEF_ProtocolIE_Container_1527P4_tags_9[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P4_tags_9, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P4_tags_9) - /sizeof(asn_DEF_ProtocolIE_Container_1527P4_tags_9[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P4_constr_9, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P4_9, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P4_specs_9 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P5_11[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P5_tags_11[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P5_specs_11 = { - sizeof(struct ProtocolIE_Container_1527P5), - offsetof(struct ProtocolIE_Container_1527P5, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P5 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P5_tags_11, - sizeof(asn_DEF_ProtocolIE_Container_1527P5_tags_11) - /sizeof(asn_DEF_ProtocolIE_Container_1527P5_tags_11[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P5_tags_11, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P5_tags_11) - /sizeof(asn_DEF_ProtocolIE_Container_1527P5_tags_11[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P5_constr_11, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P5_11, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P5_specs_11 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P6_13[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICindication_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P6_tags_13[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P6_specs_13 = { - sizeof(struct ProtocolIE_Container_1527P6), - offsetof(struct ProtocolIE_Container_1527P6, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P6 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P6_tags_13, - sizeof(asn_DEF_ProtocolIE_Container_1527P6_tags_13) - /sizeof(asn_DEF_ProtocolIE_Container_1527P6_tags_13[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P6_tags_13, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P6_tags_13) - /sizeof(asn_DEF_ProtocolIE_Container_1527P6_tags_13[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P6_constr_13, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P6_13, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P6_specs_13 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P7_15[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolRequest_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P7_tags_15[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P7_specs_15 = { - sizeof(struct ProtocolIE_Container_1527P7), - offsetof(struct ProtocolIE_Container_1527P7, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P7 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P7_tags_15, - sizeof(asn_DEF_ProtocolIE_Container_1527P7_tags_15) - /sizeof(asn_DEF_ProtocolIE_Container_1527P7_tags_15[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P7_tags_15, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P7_tags_15) - /sizeof(asn_DEF_ProtocolIE_Container_1527P7_tags_15[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P7_constr_15, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P7_15, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P7_specs_15 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P8_17[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolAcknowledge_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P8_tags_17[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P8_specs_17 = { - sizeof(struct ProtocolIE_Container_1527P8), - offsetof(struct ProtocolIE_Container_1527P8, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P8 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P8_tags_17, - sizeof(asn_DEF_ProtocolIE_Container_1527P8_tags_17) - /sizeof(asn_DEF_ProtocolIE_Container_1527P8_tags_17[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P8_tags_17, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P8_tags_17) - /sizeof(asn_DEF_ProtocolIE_Container_1527P8_tags_17[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P8_constr_17, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P8_17, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P8_specs_17 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P9_19[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P9_tags_19[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P9_specs_19 = { - sizeof(struct ProtocolIE_Container_1527P9), - offsetof(struct ProtocolIE_Container_1527P9, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P9 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P9_tags_19, - sizeof(asn_DEF_ProtocolIE_Container_1527P9_tags_19) - /sizeof(asn_DEF_ProtocolIE_Container_1527P9_tags_19[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P9_tags_19, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P9_tags_19) - /sizeof(asn_DEF_ProtocolIE_Container_1527P9_tags_19[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P9_constr_19, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P9_19, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P9_specs_19 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P10_21[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ErrorIndication_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P10_tags_21[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P10_specs_21 = { - sizeof(struct ProtocolIE_Container_1527P10), - offsetof(struct ProtocolIE_Container_1527P10, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P10 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P10_tags_21, - sizeof(asn_DEF_ProtocolIE_Container_1527P10_tags_21) - /sizeof(asn_DEF_ProtocolIE_Container_1527P10_tags_21[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P10_tags_21, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P10_tags_21) - /sizeof(asn_DEF_ProtocolIE_Container_1527P10_tags_21[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P10_constr_21, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P10_21, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P10_specs_21 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P11_23[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupRequestIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P11_tags_23[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P11_specs_23 = { - sizeof(struct ProtocolIE_Container_1527P11), - offsetof(struct ProtocolIE_Container_1527P11, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P11 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P11_tags_23, - sizeof(asn_DEF_ProtocolIE_Container_1527P11_tags_23) - /sizeof(asn_DEF_ProtocolIE_Container_1527P11_tags_23[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P11_tags_23, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P11_tags_23) - /sizeof(asn_DEF_ProtocolIE_Container_1527P11_tags_23[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P11_constr_23, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P11_23, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P11_specs_23 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P12_25[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupResponseIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P12_tags_25[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P12_specs_25 = { - sizeof(struct ProtocolIE_Container_1527P12), - offsetof(struct ProtocolIE_Container_1527P12, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P12 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P12_tags_25, - sizeof(asn_DEF_ProtocolIE_Container_1527P12_tags_25) - /sizeof(asn_DEF_ProtocolIE_Container_1527P12_tags_25[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P12_tags_25, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P12_tags_25) - /sizeof(asn_DEF_ProtocolIE_Container_1527P12_tags_25[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P12_constr_25, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P12_25, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P12_specs_25 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P13_27[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupFailureIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P13_tags_27[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P13_specs_27 = { - sizeof(struct ProtocolIE_Container_1527P13), - offsetof(struct ProtocolIE_Container_1527P13, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P13 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P13_tags_27, - sizeof(asn_DEF_ProtocolIE_Container_1527P13_tags_27) - /sizeof(asn_DEF_ProtocolIE_Container_1527P13_tags_27[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P13_tags_27, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P13_tags_27) - /sizeof(asn_DEF_ProtocolIE_Container_1527P13_tags_27[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P13_constr_27, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P13_27, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P13_specs_27 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P14_29[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetRequestIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P14_tags_29[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P14_specs_29 = { - sizeof(struct ProtocolIE_Container_1527P14), - offsetof(struct ProtocolIE_Container_1527P14, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P14 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P14_tags_29, - sizeof(asn_DEF_ProtocolIE_Container_1527P14_tags_29) - /sizeof(asn_DEF_ProtocolIE_Container_1527P14_tags_29[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P14_tags_29, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P14_tags_29) - /sizeof(asn_DEF_ProtocolIE_Container_1527P14_tags_29[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P14_constr_29, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P14_29, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P14_specs_29 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P15_31[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetResponseIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P15_tags_31[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P15_specs_31 = { - sizeof(struct ProtocolIE_Container_1527P15), - offsetof(struct ProtocolIE_Container_1527P15, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P15 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P15_tags_31, - sizeof(asn_DEF_ProtocolIE_Container_1527P15_tags_31) - /sizeof(asn_DEF_ProtocolIE_Container_1527P15_tags_31[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P15_tags_31, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P15_tags_31) - /sizeof(asn_DEF_ProtocolIE_Container_1527P15_tags_31[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P15_constr_31, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P15_31, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P15_specs_31 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P16_33[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdate_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P16_tags_33[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P16_specs_33 = { - sizeof(struct ProtocolIE_Container_1527P16), - offsetof(struct ProtocolIE_Container_1527P16, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P16 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P16_tags_33, - sizeof(asn_DEF_ProtocolIE_Container_1527P16_tags_33) - /sizeof(asn_DEF_ProtocolIE_Container_1527P16_tags_33[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P16_tags_33, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P16_tags_33) - /sizeof(asn_DEF_ProtocolIE_Container_1527P16_tags_33[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P16_constr_33, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P16_33, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P16_specs_33 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P17_35[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateAcknowledge_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P17_tags_35[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P17_specs_35 = { - sizeof(struct ProtocolIE_Container_1527P17), - offsetof(struct ProtocolIE_Container_1527P17, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P17 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P17_tags_35, - sizeof(asn_DEF_ProtocolIE_Container_1527P17_tags_35) - /sizeof(asn_DEF_ProtocolIE_Container_1527P17_tags_35[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P17_tags_35, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P17_tags_35) - /sizeof(asn_DEF_ProtocolIE_Container_1527P17_tags_35[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P17_constr_35, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P17_35, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P17_specs_35 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P18_37[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P18_tags_37[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P18_specs_37 = { - sizeof(struct ProtocolIE_Container_1527P18), - offsetof(struct ProtocolIE_Container_1527P18, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P18 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P18_tags_37, - sizeof(asn_DEF_ProtocolIE_Container_1527P18_tags_37) - /sizeof(asn_DEF_ProtocolIE_Container_1527P18_tags_37[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P18_tags_37, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P18_tags_37) - /sizeof(asn_DEF_ProtocolIE_Container_1527P18_tags_37[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P18_constr_37, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P18_37, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P18_specs_37 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P19_39[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceQuery_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1527P19_tags_39[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P19_specs_39 = { - sizeof(struct ProtocolIE_Container_1527P19), - offsetof(struct ProtocolIE_Container_1527P19, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P19 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1527P19_tags_39, - sizeof(asn_DEF_ProtocolIE_Container_1527P19_tags_39) - /sizeof(asn_DEF_ProtocolIE_Container_1527P19_tags_39[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1527P19_tags_39, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1527P19_tags_39) - /sizeof(asn_DEF_ProtocolIE_Container_1527P19_tags_39[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1527P19_constr_39, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1527P19_39, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1527P19_specs_39 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Container.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Container.h deleted file mode 100644 index 5034a64..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Container.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ProtocolIE_Container_H_ -#define _ProtocolIE_Container_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RICsubscriptionRequest_IEs; -struct RICsubscriptionResponse_IEs; -struct RICsubscriptionFailure_IEs; -struct RICsubscriptionDeleteRequest_IEs; -struct RICsubscriptionDeleteResponse_IEs; -struct RICsubscriptionDeleteFailure_IEs; -struct RICindication_IEs; -struct RICcontrolRequest_IEs; -struct RICcontrolAcknowledge_IEs; -struct RICcontrolFailure_IEs; -struct ErrorIndication_IEs; -struct E2setupRequestIEs; -struct E2setupResponseIEs; -struct E2setupFailureIEs; -struct ResetRequestIEs; -struct ResetResponseIEs; -struct RICserviceUpdate_IEs; -struct RICserviceUpdateAcknowledge_IEs; -struct RICserviceUpdateFailure_IEs; -struct RICserviceQuery_IEs; - -/* ProtocolIE-Container */ -typedef struct ProtocolIE_Container_1527P0 { - A_SEQUENCE_OF(struct RICsubscriptionRequest_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P0_t; -typedef struct ProtocolIE_Container_1527P1 { - A_SEQUENCE_OF(struct RICsubscriptionResponse_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P1_t; -typedef struct ProtocolIE_Container_1527P2 { - A_SEQUENCE_OF(struct RICsubscriptionFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P2_t; -typedef struct ProtocolIE_Container_1527P3 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteRequest_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P3_t; -typedef struct ProtocolIE_Container_1527P4 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteResponse_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P4_t; -typedef struct ProtocolIE_Container_1527P5 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P5_t; -typedef struct ProtocolIE_Container_1527P6 { - A_SEQUENCE_OF(struct RICindication_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P6_t; -typedef struct ProtocolIE_Container_1527P7 { - A_SEQUENCE_OF(struct RICcontrolRequest_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P7_t; -typedef struct ProtocolIE_Container_1527P8 { - A_SEQUENCE_OF(struct RICcontrolAcknowledge_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P8_t; -typedef struct ProtocolIE_Container_1527P9 { - A_SEQUENCE_OF(struct RICcontrolFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P9_t; -typedef struct ProtocolIE_Container_1527P10 { - A_SEQUENCE_OF(struct ErrorIndication_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P10_t; -typedef struct ProtocolIE_Container_1527P11 { - A_SEQUENCE_OF(struct E2setupRequestIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P11_t; -typedef struct ProtocolIE_Container_1527P12 { - A_SEQUENCE_OF(struct E2setupResponseIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P12_t; -typedef struct ProtocolIE_Container_1527P13 { - A_SEQUENCE_OF(struct E2setupFailureIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P13_t; -typedef struct ProtocolIE_Container_1527P14 { - A_SEQUENCE_OF(struct ResetRequestIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P14_t; -typedef struct ProtocolIE_Container_1527P15 { - A_SEQUENCE_OF(struct ResetResponseIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P15_t; -typedef struct ProtocolIE_Container_1527P16 { - A_SEQUENCE_OF(struct RICserviceUpdate_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P16_t; -typedef struct ProtocolIE_Container_1527P17 { - A_SEQUENCE_OF(struct RICserviceUpdateAcknowledge_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P17_t; -typedef struct ProtocolIE_Container_1527P18 { - A_SEQUENCE_OF(struct RICserviceUpdateFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P18_t; -typedef struct ProtocolIE_Container_1527P19 { - A_SEQUENCE_OF(struct RICserviceQuery_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1527P19_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P0; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P0_specs_1; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P0_1[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P0_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P1; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P1_specs_3; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P1_3[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P1_constr_3; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P2; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P2_specs_5; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P2_5[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P2_constr_5; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P3; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P3_specs_7; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P3_7[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P3_constr_7; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P4; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P4_specs_9; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P4_9[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P4_constr_9; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P5; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P5_specs_11; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P5_11[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P5_constr_11; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P6; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P6_specs_13; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P6_13[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P6_constr_13; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P7; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P7_specs_15; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P7_15[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P7_constr_15; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P8; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P8_specs_17; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P8_17[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P8_constr_17; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P9; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P9_specs_19; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P9_19[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P9_constr_19; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P10; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P10_specs_21; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P10_21[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P10_constr_21; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P11; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P11_specs_23; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P11_23[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P11_constr_23; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P12; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P12_specs_25; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P12_25[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P12_constr_25; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P13; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P13_specs_27; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P13_27[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P13_constr_27; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P14; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P14_specs_29; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P14_29[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P14_constr_29; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P15; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P15_specs_31; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P15_31[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P15_constr_31; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P16; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P16_specs_33; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P16_33[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P16_constr_33; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P17; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P17_specs_35; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P17_35[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P17_constr_35; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P18; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P18_specs_37; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P18_37[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P18_constr_37; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1527P19; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1527P19_specs_39; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1527P19_39[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1527P19_constr_39; - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_Container_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerList.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerList.c deleted file mode 100644 index c9d5808..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerList.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ProtocolIE-ContainerList.h" - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerList.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerList.h deleted file mode 100644 index 3376410..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerList.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ProtocolIE_ContainerList_H_ -#define _ProtocolIE_ContainerList_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ContainerList_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.c deleted file mode 100644 index ad1c8b8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ProtocolIE-ContainerPair.h" - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.h deleted file mode 100644 index 5b730c7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPair.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ProtocolIE_ContainerPair_H_ -#define _ProtocolIE_ContainerPair_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ContainerPair_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.c deleted file mode 100644 index f77445b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ProtocolIE-ContainerPairList.h" - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.h deleted file mode 100644 index 1837ac8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ContainerPairList.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ProtocolIE_ContainerPairList_H_ -#define _ProtocolIE_ContainerPairList_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ContainerPairList_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Field.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Field.c deleted file mode 100644 index af5597c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Field.c +++ /dev/null @@ -1,7190 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ProtocolIE-Field.h" - -static const long asn_VAL_4_id_RICaction_ToBeSetup_Item = 19; -static const long asn_VAL_4_ignore = 1; -static const long asn_VAL_4_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_RICaction_ToBeSetup_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_ignore }, - { "&Value", aioc__type, &asn_DEF_RICaction_ToBeSetup_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows } -}; -static const long asn_VAL_9_id_RICaction_Admitted_Item = 14; -static const long asn_VAL_9_ignore = 1; -static const long asn_VAL_9_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICaction_Admitted_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_RICaction_Admitted_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, - { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICaction_Admitted_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICaction_Admitted_ItemIEs_1_rows } -}; -static const long asn_VAL_10_id_RICaction_NotAdmitted_Item = 16; -static const long asn_VAL_10_ignore = 1; -static const long asn_VAL_10_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_RICaction_NotAdmitted_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, - { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows } -}; -static const long asn_VAL_64_id_RANfunction_Item = 8; -static const long asn_VAL_64_ignore = 1; -static const long asn_VAL_64_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RANfunction_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_RANfunction_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunction_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RANfunction_ItemIEs_1[] = { - { 1, 4, asn_IOS_RANfunction_ItemIEs_1_rows } -}; -static const long asn_VAL_65_id_RANfunctionID_Item = 6; -static const long asn_VAL_65_ignore = 1; -static const long asn_VAL_65_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RANfunctionID_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_RANfunctionID_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RANfunctionID_ItemIEs_1[] = { - { 1, 4, asn_IOS_RANfunctionID_ItemIEs_1_rows } -}; -static const long asn_VAL_68_id_RANfunctionIEcause_Item = 7; -static const long asn_VAL_68_ignore = 1; -static const long asn_VAL_68_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RANfunctionIDcause_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_RANfunctionIEcause_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunctionIDcause_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RANfunctionIDcause_ItemIEs_1[] = { - { 1, 4, asn_IOS_RANfunctionIDcause_ItemIEs_1_rows } -}; -static const long asn_VAL_1_id_RICrequestID = 29; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_1_mandatory = 2; -static const long asn_VAL_2_id_RANfunctionID = 5; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_2_mandatory = 2; -static const long asn_VAL_3_id_RICsubscriptionDetails = 30; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_3_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionRequest_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_RICsubscriptionDetails }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&Value", aioc__type, &asn_DEF_RICsubscriptionDetails }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionRequest_IEs_1[] = { - { 3, 4, asn_IOS_RICsubscriptionRequest_IEs_1_rows } -}; -static const long asn_VAL_5_id_RICrequestID = 29; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_5_mandatory = 2; -static const long asn_VAL_6_id_RANfunctionID = 5; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_6_mandatory = 2; -static const long asn_VAL_7_id_RICactions_Admitted = 17; -static const long asn_VAL_7_reject = 0; -static const long asn_VAL_7_mandatory = 2; -static const long asn_VAL_8_id_RICactions_NotAdmitted = 18; -static const long asn_VAL_8_reject = 0; -static const long asn_VAL_8_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionResponse_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_RICactions_Admitted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, - { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_RICactions_NotAdmitted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, - { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_optional } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionResponse_IEs_1[] = { - { 4, 4, asn_IOS_RICsubscriptionResponse_IEs_1_rows } -}; -static const long asn_VAL_11_id_RICrequestID = 29; -static const long asn_VAL_11_reject = 0; -static const long asn_VAL_11_mandatory = 2; -static const long asn_VAL_12_id_RANfunctionID = 5; -static const long asn_VAL_12_reject = 0; -static const long asn_VAL_12_mandatory = 2; -static const long asn_VAL_13_id_RICactions_NotAdmitted = 18; -static const long asn_VAL_13_reject = 0; -static const long asn_VAL_13_mandatory = 2; -static const long asn_VAL_14_id_CriticalityDiagnostics = 2; -static const long asn_VAL_14_ignore = 1; -static const long asn_VAL_14_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_RICactions_NotAdmitted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_reject }, - { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_optional } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionFailure_IEs_1[] = { - { 4, 4, asn_IOS_RICsubscriptionFailure_IEs_1_rows } -}; -static const long asn_VAL_15_id_RICrequestID = 29; -static const long asn_VAL_15_reject = 0; -static const long asn_VAL_15_mandatory = 2; -static const long asn_VAL_16_id_RANfunctionID = 5; -static const long asn_VAL_16_reject = 0; -static const long asn_VAL_16_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1[] = { - { 2, 4, asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows } -}; -static const long asn_VAL_17_id_RICrequestID = 29; -static const long asn_VAL_17_reject = 0; -static const long asn_VAL_17_mandatory = 2; -static const long asn_VAL_18_id_RANfunctionID = 5; -static const long asn_VAL_18_reject = 0; -static const long asn_VAL_18_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1[] = { - { 2, 4, asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows } -}; -static const long asn_VAL_19_id_RICrequestID = 29; -static const long asn_VAL_19_reject = 0; -static const long asn_VAL_19_mandatory = 2; -static const long asn_VAL_20_id_RANfunctionID = 5; -static const long asn_VAL_20_reject = 0; -static const long asn_VAL_20_mandatory = 2; -static const long asn_VAL_21_id_Cause = 1; -static const long asn_VAL_21_ignore = 1; -static const long asn_VAL_21_mandatory = 2; -static const long asn_VAL_22_id_CriticalityDiagnostics = 2; -static const long asn_VAL_22_ignore = 1; -static const long asn_VAL_22_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_optional } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1[] = { - { 4, 4, asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows } -}; -static const long asn_VAL_23_id_RICrequestID = 29; -static const long asn_VAL_23_reject = 0; -static const long asn_VAL_23_mandatory = 2; -static const long asn_VAL_24_id_RANfunctionID = 5; -static const long asn_VAL_24_reject = 0; -static const long asn_VAL_24_mandatory = 2; -static const long asn_VAL_25_id_RICactionID = 15; -static const long asn_VAL_25_reject = 0; -static const long asn_VAL_25_mandatory = 2; -static const long asn_VAL_26_id_RICindicationSN = 27; -static const long asn_VAL_26_reject = 0; -static const long asn_VAL_26_optional = 0; -static const long asn_VAL_27_id_RICindicationType = 28; -static const long asn_VAL_27_reject = 0; -static const long asn_VAL_27_mandatory = 2; -static const long asn_VAL_28_id_RICindicationHeader = 25; -static const long asn_VAL_28_reject = 0; -static const long asn_VAL_28_mandatory = 2; -static const long asn_VAL_29_id_RICindicationMessage = 26; -static const long asn_VAL_29_reject = 0; -static const long asn_VAL_29_mandatory = 2; -static const long asn_VAL_30_id_RICcallProcessID = 20; -static const long asn_VAL_30_reject = 0; -static const long asn_VAL_30_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICindication_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_RICactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_reject }, - { "&Value", aioc__type, &asn_DEF_RICactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_RICindicationSN }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationSN }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_RICindicationType }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationType }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_RICindicationHeader }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationHeader }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_RICindicationMessage }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationMessage }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_optional } -}; -static const asn_ioc_set_t asn_IOS_RICindication_IEs_1[] = { - { 8, 4, asn_IOS_RICindication_IEs_1_rows } -}; -static const long asn_VAL_31_id_RICrequestID = 29; -static const long asn_VAL_31_reject = 0; -static const long asn_VAL_31_mandatory = 2; -static const long asn_VAL_32_id_RANfunctionID = 5; -static const long asn_VAL_32_reject = 0; -static const long asn_VAL_32_mandatory = 2; -static const long asn_VAL_33_id_RICcallProcessID = 20; -static const long asn_VAL_33_reject = 0; -static const long asn_VAL_33_optional = 0; -static const long asn_VAL_34_id_RICcontrolHeader = 22; -static const long asn_VAL_34_reject = 0; -static const long asn_VAL_34_mandatory = 2; -static const long asn_VAL_35_id_RICcontrolMessage = 23; -static const long asn_VAL_35_reject = 0; -static const long asn_VAL_35_mandatory = 2; -static const long asn_VAL_36_id_RICcontrolAckRequest = 21; -static const long asn_VAL_36_reject = 0; -static const long asn_VAL_36_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICcontrolRequest_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_RICcontrolHeader }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolHeader }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_RICcontrolMessage }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolMessage }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_RICcontrolAckRequest }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolAckRequest }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_optional } -}; -static const asn_ioc_set_t asn_IOS_RICcontrolRequest_IEs_1[] = { - { 6, 4, asn_IOS_RICcontrolRequest_IEs_1_rows } -}; -static const long asn_VAL_37_id_RICrequestID = 29; -static const long asn_VAL_37_reject = 0; -static const long asn_VAL_37_mandatory = 2; -static const long asn_VAL_38_id_RANfunctionID = 5; -static const long asn_VAL_38_reject = 0; -static const long asn_VAL_38_mandatory = 2; -static const long asn_VAL_39_id_RICcallProcessID = 20; -static const long asn_VAL_39_reject = 0; -static const long asn_VAL_39_optional = 0; -static const long asn_VAL_40_id_RICcontrolStatus = 24; -static const long asn_VAL_40_reject = 0; -static const long asn_VAL_40_mandatory = 2; -static const long asn_VAL_41_id_RICcontrolOutcome = 32; -static const long asn_VAL_41_reject = 0; -static const long asn_VAL_41_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICcontrolAcknowledge_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_RICcontrolStatus }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolStatus }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_RICcontrolOutcome }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_optional } -}; -static const asn_ioc_set_t asn_IOS_RICcontrolAcknowledge_IEs_1[] = { - { 5, 4, asn_IOS_RICcontrolAcknowledge_IEs_1_rows } -}; -static const long asn_VAL_42_id_RICrequestID = 29; -static const long asn_VAL_42_reject = 0; -static const long asn_VAL_42_mandatory = 2; -static const long asn_VAL_43_id_RANfunctionID = 5; -static const long asn_VAL_43_reject = 0; -static const long asn_VAL_43_mandatory = 2; -static const long asn_VAL_44_id_RICcallProcessID = 20; -static const long asn_VAL_44_reject = 0; -static const long asn_VAL_44_optional = 0; -static const long asn_VAL_45_id_Cause = 1; -static const long asn_VAL_45_ignore = 1; -static const long asn_VAL_45_mandatory = 2; -static const long asn_VAL_46_id_RICcontrolOutcome = 32; -static const long asn_VAL_46_reject = 0; -static const long asn_VAL_46_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICcontrolFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_RICcontrolOutcome }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_optional } -}; -static const asn_ioc_set_t asn_IOS_RICcontrolFailure_IEs_1[] = { - { 5, 4, asn_IOS_RICcontrolFailure_IEs_1_rows } -}; -static const long asn_VAL_47_id_RICrequestID = 29; -static const long asn_VAL_47_reject = 0; -static const long asn_VAL_47_optional = 0; -static const long asn_VAL_48_id_RANfunctionID = 5; -static const long asn_VAL_48_reject = 0; -static const long asn_VAL_48_optional = 0; -static const long asn_VAL_49_id_Cause = 1; -static const long asn_VAL_49_ignore = 1; -static const long asn_VAL_49_optional = 0; -static const long asn_VAL_50_id_CriticalityDiagnostics = 2; -static const long asn_VAL_50_ignore = 1; -static const long asn_VAL_50_optional = 0; -static const asn_ioc_cell_t asn_IOS_ErrorIndication_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_optional } -}; -static const asn_ioc_set_t asn_IOS_ErrorIndication_IEs_1[] = { - { 4, 4, asn_IOS_ErrorIndication_IEs_1_rows } -}; -static const long asn_VAL_51_id_GlobalE2node_ID = 3; -static const long asn_VAL_51_reject = 0; -static const long asn_VAL_51_mandatory = 2; -static const long asn_VAL_52_id_RANfunctionsAdded = 10; -static const long asn_VAL_52_reject = 0; -static const long asn_VAL_52_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2setupRequestIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_GlobalE2node_ID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_reject }, - { "&Value", aioc__type, &asn_DEF_GlobalE2node_ID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_RANfunctionsAdded }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_optional } -}; -static const asn_ioc_set_t asn_IOS_E2setupRequestIEs_1[] = { - { 2, 4, asn_IOS_E2setupRequestIEs_1_rows } -}; -static const long asn_VAL_53_id_GlobalRIC_ID = 4; -static const long asn_VAL_53_reject = 0; -static const long asn_VAL_53_mandatory = 2; -static const long asn_VAL_54_id_RANfunctionsAccepted = 9; -static const long asn_VAL_54_reject = 0; -static const long asn_VAL_54_optional = 0; -static const long asn_VAL_55_id_RANfunctionsRejected = 13; -static const long asn_VAL_55_reject = 0; -static const long asn_VAL_55_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2setupResponseIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_GlobalRIC_ID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_reject }, - { "&Value", aioc__type, &asn_DEF_GlobalRIC_ID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_RANfunctionsAccepted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_RANfunctionsRejected }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_optional } -}; -static const asn_ioc_set_t asn_IOS_E2setupResponseIEs_1[] = { - { 3, 4, asn_IOS_E2setupResponseIEs_1_rows } -}; -static const long asn_VAL_56_id_Cause = 1; -static const long asn_VAL_56_ignore = 1; -static const long asn_VAL_56_mandatory = 2; -static const long asn_VAL_57_id_TimeToWait = 31; -static const long asn_VAL_57_ignore = 1; -static const long asn_VAL_57_optional = 0; -static const long asn_VAL_58_id_CriticalityDiagnostics = 2; -static const long asn_VAL_58_ignore = 1; -static const long asn_VAL_58_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2setupFailureIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_optional } -}; -static const asn_ioc_set_t asn_IOS_E2setupFailureIEs_1[] = { - { 3, 4, asn_IOS_E2setupFailureIEs_1_rows } -}; -static const long asn_VAL_59_id_Cause = 1; -static const long asn_VAL_59_ignore = 1; -static const long asn_VAL_59_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_ResetRequestIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_mandatory } -}; -static const asn_ioc_set_t asn_IOS_ResetRequestIEs_1[] = { - { 1, 4, asn_IOS_ResetRequestIEs_1_rows } -}; -static const long asn_VAL_60_id_CriticalityDiagnostics = 2; -static const long asn_VAL_60_ignore = 1; -static const long asn_VAL_60_optional = 0; -static const asn_ioc_cell_t asn_IOS_ResetResponseIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_optional } -}; -static const asn_ioc_set_t asn_IOS_ResetResponseIEs_1[] = { - { 1, 4, asn_IOS_ResetResponseIEs_1_rows } -}; -static const long asn_VAL_61_id_RANfunctionsAdded = 10; -static const long asn_VAL_61_reject = 0; -static const long asn_VAL_61_optional = 0; -static const long asn_VAL_62_id_RANfunctionsModified = 12; -static const long asn_VAL_62_reject = 0; -static const long asn_VAL_62_optional = 0; -static const long asn_VAL_63_id_RANfunctionsDeleted = 11; -static const long asn_VAL_63_reject = 0; -static const long asn_VAL_63_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceUpdate_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_RANfunctionsAdded }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_RANfunctionsModified }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_RANfunctionsDeleted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceUpdate_IEs_1[] = { - { 3, 4, asn_IOS_RICserviceUpdate_IEs_1_rows } -}; -static const long asn_VAL_66_id_RANfunctionsAccepted = 9; -static const long asn_VAL_66_reject = 0; -static const long asn_VAL_66_optional = 0; -static const long asn_VAL_67_id_RANfunctionsRejected = 13; -static const long asn_VAL_67_reject = 0; -static const long asn_VAL_67_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_RANfunctionsAccepted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_RANfunctionsRejected }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1[] = { - { 2, 4, asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows } -}; -static const long asn_VAL_69_id_RANfunctionsRejected = 13; -static const long asn_VAL_69_ignore = 1; -static const long asn_VAL_69_optional = 0; -static const long asn_VAL_70_id_TimeToWait = 31; -static const long asn_VAL_70_ignore = 1; -static const long asn_VAL_70_optional = 0; -static const long asn_VAL_71_id_CriticalityDiagnostics = 2; -static const long asn_VAL_71_ignore = 1; -static const long asn_VAL_71_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceUpdateFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_RANfunctionsRejected }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceUpdateFailure_IEs_1[] = { - { 3, 4, asn_IOS_RICserviceUpdateFailure_IEs_1_rows } -}; -static const long asn_VAL_72_id_RANfunctionsAccepted = 9; -static const long asn_VAL_72_reject = 0; -static const long asn_VAL_72_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceQuery_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_RANfunctionsAccepted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceQuery_IEs_1[] = { - { 1, 4, asn_IOS_RICserviceQuery_IEs_1_rows } -}; -static int -memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICaction_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICaction_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICaction_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICaction_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICaction_NotAdmitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICaction_NotAdmitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RANfunction_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RANfunction_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RANfunctionID_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RANfunctionID_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RANfunctionIDcause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RANfunctionIDcause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICindication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICindication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICcontrolRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICcontrolRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICcontrolAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICcontrolAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICcontrolFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICcontrolFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_ErrorIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_ErrorIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2setupRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2setupRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2setupResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2setupResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2setupFailureIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2setupFailureIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_ResetRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_ResetRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_ResetResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_ResetResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceQuery_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceQuery_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_8 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_12 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_16 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_20 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_24 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_28 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_32 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_36 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_40 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_44 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_48 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_52 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_56 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_60 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_64 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_68 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_72 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_76 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_80 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_84 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_88 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_92 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_96 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_100 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_104 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs__value, choice.RICaction_ToBeSetup_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_ToBeSetup_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-ToBeSetup-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeSetup-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct RICaction_ToBeSetup_ItemIEs__value), - offsetof(struct RICaction_ToBeSetup_ItemIEs__value, _asn_ctx), - offsetof(struct RICaction_ToBeSetup_ItemIEs__value, present), - sizeof(((struct RICaction_ToBeSetup_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_4, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 1, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICaction_ToBeSetup_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_RICaction_ToBeSetup_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 = { - sizeof(struct RICaction_ToBeSetup_ItemIEs), - offsetof(struct RICaction_ToBeSetup_ItemIEs, _asn_ctx), - asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs = { - "RICaction-ToBeSetup-ItemIEs", - "RICaction-ToBeSetup-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, - sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ - asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_ToBeSetup_ItemIEs_1, - 3, /* Elements count */ - &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_8[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs__value, choice.RICaction_Admitted_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_Admitted_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-Admitted-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_8[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-Admitted-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_8 = { - sizeof(struct RICaction_Admitted_ItemIEs__value), - offsetof(struct RICaction_Admitted_ItemIEs__value, _asn_ctx), - offsetof(struct RICaction_Admitted_ItemIEs__value, present), - sizeof(((struct RICaction_Admitted_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_8, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_8 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_8, - 1, /* Elements count */ - &asn_SPC_value_specs_8 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_6, memb_id_constraint_5 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICaction_Admitted_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_7, memb_criticality_constraint_5 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_8, - select_RICaction_Admitted_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_8, memb_value_constraint_5 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_ItemIEs_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5 = { - sizeof(struct RICaction_Admitted_ItemIEs), - offsetof(struct RICaction_Admitted_ItemIEs, _asn_ctx), - asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs = { - "RICaction-Admitted-ItemIEs", - "RICaction-Admitted-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_Admitted_ItemIEs_tags_5, - sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) - /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ - asn_DEF_RICaction_Admitted_ItemIEs_tags_5, /* Same as above */ - sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) - /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_Admitted_ItemIEs_5, - 3, /* Elements count */ - &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_12[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs__value, choice.RICaction_NotAdmitted_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_NotAdmitted_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-NotAdmitted-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_12[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-NotAdmitted-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_12 = { - sizeof(struct RICaction_NotAdmitted_ItemIEs__value), - offsetof(struct RICaction_NotAdmitted_ItemIEs__value, _asn_ctx), - offsetof(struct RICaction_NotAdmitted_ItemIEs__value, present), - sizeof(((struct RICaction_NotAdmitted_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_12, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_12 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_12, - 1, /* Elements count */ - &asn_SPC_value_specs_12 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_10, memb_id_constraint_9 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICaction_NotAdmitted_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_11, memb_criticality_constraint_9 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_12, - select_RICaction_NotAdmitted_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_12, memb_value_constraint_9 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 = { - sizeof(struct RICaction_NotAdmitted_ItemIEs), - offsetof(struct RICaction_NotAdmitted_ItemIEs, _asn_ctx), - asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs = { - "RICaction-NotAdmitted-ItemIEs", - "RICaction-NotAdmitted-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, - sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) - /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ - asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, /* Same as above */ - sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) - /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_NotAdmitted_ItemIEs_9, - 3, /* Elements count */ - &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_16[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs__value, choice.RANfunction_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunction_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunction-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_16[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunction-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_16 = { - sizeof(struct RANfunction_ItemIEs__value), - offsetof(struct RANfunction_ItemIEs__value, _asn_ctx), - offsetof(struct RANfunction_ItemIEs__value, present), - sizeof(((struct RANfunction_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_16, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_16 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_16, - 1, /* Elements count */ - &asn_SPC_value_specs_16 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_14, memb_id_constraint_13 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RANfunction_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_15, memb_criticality_constraint_13 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_16, - select_RANfunction_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_16, memb_value_constraint_13 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunction_ItemIEs_tags_13[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunction_ItemIEs_tag2el_13[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13 = { - sizeof(struct RANfunction_ItemIEs), - offsetof(struct RANfunction_ItemIEs, _asn_ctx), - asn_MAP_RANfunction_ItemIEs_tag2el_13, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs = { - "RANfunction-ItemIEs", - "RANfunction-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RANfunction_ItemIEs_tags_13, - sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) - /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ - asn_DEF_RANfunction_ItemIEs_tags_13, /* Same as above */ - sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) - /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_ItemIEs_13, - 3, /* Elements count */ - &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_20[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs__value, choice.RANfunctionID_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionID_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_20[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionID-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_20 = { - sizeof(struct RANfunctionID_ItemIEs__value), - offsetof(struct RANfunctionID_ItemIEs__value, _asn_ctx), - offsetof(struct RANfunctionID_ItemIEs__value, present), - sizeof(((struct RANfunctionID_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_20, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_20 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_20, - 1, /* Elements count */ - &asn_SPC_value_specs_20 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_18, memb_id_constraint_17 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RANfunctionID_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_19, memb_criticality_constraint_17 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_20, - select_RANfunctionID_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_20, memb_value_constraint_17 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionID_ItemIEs_tags_17[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_ItemIEs_tag2el_17[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17 = { - sizeof(struct RANfunctionID_ItemIEs), - offsetof(struct RANfunctionID_ItemIEs, _asn_ctx), - asn_MAP_RANfunctionID_ItemIEs_tag2el_17, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs = { - "RANfunctionID-ItemIEs", - "RANfunctionID-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionID_ItemIEs_tags_17, - sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) - /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ - asn_DEF_RANfunctionID_ItemIEs_tags_17, /* Same as above */ - sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) - /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionID_ItemIEs_17, - 3, /* Elements count */ - &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_24[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs__value, choice.RANfunctionIDcause_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionIDcause_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionIDcause-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_24[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionIDcause-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_24 = { - sizeof(struct RANfunctionIDcause_ItemIEs__value), - offsetof(struct RANfunctionIDcause_ItemIEs__value, _asn_ctx), - offsetof(struct RANfunctionIDcause_ItemIEs__value, present), - sizeof(((struct RANfunctionIDcause_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_24, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_24 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_24, - 1, /* Elements count */ - &asn_SPC_value_specs_24 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_22, memb_id_constraint_21 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RANfunctionIDcause_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_23, memb_criticality_constraint_21 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_24, - select_RANfunctionIDcause_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_24, memb_value_constraint_21 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 = { - sizeof(struct RANfunctionIDcause_ItemIEs), - offsetof(struct RANfunctionIDcause_ItemIEs, _asn_ctx), - asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs = { - "RANfunctionIDcause-ItemIEs", - "RANfunctionIDcause-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, - sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) - /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ - asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, /* Same as above */ - sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) - /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionIDcause_ItemIEs_21, - 3, /* Elements count */ - &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_28[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscriptionDetails), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDetails, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDetails" - }, -}; -static const unsigned asn_MAP_value_to_canonical_28[] = { 1, 0, 2 }; -static const unsigned asn_MAP_value_from_canonical_28[] = { 1, 0, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_28[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RICsubscriptionDetails */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_28 = { - sizeof(struct RICsubscriptionRequest_IEs__value), - offsetof(struct RICsubscriptionRequest_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionRequest_IEs__value, present), - sizeof(((struct RICsubscriptionRequest_IEs__value *)0)->present), - asn_MAP_value_tag2el_28, - 3, /* Count of tags in the map */ - asn_MAP_value_to_canonical_28, - asn_MAP_value_from_canonical_28, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_28 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_28, - 3, /* Elements count */ - &asn_SPC_value_specs_28 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_25[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_26, memb_id_constraint_25 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionRequest_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_27, memb_criticality_constraint_25 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_28, - select_RICsubscriptionRequest_IEs_value_type, - { 0, &asn_PER_memb_value_constr_28, memb_value_constraint_25 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_IEs_tags_25[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_IEs_tag2el_25[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_25 = { - sizeof(struct RICsubscriptionRequest_IEs), - offsetof(struct RICsubscriptionRequest_IEs, _asn_ctx), - asn_MAP_RICsubscriptionRequest_IEs_tag2el_25, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs = { - "RICsubscriptionRequest-IEs", - "RICsubscriptionRequest-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionRequest_IEs_tags_25, - sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25) - /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25[0]), /* 1 */ - asn_DEF_RICsubscriptionRequest_IEs_tags_25, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25) - /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionRequest_IEs_25, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionRequest_IEs_specs_25 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_32[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_Admitted_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_Admitted_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-Admitted-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_NotAdmitted_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_NotAdmitted_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-NotAdmitted-List" - }, -}; -static const unsigned asn_MAP_value_to_canonical_32[] = { 1, 0, 2, 3 }; -static const unsigned asn_MAP_value_from_canonical_32[] = { 1, 0, 2, 3 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_32[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-Admitted-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RICaction-NotAdmitted-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_32 = { - sizeof(struct RICsubscriptionResponse_IEs__value), - offsetof(struct RICsubscriptionResponse_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionResponse_IEs__value, present), - sizeof(((struct RICsubscriptionResponse_IEs__value *)0)->present), - asn_MAP_value_tag2el_32, - 4, /* Count of tags in the map */ - asn_MAP_value_to_canonical_32, - asn_MAP_value_from_canonical_32, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_32 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_32, - 4, /* Elements count */ - &asn_SPC_value_specs_32 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_29[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_30, memb_id_constraint_29 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionResponse_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_31, memb_criticality_constraint_29 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_32, - select_RICsubscriptionResponse_IEs_value_type, - { 0, &asn_PER_memb_value_constr_32, memb_value_constraint_29 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_IEs_tags_29[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_IEs_tag2el_29[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_29 = { - sizeof(struct RICsubscriptionResponse_IEs), - offsetof(struct RICsubscriptionResponse_IEs, _asn_ctx), - asn_MAP_RICsubscriptionResponse_IEs_tag2el_29, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs = { - "RICsubscriptionResponse-IEs", - "RICsubscriptionResponse-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionResponse_IEs_tags_29, - sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29) - /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29[0]), /* 1 */ - asn_DEF_RICsubscriptionResponse_IEs_tags_29, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29) - /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionResponse_IEs_29, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionResponse_IEs_specs_29 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_36[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICaction_NotAdmitted_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_NotAdmitted_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-NotAdmitted-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_36[] = { 1, 0, 2, 3 }; -static const unsigned asn_MAP_value_from_canonical_36[] = { 1, 0, 2, 3 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_36[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-NotAdmitted-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* CriticalityDiagnostics */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_36 = { - sizeof(struct RICsubscriptionFailure_IEs__value), - offsetof(struct RICsubscriptionFailure_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionFailure_IEs__value, present), - sizeof(((struct RICsubscriptionFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_36, - 4, /* Count of tags in the map */ - asn_MAP_value_to_canonical_36, - asn_MAP_value_from_canonical_36, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_36 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_36, - 4, /* Elements count */ - &asn_SPC_value_specs_36 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_33[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_34, memb_id_constraint_33 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_35, memb_criticality_constraint_33 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_36, - select_RICsubscriptionFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_36, memb_value_constraint_33 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_IEs_tags_33[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_IEs_tag2el_33[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_33 = { - sizeof(struct RICsubscriptionFailure_IEs), - offsetof(struct RICsubscriptionFailure_IEs, _asn_ctx), - asn_MAP_RICsubscriptionFailure_IEs_tag2el_33, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs = { - "RICsubscriptionFailure-IEs", - "RICsubscriptionFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionFailure_IEs_tags_33, - sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33) - /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33[0]), /* 1 */ - asn_DEF_RICsubscriptionFailure_IEs_tags_33, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33) - /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionFailure_IEs_33, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionFailure_IEs_specs_33 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_40[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, -}; -static const unsigned asn_MAP_value_to_canonical_40[] = { 1, 0 }; -static const unsigned asn_MAP_value_from_canonical_40[] = { 1, 0 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_40[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_40 = { - sizeof(struct RICsubscriptionDeleteRequest_IEs__value), - offsetof(struct RICsubscriptionDeleteRequest_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteRequest_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteRequest_IEs__value *)0)->present), - asn_MAP_value_tag2el_40, - 2, /* Count of tags in the map */ - asn_MAP_value_to_canonical_40, - asn_MAP_value_from_canonical_40, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_40 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_40, - 2, /* Elements count */ - &asn_SPC_value_specs_40 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_37[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_38, memb_id_constraint_37 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteRequest_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_39, memb_criticality_constraint_37 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_40, - select_RICsubscriptionDeleteRequest_IEs_value_type, - { 0, &asn_PER_memb_value_constr_40, memb_value_constraint_37 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_37[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_37 = { - sizeof(struct RICsubscriptionDeleteRequest_IEs), - offsetof(struct RICsubscriptionDeleteRequest_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_37, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs = { - "RICsubscriptionDeleteRequest-IEs", - "RICsubscriptionDeleteRequest-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37, - sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequest_IEs_37, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_37 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_44[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, -}; -static const unsigned asn_MAP_value_to_canonical_44[] = { 1, 0 }; -static const unsigned asn_MAP_value_from_canonical_44[] = { 1, 0 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_44[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_44 = { - sizeof(struct RICsubscriptionDeleteResponse_IEs__value), - offsetof(struct RICsubscriptionDeleteResponse_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteResponse_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteResponse_IEs__value *)0)->present), - asn_MAP_value_tag2el_44, - 2, /* Count of tags in the map */ - asn_MAP_value_to_canonical_44, - asn_MAP_value_from_canonical_44, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_44 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_44, - 2, /* Elements count */ - &asn_SPC_value_specs_44 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_41[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_42, memb_id_constraint_41 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteResponse_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_43, memb_criticality_constraint_41 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_44, - select_RICsubscriptionDeleteResponse_IEs_value_type, - { 0, &asn_PER_memb_value_constr_44, memb_value_constraint_41 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_41[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_41 = { - sizeof(struct RICsubscriptionDeleteResponse_IEs), - offsetof(struct RICsubscriptionDeleteResponse_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_41, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs = { - "RICsubscriptionDeleteResponse-IEs", - "RICsubscriptionDeleteResponse-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41, - sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteResponse_IEs_41, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_41 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_48[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_48[] = { 1, 0, 3, 2 }; -static const unsigned asn_MAP_value_from_canonical_48[] = { 1, 0, 3, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_48[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_48 = { - sizeof(struct RICsubscriptionDeleteFailure_IEs__value), - offsetof(struct RICsubscriptionDeleteFailure_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteFailure_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_48, - 8, /* Count of tags in the map */ - asn_MAP_value_to_canonical_48, - asn_MAP_value_from_canonical_48, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_48 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_48, - 4, /* Elements count */ - &asn_SPC_value_specs_48 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_45[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_46, memb_id_constraint_45 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_47, memb_criticality_constraint_45 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_48, - select_RICsubscriptionDeleteFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_48, memb_value_constraint_45 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_45[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_45 = { - sizeof(struct RICsubscriptionDeleteFailure_IEs), - offsetof(struct RICsubscriptionDeleteFailure_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_45, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs = { - "RICsubscriptionDeleteFailure-IEs", - "RICsubscriptionDeleteFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45, - sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteFailure_IEs_45, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_45 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_52[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationSN), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RICindicationSN, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationSN" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationType), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_RICindicationType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationType" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationHeader), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICindicationHeader, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationHeader" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationMessage), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICindicationMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationMessage" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, -}; -static const unsigned asn_MAP_value_to_canonical_52[] = { 1, 2, 3, 5, 6, 7, 4, 0 }; -static const unsigned asn_MAP_value_from_canonical_52[] = { 7, 0, 1, 2, 6, 3, 4, 5 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_52[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 2 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* RICactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* RICindicationSN */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 2 }, /* RICindicationHeader */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* RICindicationMessage */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* RICindicationType */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_52 = { - sizeof(struct RICindication_IEs__value), - offsetof(struct RICindication_IEs__value, _asn_ctx), - offsetof(struct RICindication_IEs__value, present), - sizeof(((struct RICindication_IEs__value *)0)->present), - asn_MAP_value_tag2el_52, - 8, /* Count of tags in the map */ - asn_MAP_value_to_canonical_52, - asn_MAP_value_from_canonical_52, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_52 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_52, - 8, /* Elements count */ - &asn_SPC_value_specs_52 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICindication_IEs_49[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_50, memb_id_constraint_49 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICindication_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_51, memb_criticality_constraint_49 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_52, - select_RICindication_IEs_value_type, - { 0, &asn_PER_memb_value_constr_52, memb_value_constraint_49 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICindication_IEs_tags_49[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICindication_IEs_tag2el_49[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_49 = { - sizeof(struct RICindication_IEs), - offsetof(struct RICindication_IEs, _asn_ctx), - asn_MAP_RICindication_IEs_tag2el_49, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICindication_IEs = { - "RICindication-IEs", - "RICindication-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICindication_IEs_tags_49, - sizeof(asn_DEF_RICindication_IEs_tags_49) - /sizeof(asn_DEF_RICindication_IEs_tags_49[0]), /* 1 */ - asn_DEF_RICindication_IEs_tags_49, /* Same as above */ - sizeof(asn_DEF_RICindication_IEs_tags_49) - /sizeof(asn_DEF_RICindication_IEs_tags_49[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICindication_IEs_49, - 3, /* Elements count */ - &asn_SPC_RICindication_IEs_specs_49 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_56[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolHeader), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolHeader, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolHeader" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolMessage), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolMessage" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolAckRequest), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_RICcontrolAckRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolAckRequest" - }, -}; -static const unsigned asn_MAP_value_to_canonical_56[] = { 1, 2, 3, 4, 5, 0 }; -static const unsigned asn_MAP_value_from_canonical_56[] = { 5, 0, 1, 2, 3, 4 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_56[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 2 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 1 }, /* RICcontrolHeader */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -2, 0 }, /* RICcontrolMessage */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* RICcontrolAckRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_56 = { - sizeof(struct RICcontrolRequest_IEs__value), - offsetof(struct RICcontrolRequest_IEs__value, _asn_ctx), - offsetof(struct RICcontrolRequest_IEs__value, present), - sizeof(((struct RICcontrolRequest_IEs__value *)0)->present), - asn_MAP_value_tag2el_56, - 6, /* Count of tags in the map */ - asn_MAP_value_to_canonical_56, - asn_MAP_value_from_canonical_56, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_56 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_56, - 6, /* Elements count */ - &asn_SPC_value_specs_56 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_53[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_54, memb_id_constraint_53 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICcontrolRequest_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_55, memb_criticality_constraint_53 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_56, - select_RICcontrolRequest_IEs_value_type, - { 0, &asn_PER_memb_value_constr_56, memb_value_constraint_53 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_IEs_tags_53[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_IEs_tag2el_53[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_53 = { - sizeof(struct RICcontrolRequest_IEs), - offsetof(struct RICcontrolRequest_IEs, _asn_ctx), - asn_MAP_RICcontrolRequest_IEs_tag2el_53, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs = { - "RICcontrolRequest-IEs", - "RICcontrolRequest-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolRequest_IEs_tags_53, - sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53) - /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53[0]), /* 1 */ - asn_DEF_RICcontrolRequest_IEs_tags_53, /* Same as above */ - sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53) - /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolRequest_IEs_53, - 3, /* Elements count */ - &asn_SPC_RICcontrolRequest_IEs_specs_53 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_60[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolStatus), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_RICcontrolStatus, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolStatus" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolOutcome), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolOutcome" - }, -}; -static const unsigned asn_MAP_value_to_canonical_60[] = { 1, 2, 4, 3, 0 }; -static const unsigned asn_MAP_value_from_canonical_60[] = { 4, 0, 1, 3, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_60[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICcontrolOutcome */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* RICcontrolStatus */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_60 = { - sizeof(struct RICcontrolAcknowledge_IEs__value), - offsetof(struct RICcontrolAcknowledge_IEs__value, _asn_ctx), - offsetof(struct RICcontrolAcknowledge_IEs__value, present), - sizeof(((struct RICcontrolAcknowledge_IEs__value *)0)->present), - asn_MAP_value_tag2el_60, - 5, /* Count of tags in the map */ - asn_MAP_value_to_canonical_60, - asn_MAP_value_from_canonical_60, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_60 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_60, - 5, /* Elements count */ - &asn_SPC_value_specs_60 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_57[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_58, memb_id_constraint_57 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICcontrolAcknowledge_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_59, memb_criticality_constraint_57 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_60, - select_RICcontrolAcknowledge_IEs_value_type, - { 0, &asn_PER_memb_value_constr_60, memb_value_constraint_57 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_IEs_tags_57[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_IEs_tag2el_57[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_57 = { - sizeof(struct RICcontrolAcknowledge_IEs), - offsetof(struct RICcontrolAcknowledge_IEs, _asn_ctx), - asn_MAP_RICcontrolAcknowledge_IEs_tag2el_57, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs = { - "RICcontrolAcknowledge-IEs", - "RICcontrolAcknowledge-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolAcknowledge_IEs_tags_57, - sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57) - /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57[0]), /* 1 */ - asn_DEF_RICcontrolAcknowledge_IEs_tags_57, /* Same as above */ - sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57) - /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolAcknowledge_IEs_57, - 3, /* Elements count */ - &asn_SPC_RICcontrolAcknowledge_IEs_specs_57 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_64[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcontrolOutcome), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolOutcome" - }, -}; -static const unsigned asn_MAP_value_to_canonical_64[] = { 1, 2, 4, 0, 3 }; -static const unsigned asn_MAP_value_from_canonical_64[] = { 3, 0, 1, 4, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_64[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICcontrolOutcome */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* RICrequestID */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_64 = { - sizeof(struct RICcontrolFailure_IEs__value), - offsetof(struct RICcontrolFailure_IEs__value, _asn_ctx), - offsetof(struct RICcontrolFailure_IEs__value, present), - sizeof(((struct RICcontrolFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_64, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_64, - asn_MAP_value_from_canonical_64, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_64 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_64, - 5, /* Elements count */ - &asn_SPC_value_specs_64 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_61[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_62, memb_id_constraint_61 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICcontrolFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_63, memb_criticality_constraint_61 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_64, - select_RICcontrolFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_64, memb_value_constraint_61 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_IEs_tags_61[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_IEs_tag2el_61[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_61 = { - sizeof(struct RICcontrolFailure_IEs), - offsetof(struct RICcontrolFailure_IEs, _asn_ctx), - asn_MAP_RICcontrolFailure_IEs_tag2el_61, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs = { - "RICcontrolFailure-IEs", - "RICcontrolFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolFailure_IEs_tags_61, - sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61) - /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61[0]), /* 1 */ - asn_DEF_RICcontrolFailure_IEs_tags_61, /* Same as above */ - sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61) - /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolFailure_IEs_61, - 3, /* Elements count */ - &asn_SPC_RICcontrolFailure_IEs_specs_61 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_68[] = { - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_68[] = { 1, 0, 3, 2 }; -static const unsigned asn_MAP_value_from_canonical_68[] = { 1, 0, 3, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_68[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_68 = { - sizeof(struct ErrorIndication_IEs__value), - offsetof(struct ErrorIndication_IEs__value, _asn_ctx), - offsetof(struct ErrorIndication_IEs__value, present), - sizeof(((struct ErrorIndication_IEs__value *)0)->present), - asn_MAP_value_tag2el_68, - 8, /* Count of tags in the map */ - asn_MAP_value_to_canonical_68, - asn_MAP_value_from_canonical_68, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_68 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_68, - 4, /* Elements count */ - &asn_SPC_value_specs_68 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_65[] = { - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_66, memb_id_constraint_65 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_ErrorIndication_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_67, memb_criticality_constraint_65 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_68, - select_ErrorIndication_IEs_value_type, - { 0, &asn_PER_memb_value_constr_68, memb_value_constraint_65 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_ErrorIndication_IEs_tags_65[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_IEs_tag2el_65[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_65 = { - sizeof(struct ErrorIndication_IEs), - offsetof(struct ErrorIndication_IEs, _asn_ctx), - asn_MAP_ErrorIndication_IEs_tag2el_65, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs = { - "ErrorIndication-IEs", - "ErrorIndication-IEs", - &asn_OP_SEQUENCE, - asn_DEF_ErrorIndication_IEs_tags_65, - sizeof(asn_DEF_ErrorIndication_IEs_tags_65) - /sizeof(asn_DEF_ErrorIndication_IEs_tags_65[0]), /* 1 */ - asn_DEF_ErrorIndication_IEs_tags_65, /* Same as above */ - sizeof(asn_DEF_ErrorIndication_IEs_tags_65) - /sizeof(asn_DEF_ErrorIndication_IEs_tags_65[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ErrorIndication_IEs_65, - 3, /* Elements count */ - &asn_SPC_ErrorIndication_IEs_specs_65 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_72[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.GlobalE2node_ID), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_GlobalE2node_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "GlobalE2node-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.RANfunctions_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctions_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctions-List" - }, -}; -static const unsigned asn_MAP_value_to_canonical_72[] = { 1, 0 }; -static const unsigned asn_MAP_value_from_canonical_72[] = { 1, 0 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_72[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* RANfunctions-List */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* eNB */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_72 = { - sizeof(struct E2setupRequestIEs__value), - offsetof(struct E2setupRequestIEs__value, _asn_ctx), - offsetof(struct E2setupRequestIEs__value, present), - sizeof(((struct E2setupRequestIEs__value *)0)->present), - asn_MAP_value_tag2el_72, - 5, /* Count of tags in the map */ - asn_MAP_value_to_canonical_72, - asn_MAP_value_from_canonical_72, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_72 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_72, - 2, /* Elements count */ - &asn_SPC_value_specs_72 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2setupRequestIEs_69[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_70, memb_id_constraint_69 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2setupRequestIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_71, memb_criticality_constraint_69 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_72, - select_E2setupRequestIEs_value_type, - { 0, &asn_PER_memb_value_constr_72, memb_value_constraint_69 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupRequestIEs_tags_69[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupRequestIEs_tag2el_69[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_69 = { - sizeof(struct E2setupRequestIEs), - offsetof(struct E2setupRequestIEs, _asn_ctx), - asn_MAP_E2setupRequestIEs_tag2el_69, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs = { - "E2setupRequestIEs", - "E2setupRequestIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2setupRequestIEs_tags_69, - sizeof(asn_DEF_E2setupRequestIEs_tags_69) - /sizeof(asn_DEF_E2setupRequestIEs_tags_69[0]), /* 1 */ - asn_DEF_E2setupRequestIEs_tags_69, /* Same as above */ - sizeof(asn_DEF_E2setupRequestIEs_tags_69) - /sizeof(asn_DEF_E2setupRequestIEs_tags_69[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupRequestIEs_69, - 3, /* Elements count */ - &asn_SPC_E2setupRequestIEs_specs_69 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_76[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.GlobalRIC_ID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_GlobalRIC_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "GlobalRIC-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsIDcause_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsIDcause_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsIDcause-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_76[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* GlobalRIC-ID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* RANfunctionsID-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* RANfunctionsIDcause-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_76 = { - sizeof(struct E2setupResponseIEs__value), - offsetof(struct E2setupResponseIEs__value, _asn_ctx), - offsetof(struct E2setupResponseIEs__value, present), - sizeof(((struct E2setupResponseIEs__value *)0)->present), - asn_MAP_value_tag2el_76, - 3, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_76 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_76, - 3, /* Elements count */ - &asn_SPC_value_specs_76 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2setupResponseIEs_73[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_74, memb_id_constraint_73 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2setupResponseIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_75, memb_criticality_constraint_73 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_76, - select_E2setupResponseIEs_value_type, - { 0, &asn_PER_memb_value_constr_76, memb_value_constraint_73 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupResponseIEs_tags_73[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupResponseIEs_tag2el_73[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_73 = { - sizeof(struct E2setupResponseIEs), - offsetof(struct E2setupResponseIEs, _asn_ctx), - asn_MAP_E2setupResponseIEs_tag2el_73, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs = { - "E2setupResponseIEs", - "E2setupResponseIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2setupResponseIEs_tags_73, - sizeof(asn_DEF_E2setupResponseIEs_tags_73) - /sizeof(asn_DEF_E2setupResponseIEs_tags_73[0]), /* 1 */ - asn_DEF_E2setupResponseIEs_tags_73, /* Same as above */ - sizeof(asn_DEF_E2setupResponseIEs_tags_73) - /sizeof(asn_DEF_E2setupResponseIEs_tags_73[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupResponseIEs_73, - 3, /* Elements count */ - &asn_SPC_E2setupResponseIEs_specs_73 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_80[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_80[] = { 1, 2, 0 }; -static const unsigned asn_MAP_value_from_canonical_80[] = { 2, 0, 1 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_80[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_80 = { - sizeof(struct E2setupFailureIEs__value), - offsetof(struct E2setupFailureIEs__value, _asn_ctx), - offsetof(struct E2setupFailureIEs__value, present), - sizeof(((struct E2setupFailureIEs__value *)0)->present), - asn_MAP_value_tag2el_80, - 7, /* Count of tags in the map */ - asn_MAP_value_to_canonical_80, - asn_MAP_value_from_canonical_80, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_80 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_80, - 3, /* Elements count */ - &asn_SPC_value_specs_80 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2setupFailureIEs_77[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_78, memb_id_constraint_77 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2setupFailureIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_79, memb_criticality_constraint_77 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_80, - select_E2setupFailureIEs_value_type, - { 0, &asn_PER_memb_value_constr_80, memb_value_constraint_77 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupFailureIEs_tags_77[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupFailureIEs_tag2el_77[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_77 = { - sizeof(struct E2setupFailureIEs), - offsetof(struct E2setupFailureIEs, _asn_ctx), - asn_MAP_E2setupFailureIEs_tag2el_77, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs = { - "E2setupFailureIEs", - "E2setupFailureIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2setupFailureIEs_tags_77, - sizeof(asn_DEF_E2setupFailureIEs_tags_77) - /sizeof(asn_DEF_E2setupFailureIEs_tags_77[0]), /* 1 */ - asn_DEF_E2setupFailureIEs_tags_77, /* Same as above */ - sizeof(asn_DEF_E2setupFailureIEs_tags_77) - /sizeof(asn_DEF_E2setupFailureIEs_tags_77[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupFailureIEs_77, - 3, /* Elements count */ - &asn_SPC_E2setupFailureIEs_specs_77 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_84[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_84[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_84 = { - sizeof(struct ResetRequestIEs__value), - offsetof(struct ResetRequestIEs__value, _asn_ctx), - offsetof(struct ResetRequestIEs__value, present), - sizeof(((struct ResetRequestIEs__value *)0)->present), - asn_MAP_value_tag2el_84, - 5, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_84 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_84, - 1, /* Elements count */ - &asn_SPC_value_specs_84 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ResetRequestIEs_81[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_82, memb_id_constraint_81 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_ResetRequestIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_83, memb_criticality_constraint_81 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_84, - select_ResetRequestIEs_value_type, - { 0, &asn_PER_memb_value_constr_84, memb_value_constraint_81 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetRequestIEs_tags_81[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetRequestIEs_tag2el_81[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_81 = { - sizeof(struct ResetRequestIEs), - offsetof(struct ResetRequestIEs, _asn_ctx), - asn_MAP_ResetRequestIEs_tag2el_81, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs = { - "ResetRequestIEs", - "ResetRequestIEs", - &asn_OP_SEQUENCE, - asn_DEF_ResetRequestIEs_tags_81, - sizeof(asn_DEF_ResetRequestIEs_tags_81) - /sizeof(asn_DEF_ResetRequestIEs_tags_81[0]), /* 1 */ - asn_DEF_ResetRequestIEs_tags_81, /* Same as above */ - sizeof(asn_DEF_ResetRequestIEs_tags_81) - /sizeof(asn_DEF_ResetRequestIEs_tags_81[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetRequestIEs_81, - 3, /* Elements count */ - &asn_SPC_ResetRequestIEs_specs_81 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_88[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_88[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CriticalityDiagnostics */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_88 = { - sizeof(struct ResetResponseIEs__value), - offsetof(struct ResetResponseIEs__value, _asn_ctx), - offsetof(struct ResetResponseIEs__value, present), - sizeof(((struct ResetResponseIEs__value *)0)->present), - asn_MAP_value_tag2el_88, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_88 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_88, - 1, /* Elements count */ - &asn_SPC_value_specs_88 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ResetResponseIEs_85[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_86, memb_id_constraint_85 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_ResetResponseIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_87, memb_criticality_constraint_85 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_88, - select_ResetResponseIEs_value_type, - { 0, &asn_PER_memb_value_constr_88, memb_value_constraint_85 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetResponseIEs_tags_85[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetResponseIEs_tag2el_85[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_85 = { - sizeof(struct ResetResponseIEs), - offsetof(struct ResetResponseIEs, _asn_ctx), - asn_MAP_ResetResponseIEs_tag2el_85, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs = { - "ResetResponseIEs", - "ResetResponseIEs", - &asn_OP_SEQUENCE, - asn_DEF_ResetResponseIEs_tags_85, - sizeof(asn_DEF_ResetResponseIEs_tags_85) - /sizeof(asn_DEF_ResetResponseIEs_tags_85[0]), /* 1 */ - asn_DEF_ResetResponseIEs_tags_85, /* Same as above */ - sizeof(asn_DEF_ResetResponseIEs_tags_85) - /sizeof(asn_DEF_ResetResponseIEs_tags_85[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetResponseIEs_85, - 3, /* Elements count */ - &asn_SPC_ResetResponseIEs_specs_85 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_92[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctions_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctions_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctions-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_92[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctions-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsID-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_92 = { - sizeof(struct RICserviceUpdate_IEs__value), - offsetof(struct RICserviceUpdate_IEs__value, _asn_ctx), - offsetof(struct RICserviceUpdate_IEs__value, present), - sizeof(((struct RICserviceUpdate_IEs__value *)0)->present), - asn_MAP_value_tag2el_92, - 2, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_92 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_92, - 2, /* Elements count */ - &asn_SPC_value_specs_92 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_89[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_90, memb_id_constraint_89 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceUpdate_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_91, memb_criticality_constraint_89 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_92, - select_RICserviceUpdate_IEs_value_type, - { 0, &asn_PER_memb_value_constr_92, memb_value_constraint_89 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_IEs_tags_89[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_IEs_tag2el_89[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_89 = { - sizeof(struct RICserviceUpdate_IEs), - offsetof(struct RICserviceUpdate_IEs, _asn_ctx), - asn_MAP_RICserviceUpdate_IEs_tag2el_89, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs = { - "RICserviceUpdate-IEs", - "RICserviceUpdate-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdate_IEs_tags_89, - sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89) - /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89[0]), /* 1 */ - asn_DEF_RICserviceUpdate_IEs_tags_89, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89) - /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdate_IEs_89, - 3, /* Elements count */ - &asn_SPC_RICserviceUpdate_IEs_specs_89 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_96[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsIDcause_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsIDcause_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsIDcause-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_96[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsID-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsIDcause-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_96 = { - sizeof(struct RICserviceUpdateAcknowledge_IEs__value), - offsetof(struct RICserviceUpdateAcknowledge_IEs__value, _asn_ctx), - offsetof(struct RICserviceUpdateAcknowledge_IEs__value, present), - sizeof(((struct RICserviceUpdateAcknowledge_IEs__value *)0)->present), - asn_MAP_value_tag2el_96, - 2, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_96 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_96, - 2, /* Elements count */ - &asn_SPC_value_specs_96 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_93[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_94, memb_id_constraint_93 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceUpdateAcknowledge_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_95, memb_criticality_constraint_93 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_96, - select_RICserviceUpdateAcknowledge_IEs_value_type, - { 0, &asn_PER_memb_value_constr_96, memb_value_constraint_93 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_93[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93 = { - sizeof(struct RICserviceUpdateAcknowledge_IEs), - offsetof(struct RICserviceUpdateAcknowledge_IEs, _asn_ctx), - asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_93, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs = { - "RICserviceUpdateAcknowledge-IEs", - "RICserviceUpdateAcknowledge-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93, - sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93[0]), /* 1 */ - asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateAcknowledge_IEs_93, - 3, /* Elements count */ - &asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_100[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.RANfunctionsIDcause_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsIDcause_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsIDcause-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_100[] = { 1, 0, 2 }; -static const unsigned asn_MAP_value_from_canonical_100[] = { 1, 0, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_100[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsIDcause-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* CriticalityDiagnostics */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_100 = { - sizeof(struct RICserviceUpdateFailure_IEs__value), - offsetof(struct RICserviceUpdateFailure_IEs__value, _asn_ctx), - offsetof(struct RICserviceUpdateFailure_IEs__value, present), - sizeof(((struct RICserviceUpdateFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_100, - 3, /* Count of tags in the map */ - asn_MAP_value_to_canonical_100, - asn_MAP_value_from_canonical_100, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_100 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_100, - 3, /* Elements count */ - &asn_SPC_value_specs_100 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_97[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_98, memb_id_constraint_97 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceUpdateFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_99, memb_criticality_constraint_97 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_100, - select_RICserviceUpdateFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_100, memb_value_constraint_97 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_IEs_tags_97[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_IEs_tag2el_97[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_97 = { - sizeof(struct RICserviceUpdateFailure_IEs), - offsetof(struct RICserviceUpdateFailure_IEs, _asn_ctx), - asn_MAP_RICserviceUpdateFailure_IEs_tag2el_97, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs = { - "RICserviceUpdateFailure-IEs", - "RICserviceUpdateFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateFailure_IEs_tags_97, - sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97) - /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97[0]), /* 1 */ - asn_DEF_RICserviceUpdateFailure_IEs_tags_97, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97) - /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateFailure_IEs_97, - 3, /* Elements count */ - &asn_SPC_RICserviceUpdateFailure_IEs_specs_97 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_104[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_104[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionsID-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_104 = { - sizeof(struct RICserviceQuery_IEs__value), - offsetof(struct RICserviceQuery_IEs__value, _asn_ctx), - offsetof(struct RICserviceQuery_IEs__value, present), - sizeof(((struct RICserviceQuery_IEs__value *)0)->present), - asn_MAP_value_tag2el_104, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_104 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_104, - 1, /* Elements count */ - &asn_SPC_value_specs_104 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_101[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_102, memb_id_constraint_101 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceQuery_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_103, memb_criticality_constraint_101 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_104, - select_RICserviceQuery_IEs_value_type, - { 0, &asn_PER_memb_value_constr_104, memb_value_constraint_101 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceQuery_IEs_tags_101[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_IEs_tag2el_101[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_101 = { - sizeof(struct RICserviceQuery_IEs), - offsetof(struct RICserviceQuery_IEs, _asn_ctx), - asn_MAP_RICserviceQuery_IEs_tag2el_101, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs = { - "RICserviceQuery-IEs", - "RICserviceQuery-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceQuery_IEs_tags_101, - sizeof(asn_DEF_RICserviceQuery_IEs_tags_101) - /sizeof(asn_DEF_RICserviceQuery_IEs_tags_101[0]), /* 1 */ - asn_DEF_RICserviceQuery_IEs_tags_101, /* Same as above */ - sizeof(asn_DEF_RICserviceQuery_IEs_tags_101) - /sizeof(asn_DEF_RICserviceQuery_IEs_tags_101[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceQuery_IEs_101, - 3, /* Elements count */ - &asn_SPC_RICserviceQuery_IEs_specs_101 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Field.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Field.h deleted file mode 100644 index 573edcf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-Field.h +++ /dev/null @@ -1,757 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ProtocolIE_Field_H_ -#define _ProtocolIE_Field_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-ID.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICaction-ToBeSetup-Item.h" -#include "Presence.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" -#include "RICaction-Admitted-Item.h" -#include "RICaction-NotAdmitted-Item.h" -#include "RANfunction-Item.h" -#include "RANfunctionID-Item.h" -#include "RANfunctionIDcause-Item.h" -#include "RICrequestID.h" -#include "RANfunctionID.h" -#include "RICsubscriptionDetails.h" -#include "RICaction-Admitted-List.h" -#include "RICaction-NotAdmitted-List.h" -#include "CriticalityDiagnostics.h" -#include "Cause.h" -#include "RICactionID.h" -#include "RICindicationSN.h" -#include "RICindicationType.h" -#include "RICindicationHeader.h" -#include "RICindicationMessage.h" -#include "RICcallProcessID.h" -#include "RICcontrolHeader.h" -#include "RICcontrolMessage.h" -#include "RICcontrolAckRequest.h" -#include "RICcontrolStatus.h" -#include "RICcontrolOutcome.h" -#include "GlobalE2node-ID.h" -#include "RANfunctions-List.h" -#include "GlobalRIC-ID.h" -#include "RANfunctionsID-List.h" -#include "RANfunctionsIDcause-List.h" -#include "TimeToWait.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICaction_ToBeSetup_ItemIEs__value_PR { - RICaction_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ - RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item -} RICaction_ToBeSetup_ItemIEs__value_PR; -typedef enum RICaction_Admitted_ItemIEs__value_PR { - RICaction_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ - RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item -} RICaction_Admitted_ItemIEs__value_PR; -typedef enum RICaction_NotAdmitted_ItemIEs__value_PR { - RICaction_NotAdmitted_ItemIEs__value_PR_NOTHING, /* No components present */ - RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item -} RICaction_NotAdmitted_ItemIEs__value_PR; -typedef enum RANfunction_ItemIEs__value_PR { - RANfunction_ItemIEs__value_PR_NOTHING, /* No components present */ - RANfunction_ItemIEs__value_PR_RANfunction_Item -} RANfunction_ItemIEs__value_PR; -typedef enum RANfunctionID_ItemIEs__value_PR { - RANfunctionID_ItemIEs__value_PR_NOTHING, /* No components present */ - RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item -} RANfunctionID_ItemIEs__value_PR; -typedef enum RANfunctionIDcause_ItemIEs__value_PR { - RANfunctionIDcause_ItemIEs__value_PR_NOTHING, /* No components present */ - RANfunctionIDcause_ItemIEs__value_PR_RANfunctionIDcause_Item -} RANfunctionIDcause_ItemIEs__value_PR; -typedef enum RICsubscriptionRequest_IEs__value_PR { - RICsubscriptionRequest_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionRequest_IEs__value_PR_RICrequestID, - RICsubscriptionRequest_IEs__value_PR_RANfunctionID, - RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails -} RICsubscriptionRequest_IEs__value_PR; -typedef enum RICsubscriptionResponse_IEs__value_PR { - RICsubscriptionResponse_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionResponse_IEs__value_PR_RICrequestID, - RICsubscriptionResponse_IEs__value_PR_RANfunctionID, - RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List, - RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List -} RICsubscriptionResponse_IEs__value_PR; -typedef enum RICsubscriptionFailure_IEs__value_PR { - RICsubscriptionFailure_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionFailure_IEs__value_PR_RICrequestID, - RICsubscriptionFailure_IEs__value_PR_RANfunctionID, - RICsubscriptionFailure_IEs__value_PR_RICaction_NotAdmitted_List, - RICsubscriptionFailure_IEs__value_PR_CriticalityDiagnostics -} RICsubscriptionFailure_IEs__value_PR; -typedef enum RICsubscriptionDeleteRequest_IEs__value_PR { - RICsubscriptionDeleteRequest_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID, - RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID -} RICsubscriptionDeleteRequest_IEs__value_PR; -typedef enum RICsubscriptionDeleteResponse_IEs__value_PR { - RICsubscriptionDeleteResponse_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID, - RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID -} RICsubscriptionDeleteResponse_IEs__value_PR; -typedef enum RICsubscriptionDeleteFailure_IEs__value_PR { - RICsubscriptionDeleteFailure_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID, - RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID, - RICsubscriptionDeleteFailure_IEs__value_PR_Cause, - RICsubscriptionDeleteFailure_IEs__value_PR_CriticalityDiagnostics -} RICsubscriptionDeleteFailure_IEs__value_PR; -typedef enum RICindication_IEs__value_PR { - RICindication_IEs__value_PR_NOTHING, /* No components present */ - RICindication_IEs__value_PR_RICrequestID, - RICindication_IEs__value_PR_RANfunctionID, - RICindication_IEs__value_PR_RICactionID, - RICindication_IEs__value_PR_RICindicationSN, - RICindication_IEs__value_PR_RICindicationType, - RICindication_IEs__value_PR_RICindicationHeader, - RICindication_IEs__value_PR_RICindicationMessage, - RICindication_IEs__value_PR_RICcallProcessID -} RICindication_IEs__value_PR; -typedef enum RICcontrolRequest_IEs__value_PR { - RICcontrolRequest_IEs__value_PR_NOTHING, /* No components present */ - RICcontrolRequest_IEs__value_PR_RICrequestID, - RICcontrolRequest_IEs__value_PR_RANfunctionID, - RICcontrolRequest_IEs__value_PR_RICcallProcessID, - RICcontrolRequest_IEs__value_PR_RICcontrolHeader, - RICcontrolRequest_IEs__value_PR_RICcontrolMessage, - RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest -} RICcontrolRequest_IEs__value_PR; -typedef enum RICcontrolAcknowledge_IEs__value_PR { - RICcontrolAcknowledge_IEs__value_PR_NOTHING, /* No components present */ - RICcontrolAcknowledge_IEs__value_PR_RICrequestID, - RICcontrolAcknowledge_IEs__value_PR_RANfunctionID, - RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID, - RICcontrolAcknowledge_IEs__value_PR_RICcontrolStatus, - RICcontrolAcknowledge_IEs__value_PR_RICcontrolOutcome -} RICcontrolAcknowledge_IEs__value_PR; -typedef enum RICcontrolFailure_IEs__value_PR { - RICcontrolFailure_IEs__value_PR_NOTHING, /* No components present */ - RICcontrolFailure_IEs__value_PR_RICrequestID, - RICcontrolFailure_IEs__value_PR_RANfunctionID, - RICcontrolFailure_IEs__value_PR_RICcallProcessID, - RICcontrolFailure_IEs__value_PR_Cause, - RICcontrolFailure_IEs__value_PR_RICcontrolOutcome -} RICcontrolFailure_IEs__value_PR; -typedef enum ErrorIndication_IEs__value_PR { - ErrorIndication_IEs__value_PR_NOTHING, /* No components present */ - ErrorIndication_IEs__value_PR_RICrequestID, - ErrorIndication_IEs__value_PR_RANfunctionID, - ErrorIndication_IEs__value_PR_Cause, - ErrorIndication_IEs__value_PR_CriticalityDiagnostics -} ErrorIndication_IEs__value_PR; -typedef enum E2setupRequestIEs__value_PR { - E2setupRequestIEs__value_PR_NOTHING, /* No components present */ - E2setupRequestIEs__value_PR_GlobalE2node_ID, - E2setupRequestIEs__value_PR_RANfunctions_List -} E2setupRequestIEs__value_PR; -typedef enum E2setupResponseIEs__value_PR { - E2setupResponseIEs__value_PR_NOTHING, /* No components present */ - E2setupResponseIEs__value_PR_GlobalRIC_ID, - E2setupResponseIEs__value_PR_RANfunctionsID_List, - E2setupResponseIEs__value_PR_RANfunctionsIDcause_List -} E2setupResponseIEs__value_PR; -typedef enum E2setupFailureIEs__value_PR { - E2setupFailureIEs__value_PR_NOTHING, /* No components present */ - E2setupFailureIEs__value_PR_Cause, - E2setupFailureIEs__value_PR_TimeToWait, - E2setupFailureIEs__value_PR_CriticalityDiagnostics -} E2setupFailureIEs__value_PR; -typedef enum ResetRequestIEs__value_PR { - ResetRequestIEs__value_PR_NOTHING, /* No components present */ - ResetRequestIEs__value_PR_Cause -} ResetRequestIEs__value_PR; -typedef enum ResetResponseIEs__value_PR { - ResetResponseIEs__value_PR_NOTHING, /* No components present */ - ResetResponseIEs__value_PR_CriticalityDiagnostics -} ResetResponseIEs__value_PR; -typedef enum RICserviceUpdate_IEs__value_PR { - RICserviceUpdate_IEs__value_PR_NOTHING, /* No components present */ - RICserviceUpdate_IEs__value_PR_RANfunctions_List, - RICserviceUpdate_IEs__value_PR_RANfunctionsID_List -} RICserviceUpdate_IEs__value_PR; -typedef enum RICserviceUpdateAcknowledge_IEs__value_PR { - RICserviceUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ - RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsID_List, - RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsIDcause_List -} RICserviceUpdateAcknowledge_IEs__value_PR; -typedef enum RICserviceUpdateFailure_IEs__value_PR { - RICserviceUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ - RICserviceUpdateFailure_IEs__value_PR_RANfunctionsIDcause_List, - RICserviceUpdateFailure_IEs__value_PR_TimeToWait, - RICserviceUpdateFailure_IEs__value_PR_CriticalityDiagnostics -} RICserviceUpdateFailure_IEs__value_PR; -typedef enum RICserviceQuery_IEs__value_PR { - RICserviceQuery_IEs__value_PR_NOTHING, /* No components present */ - RICserviceQuery_IEs__value_PR_RANfunctionsID_List -} RICserviceQuery_IEs__value_PR; - -/* ProtocolIE-Field */ -typedef struct RICaction_ToBeSetup_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICaction_ToBeSetup_ItemIEs__value { - RICaction_ToBeSetup_ItemIEs__value_PR present; - union RICaction_ToBeSetup_ItemIEs__value_u { - RICaction_ToBeSetup_Item_t RICaction_ToBeSetup_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_ToBeSetup_ItemIEs_t; -typedef struct RICaction_Admitted_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICaction_Admitted_ItemIEs__value { - RICaction_Admitted_ItemIEs__value_PR present; - union RICaction_Admitted_ItemIEs__value_u { - RICaction_Admitted_Item_t RICaction_Admitted_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_Admitted_ItemIEs_t; -typedef struct RICaction_NotAdmitted_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICaction_NotAdmitted_ItemIEs__value { - RICaction_NotAdmitted_ItemIEs__value_PR present; - union RICaction_NotAdmitted_ItemIEs__value_u { - RICaction_NotAdmitted_Item_t RICaction_NotAdmitted_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_NotAdmitted_ItemIEs_t; -typedef struct RANfunction_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RANfunction_ItemIEs__value { - RANfunction_ItemIEs__value_PR present; - union RANfunction_ItemIEs__value_u { - RANfunction_Item_t RANfunction_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunction_ItemIEs_t; -typedef struct RANfunctionID_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RANfunctionID_ItemIEs__value { - RANfunctionID_ItemIEs__value_PR present; - union RANfunctionID_ItemIEs__value_u { - RANfunctionID_Item_t RANfunctionID_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionID_ItemIEs_t; -typedef struct RANfunctionIDcause_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RANfunctionIDcause_ItemIEs__value { - RANfunctionIDcause_ItemIEs__value_PR present; - union RANfunctionIDcause_ItemIEs__value_u { - RANfunctionIDcause_Item_t RANfunctionIDcause_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionIDcause_ItemIEs_t; -typedef struct RICsubscriptionRequest_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionRequest_IEs__value { - RICsubscriptionRequest_IEs__value_PR present; - union RICsubscriptionRequest_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICsubscriptionDetails_t RICsubscriptionDetails; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionRequest_IEs_t; -typedef struct RICsubscriptionResponse_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionResponse_IEs__value { - RICsubscriptionResponse_IEs__value_PR present; - union RICsubscriptionResponse_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICaction_Admitted_List_t RICaction_Admitted_List; - RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionResponse_IEs_t; -typedef struct RICsubscriptionFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionFailure_IEs__value { - RICsubscriptionFailure_IEs__value_PR present; - union RICsubscriptionFailure_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionFailure_IEs_t; -typedef struct RICsubscriptionDeleteRequest_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteRequest_IEs__value { - RICsubscriptionDeleteRequest_IEs__value_PR present; - union RICsubscriptionDeleteRequest_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequest_IEs_t; -typedef struct RICsubscriptionDeleteResponse_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteResponse_IEs__value { - RICsubscriptionDeleteResponse_IEs__value_PR present; - union RICsubscriptionDeleteResponse_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteResponse_IEs_t; -typedef struct RICsubscriptionDeleteFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteFailure_IEs__value { - RICsubscriptionDeleteFailure_IEs__value_PR present; - union RICsubscriptionDeleteFailure_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - Cause_t Cause; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteFailure_IEs_t; -typedef struct RICindication_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICindication_IEs__value { - RICindication_IEs__value_PR present; - union RICindication_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICactionID_t RICactionID; - RICindicationSN_t RICindicationSN; - RICindicationType_t RICindicationType; - RICindicationHeader_t RICindicationHeader; - RICindicationMessage_t RICindicationMessage; - RICcallProcessID_t RICcallProcessID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICindication_IEs_t; -typedef struct RICcontrolRequest_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICcontrolRequest_IEs__value { - RICcontrolRequest_IEs__value_PR present; - union RICcontrolRequest_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICcallProcessID_t RICcallProcessID; - RICcontrolHeader_t RICcontrolHeader; - RICcontrolMessage_t RICcontrolMessage; - RICcontrolAckRequest_t RICcontrolAckRequest; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolRequest_IEs_t; -typedef struct RICcontrolAcknowledge_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICcontrolAcknowledge_IEs__value { - RICcontrolAcknowledge_IEs__value_PR present; - union RICcontrolAcknowledge_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICcallProcessID_t RICcallProcessID; - RICcontrolStatus_t RICcontrolStatus; - RICcontrolOutcome_t RICcontrolOutcome; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolAcknowledge_IEs_t; -typedef struct RICcontrolFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICcontrolFailure_IEs__value { - RICcontrolFailure_IEs__value_PR present; - union RICcontrolFailure_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICcallProcessID_t RICcallProcessID; - Cause_t Cause; - RICcontrolOutcome_t RICcontrolOutcome; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolFailure_IEs_t; -typedef struct ErrorIndication_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct ErrorIndication_IEs__value { - ErrorIndication_IEs__value_PR present; - union ErrorIndication_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - Cause_t Cause; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ErrorIndication_IEs_t; -typedef struct E2setupRequestIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2setupRequestIEs__value { - E2setupRequestIEs__value_PR present; - union E2setupRequestIEs__value_u { - GlobalE2node_ID_t GlobalE2node_ID; - RANfunctions_List_t RANfunctions_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupRequestIEs_t; -typedef struct E2setupResponseIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2setupResponseIEs__value { - E2setupResponseIEs__value_PR present; - union E2setupResponseIEs__value_u { - GlobalRIC_ID_t GlobalRIC_ID; - RANfunctionsID_List_t RANfunctionsID_List; - RANfunctionsIDcause_List_t RANfunctionsIDcause_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupResponseIEs_t; -typedef struct E2setupFailureIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2setupFailureIEs__value { - E2setupFailureIEs__value_PR present; - union E2setupFailureIEs__value_u { - Cause_t Cause; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupFailureIEs_t; -typedef struct ResetRequestIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct ResetRequestIEs__value { - ResetRequestIEs__value_PR present; - union ResetRequestIEs__value_u { - Cause_t Cause; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetRequestIEs_t; -typedef struct ResetResponseIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct ResetResponseIEs__value { - ResetResponseIEs__value_PR present; - union ResetResponseIEs__value_u { - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetResponseIEs_t; -typedef struct RICserviceUpdate_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceUpdate_IEs__value { - RICserviceUpdate_IEs__value_PR present; - union RICserviceUpdate_IEs__value_u { - RANfunctions_List_t RANfunctions_List; - RANfunctionsID_List_t RANfunctionsID_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdate_IEs_t; -typedef struct RICserviceUpdateAcknowledge_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceUpdateAcknowledge_IEs__value { - RICserviceUpdateAcknowledge_IEs__value_PR present; - union RICserviceUpdateAcknowledge_IEs__value_u { - RANfunctionsID_List_t RANfunctionsID_List; - RANfunctionsIDcause_List_t RANfunctionsIDcause_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateAcknowledge_IEs_t; -typedef struct RICserviceUpdateFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceUpdateFailure_IEs__value { - RICserviceUpdateFailure_IEs__value_PR present; - union RICserviceUpdateFailure_IEs__value_u { - RANfunctionsIDcause_List_t RANfunctionsIDcause_List; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateFailure_IEs_t; -typedef struct RICserviceQuery_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceQuery_IEs__value { - RICserviceQuery_IEs__value_PR present; - union RICserviceQuery_IEs__value_u { - RANfunctionsID_List_t RANfunctionsID_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceQuery_IEs_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1; -extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5; -extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9; -extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[3]; -extern asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13; -extern asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[3]; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17; -extern asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[3]; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21; -extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_25; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_25[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_29; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_29[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_33; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_33[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_37; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_37[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_41; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_41[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_45; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_45[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICindication_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_49; -extern asn_TYPE_member_t asn_MBR_RICindication_IEs_49[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_53; -extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_53[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_57; -extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_57[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_61; -extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_61[3]; -extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_65; -extern asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_65[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_69; -extern asn_TYPE_member_t asn_MBR_E2setupRequestIEs_69[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_73; -extern asn_TYPE_member_t asn_MBR_E2setupResponseIEs_73[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_77; -extern asn_TYPE_member_t asn_MBR_E2setupFailureIEs_77[3]; -extern asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_81; -extern asn_TYPE_member_t asn_MBR_ResetRequestIEs_81[3]; -extern asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_85; -extern asn_TYPE_member_t asn_MBR_ResetResponseIEs_85[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_89; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_89[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_93[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_97; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_97[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_101; -extern asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_101[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_Field_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-FieldPair.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-FieldPair.c deleted file mode 100644 index 9c7e653..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-FieldPair.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ProtocolIE-FieldPair.h" - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-FieldPair.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-FieldPair.h deleted file mode 100644 index 8193bd6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-FieldPair.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ProtocolIE_FieldPair_H_ -#define _ProtocolIE_FieldPair_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_FieldPair_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.c deleted file mode 100644 index 9afe610..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ProtocolIE-ID.h" - -int -ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = { - "ProtocolIE-ID", - "ProtocolIE-ID", - &asn_OP_NativeInteger, - asn_DEF_ProtocolIE_ID_tags_1, - sizeof(asn_DEF_ProtocolIE_ID_tags_1) - /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ - asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_ID_tags_1) - /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_ID_constr_1, ProtocolIE_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.h deleted file mode 100644 index f6d2261..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-ID.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ProtocolIE_ID_H_ -#define _ProtocolIE_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ProtocolIE-ID */ -typedef long ProtocolIE_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID; -asn_struct_free_f ProtocolIE_ID_free; -asn_struct_print_f ProtocolIE_ID_print; -asn_constr_check_f ProtocolIE_ID_constraint; -ber_type_decoder_f ProtocolIE_ID_decode_ber; -der_type_encoder_f ProtocolIE_ID_encode_der; -xer_type_decoder_f ProtocolIE_ID_decode_xer; -xer_type_encoder_f ProtocolIE_ID_encode_xer; -per_type_decoder_f ProtocolIE_ID_decode_uper; -per_type_encoder_f ProtocolIE_ID_encode_uper; -per_type_decoder_f ProtocolIE_ID_decode_aper; -per_type_encoder_f ProtocolIE_ID_encode_aper; -#define ProtocolIE_ID_id_Cause ((ProtocolIE_ID_t)1) -#define ProtocolIE_ID_id_CriticalityDiagnostics ((ProtocolIE_ID_t)2) -#define ProtocolIE_ID_id_GlobalE2node_ID ((ProtocolIE_ID_t)3) -#define ProtocolIE_ID_id_GlobalRIC_ID ((ProtocolIE_ID_t)4) -#define ProtocolIE_ID_id_RANfunctionID ((ProtocolIE_ID_t)5) -#define ProtocolIE_ID_id_RANfunctionID_Item ((ProtocolIE_ID_t)6) -#define ProtocolIE_ID_id_RANfunctionIEcause_Item ((ProtocolIE_ID_t)7) -#define ProtocolIE_ID_id_RANfunction_Item ((ProtocolIE_ID_t)8) -#define ProtocolIE_ID_id_RANfunctionsAccepted ((ProtocolIE_ID_t)9) -#define ProtocolIE_ID_id_RANfunctionsAdded ((ProtocolIE_ID_t)10) -#define ProtocolIE_ID_id_RANfunctionsDeleted ((ProtocolIE_ID_t)11) -#define ProtocolIE_ID_id_RANfunctionsModified ((ProtocolIE_ID_t)12) -#define ProtocolIE_ID_id_RANfunctionsRejected ((ProtocolIE_ID_t)13) -#define ProtocolIE_ID_id_RICaction_Admitted_Item ((ProtocolIE_ID_t)14) -#define ProtocolIE_ID_id_RICactionID ((ProtocolIE_ID_t)15) -#define ProtocolIE_ID_id_RICaction_NotAdmitted_Item ((ProtocolIE_ID_t)16) -#define ProtocolIE_ID_id_RICactions_Admitted ((ProtocolIE_ID_t)17) -#define ProtocolIE_ID_id_RICactions_NotAdmitted ((ProtocolIE_ID_t)18) -#define ProtocolIE_ID_id_RICaction_ToBeSetup_Item ((ProtocolIE_ID_t)19) -#define ProtocolIE_ID_id_RICcallProcessID ((ProtocolIE_ID_t)20) -#define ProtocolIE_ID_id_RICcontrolAckRequest ((ProtocolIE_ID_t)21) -#define ProtocolIE_ID_id_RICcontrolHeader ((ProtocolIE_ID_t)22) -#define ProtocolIE_ID_id_RICcontrolMessage ((ProtocolIE_ID_t)23) -#define ProtocolIE_ID_id_RICcontrolStatus ((ProtocolIE_ID_t)24) -#define ProtocolIE_ID_id_RICindicationHeader ((ProtocolIE_ID_t)25) -#define ProtocolIE_ID_id_RICindicationMessage ((ProtocolIE_ID_t)26) -#define ProtocolIE_ID_id_RICindicationSN ((ProtocolIE_ID_t)27) -#define ProtocolIE_ID_id_RICindicationType ((ProtocolIE_ID_t)28) -#define ProtocolIE_ID_id_RICrequestID ((ProtocolIE_ID_t)29) -#define ProtocolIE_ID_id_RICsubscriptionDetails ((ProtocolIE_ID_t)30) -#define ProtocolIE_ID_id_TimeToWait ((ProtocolIE_ID_t)31) -#define ProtocolIE_ID_id_RICcontrolOutcome ((ProtocolIE_ID_t)32) - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.c deleted file mode 100644 index c516962..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ProtocolIE-SingleContainer.h" - -/* - * This type is implemented using RICaction_ToBeSetup_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RICaction_Admitted_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RICaction_NotAdmitted_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RANfunction_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RANfunctionID_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RANfunctionIDcause_ItemIEs, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1530P0_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P0 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1530P0_tags_1, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P0_tags_1[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1530P0_tags_1, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P0_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_ToBeSetup_ItemIEs_1, - 3, /* Elements count */ - &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1530P1_tags_2[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P1 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1530P1_tags_2, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P1_tags_2) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P1_tags_2[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1530P1_tags_2, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P1_tags_2) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P1_tags_2[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_Admitted_ItemIEs_5, - 3, /* Elements count */ - &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1530P2_tags_3[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P2 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1530P2_tags_3, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P2_tags_3) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P2_tags_3[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1530P2_tags_3, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P2_tags_3) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P2_tags_3[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_NotAdmitted_ItemIEs_9, - 3, /* Elements count */ - &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1530P3_tags_4[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P3 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1530P3_tags_4, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P3_tags_4) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P3_tags_4[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1530P3_tags_4, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P3_tags_4) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P3_tags_4[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_ItemIEs_13, - 3, /* Elements count */ - &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1530P4_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P4 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1530P4_tags_5, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P4_tags_5) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P4_tags_5[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1530P4_tags_5, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P4_tags_5) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P4_tags_5[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionID_ItemIEs_17, - 3, /* Elements count */ - &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1530P5_tags_6[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P5 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1530P5_tags_6, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P5_tags_6) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P5_tags_6[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1530P5_tags_6, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P5_tags_6) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1530P5_tags_6[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionIDcause_ItemIEs_21, - 3, /* Elements count */ - &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.h deleted file mode 100644 index b17c298..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ProtocolIE-SingleContainer.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ProtocolIE_SingleContainer_H_ -#define _ProtocolIE_SingleContainer_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Field.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ProtocolIE-SingleContainer */ -typedef RICaction_ToBeSetup_ItemIEs_t ProtocolIE_SingleContainer_1530P0_t; -typedef RICaction_Admitted_ItemIEs_t ProtocolIE_SingleContainer_1530P1_t; -typedef RICaction_NotAdmitted_ItemIEs_t ProtocolIE_SingleContainer_1530P2_t; -typedef RANfunction_ItemIEs_t ProtocolIE_SingleContainer_1530P3_t; -typedef RANfunctionID_ItemIEs_t ProtocolIE_SingleContainer_1530P4_t; -typedef RANfunctionIDcause_ItemIEs_t ProtocolIE_SingleContainer_1530P5_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P0; -asn_struct_free_f ProtocolIE_SingleContainer_1530P0_free; -asn_struct_print_f ProtocolIE_SingleContainer_1530P0_print; -asn_constr_check_f ProtocolIE_SingleContainer_1530P0_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1530P0_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1530P0_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1530P0_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1530P0_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1530P0_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P0_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1530P0_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P0_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P1; -asn_struct_free_f ProtocolIE_SingleContainer_1530P1_free; -asn_struct_print_f ProtocolIE_SingleContainer_1530P1_print; -asn_constr_check_f ProtocolIE_SingleContainer_1530P1_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1530P1_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1530P1_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1530P1_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1530P1_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1530P1_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P1_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1530P1_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P1_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P2; -asn_struct_free_f ProtocolIE_SingleContainer_1530P2_free; -asn_struct_print_f ProtocolIE_SingleContainer_1530P2_print; -asn_constr_check_f ProtocolIE_SingleContainer_1530P2_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1530P2_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1530P2_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1530P2_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1530P2_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1530P2_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P2_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1530P2_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P2_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P3; -asn_struct_free_f ProtocolIE_SingleContainer_1530P3_free; -asn_struct_print_f ProtocolIE_SingleContainer_1530P3_print; -asn_constr_check_f ProtocolIE_SingleContainer_1530P3_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1530P3_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1530P3_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1530P3_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1530P3_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1530P3_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P3_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1530P3_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P3_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P4; -asn_struct_free_f ProtocolIE_SingleContainer_1530P4_free; -asn_struct_print_f ProtocolIE_SingleContainer_1530P4_print; -asn_constr_check_f ProtocolIE_SingleContainer_1530P4_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1530P4_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1530P4_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1530P4_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1530P4_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1530P4_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P4_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1530P4_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P4_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1530P5; -asn_struct_free_f ProtocolIE_SingleContainer_1530P5_free; -asn_struct_print_f ProtocolIE_SingleContainer_1530P5_print; -asn_constr_check_f ProtocolIE_SingleContainer_1530P5_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1530P5_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1530P5_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1530P5_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1530P5_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1530P5_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P5_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1530P5_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1530P5_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_SingleContainer_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.c deleted file mode 100644 index 373508b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RAN-Container.h" - -static asn_oer_constraints_t asn_OER_type_reportContainer_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_reportContainer_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_reportContainer_3[] = { - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container__reportContainer, choice.oDU_UE), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_DU_Usage_Report_Per_UE, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oDU-UE" - }, - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container__reportContainer, choice.oCU_CP_UE), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CU_CP_Usage_Report_Per_UE, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oCU-CP-UE" - }, - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container__reportContainer, choice.oCU_UP_UE), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CU_UP_Usage_Report_Per_UE, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oCU-UP-UE" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_reportContainer_tag2el_3[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oDU-UE */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* oCU-CP-UE */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* oCU-UP-UE */ -}; -static asn_CHOICE_specifics_t asn_SPC_reportContainer_specs_3 = { - sizeof(struct RAN_Container__reportContainer), - offsetof(struct RAN_Container__reportContainer, _asn_ctx), - offsetof(struct RAN_Container__reportContainer, present), - sizeof(((struct RAN_Container__reportContainer *)0)->present), - asn_MAP_reportContainer_tag2el_3, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_reportContainer_3 = { - "reportContainer", - "reportContainer", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_reportContainer_constr_3, &asn_PER_type_reportContainer_constr_3, CHOICE_constraint }, - asn_MBR_reportContainer_3, - 3, /* Elements count */ - &asn_SPC_reportContainer_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RAN_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container, timestamp), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Timestamp, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "timestamp" - }, - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container, reportContainer), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_reportContainer_3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "reportContainer" - }, -}; -static const ber_tlv_tag_t asn_DEF_RAN_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RAN_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timestamp */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reportContainer */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RAN_Container_specs_1 = { - sizeof(struct RAN_Container), - offsetof(struct RAN_Container, _asn_ctx), - asn_MAP_RAN_Container_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RAN_Container = { - "RAN-Container", - "RAN-Container", - &asn_OP_SEQUENCE, - asn_DEF_RAN_Container_tags_1, - sizeof(asn_DEF_RAN_Container_tags_1) - /sizeof(asn_DEF_RAN_Container_tags_1[0]), /* 1 */ - asn_DEF_RAN_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_RAN_Container_tags_1) - /sizeof(asn_DEF_RAN_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RAN_Container_1, - 2, /* Elements count */ - &asn_SPC_RAN_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.h deleted file mode 100644 index 8184460..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RAN-Container.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RAN_Container_H_ -#define _RAN_Container_H_ - - -#include - -/* Including external dependencies */ -#include "Timestamp.h" -#include "DU-Usage-Report-Per-UE.h" -#include "CU-CP-Usage-Report-Per-UE.h" -#include "CU-UP-Usage-Report-Per-UE.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RAN_Container__reportContainer_PR { - RAN_Container__reportContainer_PR_NOTHING, /* No components present */ - RAN_Container__reportContainer_PR_oDU_UE, - RAN_Container__reportContainer_PR_oCU_CP_UE, - RAN_Container__reportContainer_PR_oCU_UP_UE - /* Extensions may appear below */ - -} RAN_Container__reportContainer_PR; - -/* RAN-Container */ -typedef struct RAN_Container { - Timestamp_t timestamp; - struct RAN_Container__reportContainer { - RAN_Container__reportContainer_PR present; - union RAN_Container__reportContainer_u { - DU_Usage_Report_Per_UE_t oDU_UE; - CU_CP_Usage_Report_Per_UE_t oCU_CP_UE; - CU_UP_Usage_Report_Per_UE_t oCU_UP_UE; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } reportContainer; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RAN_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RAN_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_RAN_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_RAN_Container_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RAN_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANcallProcess-ID-string.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANcallProcess-ID-string.c deleted file mode 100644 index 4cd1b70..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANcallProcess-ID-string.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RANcallProcess-ID-string.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -RANcallProcess_ID_string_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_RANcallProcess_ID_string_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_RANcallProcess_ID_string_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -static asn_per_constraints_t asn_PER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_RANcallProcess_ID_string_1_v2c, /* Value to PER code map */ - asn_PER_MAP_RANcallProcess_ID_string_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANcallProcess_ID_string_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANcallProcess_ID_string = { - "RANcallProcess-ID-string", - "RANcallProcess-ID-string", - &asn_OP_PrintableString, - asn_DEF_RANcallProcess_ID_string_tags_1, - sizeof(asn_DEF_RANcallProcess_ID_string_tags_1) - /sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */ - asn_DEF_RANcallProcess_ID_string_tags_1, /* Same as above */ - sizeof(asn_DEF_RANcallProcess_ID_string_tags_1) - /sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */ - { &asn_OER_type_RANcallProcess_ID_string_constr_1, &asn_PER_type_RANcallProcess_ID_string_constr_1, RANcallProcess_ID_string_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANcallProcess-ID-string.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANcallProcess-ID-string.h deleted file mode 100644 index 087cdc0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANcallProcess-ID-string.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RANcallProcess_ID_string_H_ -#define _RANcallProcess_ID_string_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANcallProcess-ID-string */ -typedef PrintableString_t RANcallProcess_ID_string_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANcallProcess_ID_string; -asn_struct_free_f RANcallProcess_ID_string_free; -asn_struct_print_f RANcallProcess_ID_string_print; -asn_constr_check_f RANcallProcess_ID_string_constraint; -ber_type_decoder_f RANcallProcess_ID_string_decode_ber; -der_type_encoder_f RANcallProcess_ID_string_encode_der; -xer_type_decoder_f RANcallProcess_ID_string_decode_xer; -xer_type_encoder_f RANcallProcess_ID_string_encode_xer; -oer_type_decoder_f RANcallProcess_ID_string_decode_oer; -oer_type_encoder_f RANcallProcess_ID_string_encode_oer; -per_type_decoder_f RANcallProcess_ID_string_decode_uper; -per_type_encoder_f RANcallProcess_ID_string_encode_uper; -per_type_decoder_f RANcallProcess_ID_string_decode_aper; -per_type_encoder_f RANcallProcess_ID_string_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANcallProcess_ID_string_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Item.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Item.c deleted file mode 100644 index f1554d0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RANfunction-Item.h" - -static asn_TYPE_member_t asn_MBR_RANfunction_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionDefinition), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionDefinition" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionRevision), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionRevision, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionRevision" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunction_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranFunctionRevision */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Item_specs_1 = { - sizeof(struct RANfunction_Item), - offsetof(struct RANfunction_Item, _asn_ctx), - asn_MAP_RANfunction_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunction_Item = { - "RANfunction-Item", - "RANfunction-Item", - &asn_OP_SEQUENCE, - asn_DEF_RANfunction_Item_tags_1, - sizeof(asn_DEF_RANfunction_Item_tags_1) - /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ - asn_DEF_RANfunction_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunction_Item_tags_1) - /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_Item_1, - 3, /* Elements count */ - &asn_SPC_RANfunction_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Item.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Item.h deleted file mode 100644 index e7fd073..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RANfunction_Item_H_ -#define _RANfunction_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RANfunctionID.h" -#include "RANfunctionDefinition.h" -#include "RANfunctionRevision.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunction-Item */ -typedef struct RANfunction_Item { - RANfunctionID_t ranFunctionID; - RANfunctionDefinition_t ranFunctionDefinition; - RANfunctionRevision_t ranFunctionRevision; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunction_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunction_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Name.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Name.c deleted file mode 100644 index 72a90a9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Name.c +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RANfunction-Name.h" - -static const int permitted_alphabet_table_2[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_2[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_2(const void *sptr) { - const int *table = permitted_alphabet_table_2; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static const int permitted_alphabet_table_3[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_3[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_3(const void *sptr) { - const int *table = permitted_alphabet_table_3; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static const int permitted_alphabet_table_4[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_4[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_4(const void *sptr) { - const int *table = permitted_alphabet_table_4; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static int -memb_ranFunction_ShortName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_2(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_ranFunction_ShortName_2_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_2)/sizeof(permitted_alphabet_table_2[0])) - return -1; - return permitted_alphabet_table_2[value] - 1; -} -static int asn_PER_MAP_ranFunction_ShortName_2_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_2)/sizeof(permitted_alphabet_code2value_2[0])) - return -1; - return permitted_alphabet_code2value_2[code]; -} -static int -memb_ranFunction_E2SM_OID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 1000) - && !check_permitted_alphabet_3(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_ranFunction_E2SM_OID_3_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0])) - return -1; - return permitted_alphabet_table_3[value] - 1; -} -static int asn_PER_MAP_ranFunction_E2SM_OID_3_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0])) - return -1; - return permitted_alphabet_code2value_3[code]; -} -static int -memb_ranFunction_Description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_4(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_ranFunction_Description_4_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0])) - return -1; - return permitted_alphabet_table_4[value] - 1; -} -static int asn_PER_MAP_ranFunction_Description_4_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0])) - return -1; - return permitted_alphabet_code2value_4[code]; -} -static asn_oer_constraints_t asn_OER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -static asn_per_constraints_t asn_PER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_ranFunction_ShortName_2_v2c, /* Value to PER code map */ - asn_PER_MAP_ranFunction_ShortName_2_c2v /* PER code to value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -static asn_per_constraints_t asn_PER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */, - asn_PER_MAP_ranFunction_E2SM_OID_3_v2c, /* Value to PER code map */ - asn_PER_MAP_ranFunction_E2SM_OID_3_c2v /* PER code to value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ranFunction_Description_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -static asn_per_constraints_t asn_PER_memb_ranFunction_Description_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_ranFunction_Description_4_v2c, /* Value to PER code map */ - asn_PER_MAP_ranFunction_Description_4_c2v /* PER code to value map */ -}; -asn_TYPE_member_t asn_MBR_RANfunction_Name_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_ShortName), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { &asn_OER_memb_ranFunction_ShortName_constr_2, &asn_PER_memb_ranFunction_ShortName_constr_2, memb_ranFunction_ShortName_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-ShortName" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_E2SM_OID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { &asn_OER_memb_ranFunction_E2SM_OID_constr_3, &asn_PER_memb_ranFunction_E2SM_OID_constr_3, memb_ranFunction_E2SM_OID_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-E2SM-OID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_Description), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { &asn_OER_memb_ranFunction_Description_constr_4, &asn_PER_memb_ranFunction_Description_constr_4, memb_ranFunction_Description_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-Description" - }, - { ATF_POINTER, 1, offsetof(struct RANfunction_Name, ranFunction_Instance), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunction-Instance" - }, -}; -static const int asn_MAP_RANfunction_Name_oms_1[] = { 3 }; -static const ber_tlv_tag_t asn_DEF_RANfunction_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Name_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-ShortName */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunction-E2SM-OID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunction-Description */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunction-Instance */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1 = { - sizeof(struct RANfunction_Name), - offsetof(struct RANfunction_Name, _asn_ctx), - asn_MAP_RANfunction_Name_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_RANfunction_Name_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunction_Name = { - "RANfunction-Name", - "RANfunction-Name", - &asn_OP_SEQUENCE, - asn_DEF_RANfunction_Name_tags_1, - sizeof(asn_DEF_RANfunction_Name_tags_1) - /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */ - asn_DEF_RANfunction_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunction_Name_tags_1) - /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_Name_1, - 4, /* Elements count */ - &asn_SPC_RANfunction_Name_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Name.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Name.h deleted file mode 100644 index 0fe182b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunction-Name.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RANfunction_Name_H_ -#define _RANfunction_Name_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunction-Name */ -typedef struct RANfunction_Name { - PrintableString_t ranFunction_ShortName; - PrintableString_t ranFunction_E2SM_OID; - PrintableString_t ranFunction_Description; - long *ranFunction_Instance; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunction_Name_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Name; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1; -extern asn_TYPE_member_t asn_MBR_RANfunction_Name_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunction_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionDefinition.c deleted file mode 100644 index 3d8697d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionDefinition.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RANfunctionDefinition.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RANfunctionDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition = { - "RANfunctionDefinition", - "RANfunctionDefinition", - &asn_OP_OCTET_STRING, - asn_DEF_RANfunctionDefinition_tags_1, - sizeof(asn_DEF_RANfunctionDefinition_tags_1) - /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionDefinition_tags_1) - /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionDefinition.h deleted file mode 100644 index 4e54dde..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionDefinition.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RANfunctionDefinition_H_ -#define _RANfunctionDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionDefinition */ -typedef OCTET_STRING_t RANfunctionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition; -asn_struct_free_f RANfunctionDefinition_free; -asn_struct_print_f RANfunctionDefinition_print; -asn_constr_check_f RANfunctionDefinition_constraint; -ber_type_decoder_f RANfunctionDefinition_decode_ber; -der_type_encoder_f RANfunctionDefinition_encode_der; -xer_type_decoder_f RANfunctionDefinition_decode_xer; -xer_type_encoder_f RANfunctionDefinition_encode_xer; -per_type_decoder_f RANfunctionDefinition_decode_uper; -per_type_encoder_f RANfunctionDefinition_encode_uper; -per_type_decoder_f RANfunctionDefinition_decode_aper; -per_type_encoder_f RANfunctionDefinition_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionDefinition_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID-Item.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID-Item.c deleted file mode 100644 index 7661a88..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RANfunctionID-Item.h" - -static asn_TYPE_member_t asn_MBR_RANfunctionID_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionRevision), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionRevision, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionRevision" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionID_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranFunctionRevision */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_Item_specs_1 = { - sizeof(struct RANfunctionID_Item), - offsetof(struct RANfunctionID_Item, _asn_ctx), - asn_MAP_RANfunctionID_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item = { - "RANfunctionID-Item", - "RANfunctionID-Item", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionID_Item_tags_1, - sizeof(asn_DEF_RANfunctionID_Item_tags_1) - /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionID_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionID_Item_tags_1) - /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionID_Item_1, - 2, /* Elements count */ - &asn_SPC_RANfunctionID_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID-Item.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID-Item.h deleted file mode 100644 index 9b3be69..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RANfunctionID_Item_H_ -#define _RANfunctionID_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RANfunctionID.h" -#include "RANfunctionRevision.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionID-Item */ -typedef struct RANfunctionID_Item { - RANfunctionID_t ranFunctionID; - RANfunctionRevision_t ranFunctionRevision; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionID_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionID_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.c deleted file mode 100644 index fc95705..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RANfunctionID.h" - -int -RANfunctionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 4095)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionID = { - "RANfunctionID", - "RANfunctionID", - &asn_OP_NativeInteger, - asn_DEF_RANfunctionID_tags_1, - sizeof(asn_DEF_RANfunctionID_tags_1) - /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionID_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionID_tags_1) - /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctionID_constr_1, RANfunctionID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.h deleted file mode 100644 index f0a61a0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RANfunctionID_H_ -#define _RANfunctionID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionID */ -typedef long RANfunctionID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID; -asn_struct_free_f RANfunctionID_free; -asn_struct_print_f RANfunctionID_print; -asn_constr_check_f RANfunctionID_constraint; -ber_type_decoder_f RANfunctionID_decode_ber; -der_type_encoder_f RANfunctionID_encode_der; -xer_type_decoder_f RANfunctionID_decode_xer; -xer_type_encoder_f RANfunctionID_encode_xer; -per_type_decoder_f RANfunctionID_decode_uper; -per_type_encoder_f RANfunctionID_encode_uper; -per_type_decoder_f RANfunctionID_decode_aper; -per_type_encoder_f RANfunctionID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionIDcause-Item.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionIDcause-Item.c deleted file mode 100644 index 985330a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionIDcause-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RANfunctionIDcause-Item.h" - -static asn_TYPE_member_t asn_MBR_RANfunctionIDcause_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_Item_specs_1 = { - sizeof(struct RANfunctionIDcause_Item), - offsetof(struct RANfunctionIDcause_Item, _asn_ctx), - asn_MAP_RANfunctionIDcause_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item = { - "RANfunctionIDcause-Item", - "RANfunctionIDcause-Item", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionIDcause_Item_tags_1, - sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) - /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionIDcause_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) - /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionIDcause_Item_1, - 2, /* Elements count */ - &asn_SPC_RANfunctionIDcause_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionIDcause-Item.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionIDcause-Item.h deleted file mode 100644 index 033ed53..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionIDcause-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RANfunctionIDcause_Item_H_ -#define _RANfunctionIDcause_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RANfunctionID.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionIDcause-Item */ -typedef struct RANfunctionIDcause_Item { - RANfunctionID_t ranFunctionID; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionIDcause_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionIDcause_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionRevision.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionRevision.c deleted file mode 100644 index a0b271b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionRevision.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RANfunctionRevision.h" - -int -RANfunctionRevision_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 4095)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionRevision_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision = { - "RANfunctionRevision", - "RANfunctionRevision", - &asn_OP_NativeInteger, - asn_DEF_RANfunctionRevision_tags_1, - sizeof(asn_DEF_RANfunctionRevision_tags_1) - /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionRevision_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionRevision_tags_1) - /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctionRevision_constr_1, RANfunctionRevision_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionRevision.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionRevision.h deleted file mode 100644 index 58ec9ba..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionRevision.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RANfunctionRevision_H_ -#define _RANfunctionRevision_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionRevision */ -typedef long RANfunctionRevision_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision; -asn_struct_free_f RANfunctionRevision_free; -asn_struct_print_f RANfunctionRevision_print; -asn_constr_check_f RANfunctionRevision_constraint; -ber_type_decoder_f RANfunctionRevision_decode_ber; -der_type_encoder_f RANfunctionRevision_encode_der; -xer_type_decoder_f RANfunctionRevision_decode_xer; -xer_type_encoder_f RANfunctionRevision_encode_xer; -per_type_decoder_f RANfunctionRevision_decode_uper; -per_type_encoder_f RANfunctionRevision_encode_uper; -per_type_decoder_f RANfunctionRevision_decode_aper; -per_type_encoder_f RANfunctionRevision_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionRevision_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctions-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctions-List.c deleted file mode 100644 index f55d0a1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctions-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RANfunctions-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RANfunctions_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RANfunctions_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1530P3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctions_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RANfunctions_List_specs_1 = { - sizeof(struct RANfunctions_List), - offsetof(struct RANfunctions_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctions_List = { - "RANfunctions-List", - "RANfunctions-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RANfunctions_List_tags_1, - sizeof(asn_DEF_RANfunctions_List_tags_1) - /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ - asn_DEF_RANfunctions_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctions_List_tags_1) - /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctions_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RANfunctions_List_1, - 1, /* Single element */ - &asn_SPC_RANfunctions_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctions-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctions-List.h deleted file mode 100644 index 9e45736..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctions-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RANfunctions_List_H_ -#define _RANfunctions_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RANfunctions-List */ -typedef struct RANfunctions_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctions_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctions_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctions_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsID-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsID-List.c deleted file mode 100644 index c52b90c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsID-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RANfunctionsID-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RANfunctionsID_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RANfunctionsID_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1530P4, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionsID_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RANfunctionsID_List_specs_1 = { - sizeof(struct RANfunctionsID_List), - offsetof(struct RANfunctionsID_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List = { - "RANfunctionsID-List", - "RANfunctionsID-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RANfunctionsID_List_tags_1, - sizeof(asn_DEF_RANfunctionsID_List_tags_1) - /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionsID_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionsID_List_tags_1) - /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctionsID_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RANfunctionsID_List_1, - 1, /* Single element */ - &asn_SPC_RANfunctionsID_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsID-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsID-List.h deleted file mode 100644 index b8bd23c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsID-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RANfunctionsID_List_H_ -#define _RANfunctionsID_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RANfunctionsID-List */ -typedef struct RANfunctionsID_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionsID_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionsID_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsIDcause-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsIDcause-List.c deleted file mode 100644 index fb5c08d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsIDcause-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RANfunctionsIDcause-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RANfunctionsIDcause_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RANfunctionsIDcause_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1530P5, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionsIDcause_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RANfunctionsIDcause_List_specs_1 = { - sizeof(struct RANfunctionsIDcause_List), - offsetof(struct RANfunctionsIDcause_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List = { - "RANfunctionsIDcause-List", - "RANfunctionsIDcause-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RANfunctionsIDcause_List_tags_1, - sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) - /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionsIDcause_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) - /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctionsIDcause_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RANfunctionsIDcause_List_1, - 1, /* Single element */ - &asn_SPC_RANfunctionsIDcause_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsIDcause-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsIDcause-List.h deleted file mode 100644 index 386c289..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RANfunctionsIDcause-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RANfunctionsIDcause_List_H_ -#define _RANfunctionsIDcause_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RANfunctionsIDcause-List */ -typedef struct RANfunctionsIDcause_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionsIDcause_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionsIDcause_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.c deleted file mode 100644 index 246322a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-EventTriggerStyle-List.h" - -asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_List, ric_EventTriggerFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_RIC_EventTriggerStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RIC_EventTriggerStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_List_specs_1 = { - sizeof(struct RIC_EventTriggerStyle_List), - offsetof(struct RIC_EventTriggerStyle_List, _asn_ctx), - asn_MAP_RIC_EventTriggerStyle_List_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_List = { - "RIC-EventTriggerStyle-List", - "RIC-EventTriggerStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_RIC_EventTriggerStyle_List_tags_1, - sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1) - /sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ - asn_DEF_RIC_EventTriggerStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1) - /sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RIC_EventTriggerStyle_List_1, - 3, /* Elements count */ - &asn_SPC_RIC_EventTriggerStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.h deleted file mode 100644 index 18a6a8a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-EventTriggerStyle-List.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_EventTriggerStyle_List_H_ -#define _RIC_EventTriggerStyle_List_H_ - - -#include - -/* Including external dependencies */ -#include "RIC-Style-Type.h" -#include "RIC-Style-Name.h" -#include "RIC-Format-Type.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-EventTriggerStyle-List */ -typedef struct RIC_EventTriggerStyle_List { - RIC_Style_Type_t ric_EventTriggerStyle_Type; - RIC_Style_Name_t ric_EventTriggerStyle_Name; - RIC_Format_Type_t ric_EventTriggerFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RIC_EventTriggerStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_List_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_EventTriggerStyle_List_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.c deleted file mode 100644 index 53f0624..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-Format-Type.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RIC_Format_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type = { - "RIC-Format-Type", - "RIC-Format-Type", - &asn_OP_NativeInteger, - asn_DEF_RIC_Format_Type_tags_1, - sizeof(asn_DEF_RIC_Format_Type_tags_1) - /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */ - asn_DEF_RIC_Format_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_Format_Type_tags_1) - /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.h deleted file mode 100644 index 81cec85..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Format-Type.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_Format_Type_H_ -#define _RIC_Format_Type_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-Format-Type */ -typedef long RIC_Format_Type_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type; -asn_struct_free_f RIC_Format_Type_free; -asn_struct_print_f RIC_Format_Type_print; -asn_constr_check_f RIC_Format_Type_constraint; -ber_type_decoder_f RIC_Format_Type_decode_ber; -der_type_encoder_f RIC_Format_Type_encode_der; -xer_type_decoder_f RIC_Format_Type_decode_xer; -xer_type_encoder_f RIC_Format_Type_encode_xer; -oer_type_decoder_f RIC_Format_Type_decode_oer; -oer_type_encoder_f RIC_Format_Type_encode_oer; -per_type_decoder_f RIC_Format_Type_decode_uper; -per_type_encoder_f RIC_Format_Type_encode_uper; -per_type_decoder_f RIC_Format_Type_decode_aper; -per_type_encoder_f RIC_Format_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_Format_Type_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-ReportStyle-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-ReportStyle-List.c deleted file mode 100644 index 93d4a15..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-ReportStyle-List.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-ReportStyle-List.h" - -asn_TYPE_member_t asn_MBR_RIC_ReportStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_ReportStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_ReportStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_IndicationHeaderFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationHeaderFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_IndicationMessageFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationMessageFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_RIC_ReportStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RIC_ReportStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-IndicationHeaderFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ric-IndicationMessageFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_List_specs_1 = { - sizeof(struct RIC_ReportStyle_List), - offsetof(struct RIC_ReportStyle_List, _asn_ctx), - asn_MAP_RIC_ReportStyle_List_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_List = { - "RIC-ReportStyle-List", - "RIC-ReportStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_RIC_ReportStyle_List_tags_1, - sizeof(asn_DEF_RIC_ReportStyle_List_tags_1) - /sizeof(asn_DEF_RIC_ReportStyle_List_tags_1[0]), /* 1 */ - asn_DEF_RIC_ReportStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_ReportStyle_List_tags_1) - /sizeof(asn_DEF_RIC_ReportStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RIC_ReportStyle_List_1, - 4, /* Elements count */ - &asn_SPC_RIC_ReportStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-ReportStyle-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-ReportStyle-List.h deleted file mode 100644 index af886aa..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-ReportStyle-List.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_ReportStyle_List_H_ -#define _RIC_ReportStyle_List_H_ - - -#include - -/* Including external dependencies */ -#include "RIC-Style-Type.h" -#include "RIC-Style-Name.h" -#include "RIC-Format-Type.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-ReportStyle-List */ -typedef struct RIC_ReportStyle_List { - RIC_Style_Type_t ric_ReportStyle_Type; - RIC_Style_Name_t ric_ReportStyle_Name; - RIC_Format_Type_t ric_IndicationHeaderFormat_Type; - RIC_Format_Type_t ric_IndicationMessageFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RIC_ReportStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_RIC_ReportStyle_List_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_ReportStyle_List_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.c deleted file mode 100644 index 2c4a054..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-Style-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -RIC_Style_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_RIC_Style_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_RIC_Style_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RIC_Style_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_RIC_Style_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_RIC_Style_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_RIC_Style_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name = { - "RIC-Style-Name", - "RIC-Style-Name", - &asn_OP_PrintableString, - asn_DEF_RIC_Style_Name_tags_1, - sizeof(asn_DEF_RIC_Style_Name_tags_1) - /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */ - asn_DEF_RIC_Style_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_Style_Name_tags_1) - /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */ - { &asn_OER_type_RIC_Style_Name_constr_1, &asn_PER_type_RIC_Style_Name_constr_1, RIC_Style_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.h deleted file mode 100644 index bb02b2c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Name.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_Style_Name_H_ -#define _RIC_Style_Name_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-Style-Name */ -typedef PrintableString_t RIC_Style_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name; -asn_struct_free_f RIC_Style_Name_free; -asn_struct_print_f RIC_Style_Name_print; -asn_constr_check_f RIC_Style_Name_constraint; -ber_type_decoder_f RIC_Style_Name_decode_ber; -der_type_encoder_f RIC_Style_Name_encode_der; -xer_type_decoder_f RIC_Style_Name_decode_xer; -xer_type_encoder_f RIC_Style_Name_encode_xer; -oer_type_decoder_f RIC_Style_Name_decode_oer; -oer_type_encoder_f RIC_Style_Name_encode_oer; -per_type_decoder_f RIC_Style_Name_decode_uper; -per_type_encoder_f RIC_Style_Name_encode_uper; -per_type_decoder_f RIC_Style_Name_decode_aper; -per_type_encoder_f RIC_Style_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_Style_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.c deleted file mode 100644 index 5324c4a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-Style-Type.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RIC_Style_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type = { - "RIC-Style-Type", - "RIC-Style-Type", - &asn_OP_NativeInteger, - asn_DEF_RIC_Style_Type_tags_1, - sizeof(asn_DEF_RIC_Style_Type_tags_1) - /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */ - asn_DEF_RIC_Style_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_Style_Type_tags_1) - /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.h deleted file mode 100644 index 9948bb0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RIC-Style-Type.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_Style_Type_H_ -#define _RIC_Style_Type_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-Style-Type */ -typedef long RIC_Style_Type_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type; -asn_struct_free_f RIC_Style_Type_free; -asn_struct_print_f RIC_Style_Type_print; -asn_constr_check_f RIC_Style_Type_constraint; -ber_type_decoder_f RIC_Style_Type_decode_ber; -der_type_encoder_f RIC_Style_Type_encode_der; -xer_type_decoder_f RIC_Style_Type_decode_xer; -xer_type_encoder_f RIC_Style_Type_encode_xer; -oer_type_decoder_f RIC_Style_Type_decode_oer; -oer_type_encoder_f RIC_Style_Type_encode_oer; -per_type_decoder_f RIC_Style_Type_decode_uper; -per_type_encoder_f RIC_Style_Type_encode_uper; -per_type_decoder_f RIC_Style_Type_decode_aper; -per_type_encoder_f RIC_Style_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_Style_Type_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-Item.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-Item.c deleted file mode 100644 index 0b566bb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-Item.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICaction-Admitted-Item.h" - -static asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_Item, ricActionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionID" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1 = { - sizeof(struct RICaction_Admitted_Item), - offsetof(struct RICaction_Admitted_Item, _asn_ctx), - asn_MAP_RICaction_Admitted_Item_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item = { - "RICaction-Admitted-Item", - "RICaction-Admitted-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_Admitted_Item_tags_1, - sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ - asn_DEF_RICaction_Admitted_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_Admitted_Item_1, - 1, /* Elements count */ - &asn_SPC_RICaction_Admitted_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-Item.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-Item.h deleted file mode 100644 index d7f13c1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-Item.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICaction_Admitted_Item_H_ -#define _RICaction_Admitted_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICactionID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICaction-Admitted-Item */ -typedef struct RICaction_Admitted_Item { - RICactionID_t ricActionID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_Admitted_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_Admitted_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-List.c deleted file mode 100644 index 692fd38..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICaction-Admitted-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RICaction_Admitted_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RICaction_Admitted_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1530P1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RICaction_Admitted_List_specs_1 = { - sizeof(struct RICaction_Admitted_List), - offsetof(struct RICaction_Admitted_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List = { - "RICaction-Admitted-List", - "RICaction-Admitted-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICaction_Admitted_List_tags_1, - sizeof(asn_DEF_RICaction_Admitted_List_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ - asn_DEF_RICaction_Admitted_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_Admitted_List_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICaction_Admitted_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICaction_Admitted_List_1, - 1, /* Single element */ - &asn_SPC_RICaction_Admitted_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-List.h deleted file mode 100644 index 8eaf217..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-Admitted-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICaction_Admitted_List_H_ -#define _RICaction_Admitted_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICaction-Admitted-List */ -typedef struct RICaction_Admitted_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_Admitted_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_Admitted_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.c deleted file mode 100644 index 515679d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICaction-NotAdmitted-Item.h" - -static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricActionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_Item_specs_1 = { - sizeof(struct RICaction_NotAdmitted_Item), - offsetof(struct RICaction_NotAdmitted_Item, _asn_ctx), - asn_MAP_RICaction_NotAdmitted_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item = { - "RICaction-NotAdmitted-Item", - "RICaction-NotAdmitted-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_NotAdmitted_Item_tags_1, - sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ - asn_DEF_RICaction_NotAdmitted_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_NotAdmitted_Item_1, - 2, /* Elements count */ - &asn_SPC_RICaction_NotAdmitted_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.h deleted file mode 100644 index 48645e1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICaction_NotAdmitted_Item_H_ -#define _RICaction_NotAdmitted_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICactionID.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICaction-NotAdmitted-Item */ -typedef struct RICaction_NotAdmitted_Item { - RICactionID_t ricActionID; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_NotAdmitted_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_NotAdmitted_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.c deleted file mode 100644 index 51f45f4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICaction-NotAdmitted-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RICaction_NotAdmitted_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1530P2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RICaction_NotAdmitted_List_specs_1 = { - sizeof(struct RICaction_NotAdmitted_List), - offsetof(struct RICaction_NotAdmitted_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List = { - "RICaction-NotAdmitted-List", - "RICaction-NotAdmitted-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICaction_NotAdmitted_List_tags_1, - sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ - asn_DEF_RICaction_NotAdmitted_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICaction_NotAdmitted_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICaction_NotAdmitted_List_1, - 1, /* Single element */ - &asn_SPC_RICaction_NotAdmitted_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.h deleted file mode 100644 index 95bbadf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-NotAdmitted-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICaction_NotAdmitted_List_H_ -#define _RICaction_NotAdmitted_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICaction-NotAdmitted-List */ -typedef struct RICaction_NotAdmitted_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_NotAdmitted_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_NotAdmitted_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.c deleted file mode 100644 index 2e8bc94..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICaction-ToBeSetup-Item.h" - -#include "RICsubsequentAction.h" -static asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionType), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionType" - }, - { ATF_POINTER, 2, offsetof(struct RICaction_ToBeSetup_Item, ricActionDefinition), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionDefinition" - }, - { ATF_POINTER, 1, offsetof(struct RICaction_ToBeSetup_Item, ricSubsequentAction), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICsubsequentAction, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricSubsequentAction" - }, -}; -static const int asn_MAP_RICaction_ToBeSetup_Item_oms_1[] = { 2, 3 }; -static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionType */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ricSubsequentAction */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_Item_specs_1 = { - sizeof(struct RICaction_ToBeSetup_Item), - offsetof(struct RICaction_ToBeSetup_Item, _asn_ctx), - asn_MAP_RICaction_ToBeSetup_Item_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_RICaction_ToBeSetup_Item_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item = { - "RICaction-ToBeSetup-Item", - "RICaction-ToBeSetup-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_ToBeSetup_Item_tags_1, - sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ - asn_DEF_RICaction_ToBeSetup_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_ToBeSetup_Item_1, - 4, /* Elements count */ - &asn_SPC_RICaction_ToBeSetup_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.h deleted file mode 100644 index c3f5d07..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICaction-ToBeSetup-Item.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICaction_ToBeSetup_Item_H_ -#define _RICaction_ToBeSetup_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICactionID.h" -#include "RICactionType.h" -#include "RICactionDefinition.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RICsubsequentAction; - -/* RICaction-ToBeSetup-Item */ -typedef struct RICaction_ToBeSetup_Item { - RICactionID_t ricActionID; - RICactionType_t ricActionType; - RICactionDefinition_t *ricActionDefinition; /* OPTIONAL */ - struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_ToBeSetup_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_ToBeSetup_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionDefinition.c deleted file mode 100644 index dd1d941..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionDefinition.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICactionDefinition.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICactionDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICactionDefinition = { - "RICactionDefinition", - "RICactionDefinition", - &asn_OP_OCTET_STRING, - asn_DEF_RICactionDefinition_tags_1, - sizeof(asn_DEF_RICactionDefinition_tags_1) - /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ - asn_DEF_RICactionDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactionDefinition_tags_1) - /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionDefinition.h deleted file mode 100644 index e1eeca6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionDefinition.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICactionDefinition_H_ -#define _RICactionDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICactionDefinition */ -typedef OCTET_STRING_t RICactionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICactionDefinition; -asn_struct_free_f RICactionDefinition_free; -asn_struct_print_f RICactionDefinition_print; -asn_constr_check_f RICactionDefinition_constraint; -ber_type_decoder_f RICactionDefinition_decode_ber; -der_type_encoder_f RICactionDefinition_encode_der; -xer_type_decoder_f RICactionDefinition_decode_xer; -xer_type_encoder_f RICactionDefinition_encode_xer; -per_type_decoder_f RICactionDefinition_decode_uper; -per_type_encoder_f RICactionDefinition_encode_uper; -per_type_decoder_f RICactionDefinition_decode_aper; -per_type_encoder_f RICactionDefinition_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactionDefinition_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.c deleted file mode 100644 index ecd1ea7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICactionID.h" - -int -RICactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RICactionID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RICactionID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICactionID = { - "RICactionID", - "RICactionID", - &asn_OP_NativeInteger, - asn_DEF_RICactionID_tags_1, - sizeof(asn_DEF_RICactionID_tags_1) - /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ - asn_DEF_RICactionID_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactionID_tags_1) - /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICactionID_constr_1, RICactionID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.h deleted file mode 100644 index b21d3a8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICactionID_H_ -#define _RICactionID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICactionID */ -typedef long RICactionID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICactionID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICactionID; -asn_struct_free_f RICactionID_free; -asn_struct_print_f RICactionID_print; -asn_constr_check_f RICactionID_constraint; -ber_type_decoder_f RICactionID_decode_ber; -der_type_encoder_f RICactionID_encode_der; -xer_type_decoder_f RICactionID_decode_xer; -xer_type_encoder_f RICactionID_encode_xer; -per_type_decoder_f RICactionID_decode_uper; -per_type_encoder_f RICactionID_encode_uper; -per_type_decoder_f RICactionID_decode_aper; -per_type_encoder_f RICactionID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactionID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.c deleted file mode 100644 index 69f2101..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICactionType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RICactionType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICactionType_value2enum_1[] = { - { 0, 6, "report" }, - { 1, 6, "insert" }, - { 2, 6, "policy" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICactionType_enum2value_1[] = { - 1, /* insert(1) */ - 2, /* policy(2) */ - 0 /* report(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1 = { - asn_MAP_RICactionType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICactionType_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICactionType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICactionType = { - "RICactionType", - "RICactionType", - &asn_OP_NativeEnumerated, - asn_DEF_RICactionType_tags_1, - sizeof(asn_DEF_RICactionType_tags_1) - /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ - asn_DEF_RICactionType_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactionType_tags_1) - /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICactionType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICactionType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.h deleted file mode 100644 index b51809c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactionType.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICactionType_H_ -#define _RICactionType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICactionType { - RICactionType_report = 0, - RICactionType_insert = 1, - RICactionType_policy = 2 - /* - * Enumeration is extensible - */ -} e_RICactionType; - -/* RICactionType */ -typedef long RICactionType_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICactionType_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICactionType; -extern const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1; -asn_struct_free_f RICactionType_free; -asn_struct_print_f RICactionType_print; -asn_constr_check_f RICactionType_constraint; -ber_type_decoder_f RICactionType_decode_ber; -der_type_encoder_f RICactionType_encode_der; -xer_type_decoder_f RICactionType_decode_xer; -xer_type_encoder_f RICactionType_encode_xer; -per_type_decoder_f RICactionType_decode_uper; -per_type_encoder_f RICactionType_encode_uper; -per_type_decoder_f RICactionType_decode_aper; -per_type_encoder_f RICactionType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactionType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.c deleted file mode 100644 index c1445fd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICactions-ToBeSetup-List.h" - -#include "ProtocolIE-SingleContainer.h" -asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1530P0, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICactions_ToBeSetup_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1 = { - sizeof(struct RICactions_ToBeSetup_List), - offsetof(struct RICactions_ToBeSetup_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List = { - "RICactions-ToBeSetup-List", - "RICactions-ToBeSetup-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICactions_ToBeSetup_List_tags_1, - sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) - /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ - asn_DEF_RICactions_ToBeSetup_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) - /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICactions_ToBeSetup_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICactions_ToBeSetup_List_1, - 1, /* Single element */ - &asn_SPC_RICactions_ToBeSetup_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.h deleted file mode 100644 index 7acfeb4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICactions-ToBeSetup-List.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICactions_ToBeSetup_List_H_ -#define _RICactions_ToBeSetup_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICactions-ToBeSetup-List */ -typedef struct RICactions_ToBeSetup_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICactions_ToBeSetup_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List; -extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1; -extern asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[1]; -extern asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactions_ToBeSetup_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcallProcessID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcallProcessID.c deleted file mode 100644 index a7d682f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcallProcessID.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICcallProcessID.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcallProcessID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcallProcessID = { - "RICcallProcessID", - "RICcallProcessID", - &asn_OP_OCTET_STRING, - asn_DEF_RICcallProcessID_tags_1, - sizeof(asn_DEF_RICcallProcessID_tags_1) - /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ - asn_DEF_RICcallProcessID_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcallProcessID_tags_1) - /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcallProcessID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcallProcessID.h deleted file mode 100644 index d388b85..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcallProcessID.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICcallProcessID_H_ -#define _RICcallProcessID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcallProcessID */ -typedef OCTET_STRING_t RICcallProcessID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcallProcessID; -asn_struct_free_f RICcallProcessID_free; -asn_struct_print_f RICcallProcessID_print; -asn_constr_check_f RICcallProcessID_constraint; -ber_type_decoder_f RICcallProcessID_decode_ber; -der_type_encoder_f RICcallProcessID_encode_der; -xer_type_decoder_f RICcallProcessID_decode_xer; -xer_type_encoder_f RICcallProcessID_encode_xer; -per_type_decoder_f RICcallProcessID_decode_uper; -per_type_encoder_f RICcallProcessID_encode_uper; -per_type_decoder_f RICcallProcessID_decode_aper; -per_type_encoder_f RICcallProcessID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcallProcessID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAckRequest.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAckRequest.c deleted file mode 100644 index d69a24c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAckRequest.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICcontrolAckRequest.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_RICcontrolAckRequest_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolAckRequest_value2enum_1[] = { - { 0, 5, "noAck" }, - { 1, 3, "ack" }, - { 2, 4, "nAck" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICcontrolAckRequest_enum2value_1[] = { - 1, /* ack(1) */ - 2, /* nAck(2) */ - 0 /* noAck(0) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_RICcontrolAckRequest_specs_1 = { - asn_MAP_RICcontrolAckRequest_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICcontrolAckRequest_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolAckRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest = { - "RICcontrolAckRequest", - "RICcontrolAckRequest", - &asn_OP_NativeEnumerated, - asn_DEF_RICcontrolAckRequest_tags_1, - sizeof(asn_DEF_RICcontrolAckRequest_tags_1) - /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolAckRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolAckRequest_tags_1) - /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICcontrolAckRequest_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICcontrolAckRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAckRequest.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAckRequest.h deleted file mode 100644 index 73f9da7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAckRequest.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICcontrolAckRequest_H_ -#define _RICcontrolAckRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICcontrolAckRequest { - RICcontrolAckRequest_noAck = 0, - RICcontrolAckRequest_ack = 1, - RICcontrolAckRequest_nAck = 2 - /* - * Enumeration is extensible - */ -} e_RICcontrolAckRequest; - -/* RICcontrolAckRequest */ -typedef long RICcontrolAckRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest; -asn_struct_free_f RICcontrolAckRequest_free; -asn_struct_print_f RICcontrolAckRequest_print; -asn_constr_check_f RICcontrolAckRequest_constraint; -ber_type_decoder_f RICcontrolAckRequest_decode_ber; -der_type_encoder_f RICcontrolAckRequest_encode_der; -xer_type_decoder_f RICcontrolAckRequest_decode_xer; -xer_type_encoder_f RICcontrolAckRequest_encode_xer; -per_type_decoder_f RICcontrolAckRequest_decode_uper; -per_type_encoder_f RICcontrolAckRequest_encode_uper; -per_type_decoder_f RICcontrolAckRequest_decode_aper; -per_type_encoder_f RICcontrolAckRequest_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolAckRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAcknowledge.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAcknowledge.c deleted file mode 100644 index eb3d6d2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICcontrolAcknowledge.h" - -asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P8, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1 = { - sizeof(struct RICcontrolAcknowledge), - offsetof(struct RICcontrolAcknowledge, _asn_ctx), - asn_MAP_RICcontrolAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge = { - "RICcontrolAcknowledge", - "RICcontrolAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolAcknowledge_tags_1, - sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) - /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) - /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_RICcontrolAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAcknowledge.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAcknowledge.h deleted file mode 100644 index 63dbb73..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICcontrolAcknowledge_H_ -#define _RICcontrolAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolAcknowledge */ -typedef struct RICcontrolAcknowledge { - ProtocolIE_Container_1527P8_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolFailure.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolFailure.c deleted file mode 100644 index 044706c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICcontrolFailure.h" - -asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P9, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1 = { - sizeof(struct RICcontrolFailure), - offsetof(struct RICcontrolFailure, _asn_ctx), - asn_MAP_RICcontrolFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure = { - "RICcontrolFailure", - "RICcontrolFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolFailure_tags_1, - sizeof(asn_DEF_RICcontrolFailure_tags_1) - /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolFailure_tags_1) - /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolFailure_1, - 1, /* Elements count */ - &asn_SPC_RICcontrolFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolFailure.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolFailure.h deleted file mode 100644 index 919f11c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICcontrolFailure_H_ -#define _RICcontrolFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolFailure */ -typedef struct RICcontrolFailure { - ProtocolIE_Container_1527P9_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolHeader.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolHeader.c deleted file mode 100644 index 2b0400b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolHeader.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICcontrolHeader.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcontrolHeader_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader = { - "RICcontrolHeader", - "RICcontrolHeader", - &asn_OP_OCTET_STRING, - asn_DEF_RICcontrolHeader_tags_1, - sizeof(asn_DEF_RICcontrolHeader_tags_1) - /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolHeader_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolHeader_tags_1) - /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolHeader.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolHeader.h deleted file mode 100644 index f26977c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolHeader.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICcontrolHeader_H_ -#define _RICcontrolHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolHeader */ -typedef OCTET_STRING_t RICcontrolHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader; -asn_struct_free_f RICcontrolHeader_free; -asn_struct_print_f RICcontrolHeader_print; -asn_constr_check_f RICcontrolHeader_constraint; -ber_type_decoder_f RICcontrolHeader_decode_ber; -der_type_encoder_f RICcontrolHeader_encode_der; -xer_type_decoder_f RICcontrolHeader_decode_xer; -xer_type_encoder_f RICcontrolHeader_encode_xer; -per_type_decoder_f RICcontrolHeader_decode_uper; -per_type_encoder_f RICcontrolHeader_encode_uper; -per_type_decoder_f RICcontrolHeader_decode_aper; -per_type_encoder_f RICcontrolHeader_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolHeader_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolMessage.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolMessage.c deleted file mode 100644 index f3df4b1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolMessage.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICcontrolMessage.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcontrolMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage = { - "RICcontrolMessage", - "RICcontrolMessage", - &asn_OP_OCTET_STRING, - asn_DEF_RICcontrolMessage_tags_1, - sizeof(asn_DEF_RICcontrolMessage_tags_1) - /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolMessage_tags_1) - /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolMessage.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolMessage.h deleted file mode 100644 index 5cc6cc3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolMessage.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICcontrolMessage_H_ -#define _RICcontrolMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolMessage */ -typedef OCTET_STRING_t RICcontrolMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage; -asn_struct_free_f RICcontrolMessage_free; -asn_struct_print_f RICcontrolMessage_print; -asn_constr_check_f RICcontrolMessage_constraint; -ber_type_decoder_f RICcontrolMessage_decode_ber; -der_type_encoder_f RICcontrolMessage_encode_der; -xer_type_decoder_f RICcontrolMessage_decode_xer; -xer_type_encoder_f RICcontrolMessage_encode_xer; -per_type_decoder_f RICcontrolMessage_decode_uper; -per_type_encoder_f RICcontrolMessage_encode_uper; -per_type_decoder_f RICcontrolMessage_decode_aper; -per_type_encoder_f RICcontrolMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolOutcome.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolOutcome.c deleted file mode 100644 index c40874d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolOutcome.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICcontrolOutcome.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcontrolOutcome_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome = { - "RICcontrolOutcome", - "RICcontrolOutcome", - &asn_OP_OCTET_STRING, - asn_DEF_RICcontrolOutcome_tags_1, - sizeof(asn_DEF_RICcontrolOutcome_tags_1) - /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolOutcome_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolOutcome_tags_1) - /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolOutcome.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolOutcome.h deleted file mode 100644 index 94481fc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolOutcome.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICcontrolOutcome_H_ -#define _RICcontrolOutcome_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolOutcome */ -typedef OCTET_STRING_t RICcontrolOutcome_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome; -asn_struct_free_f RICcontrolOutcome_free; -asn_struct_print_f RICcontrolOutcome_print; -asn_constr_check_f RICcontrolOutcome_constraint; -ber_type_decoder_f RICcontrolOutcome_decode_ber; -der_type_encoder_f RICcontrolOutcome_encode_der; -xer_type_decoder_f RICcontrolOutcome_decode_xer; -xer_type_encoder_f RICcontrolOutcome_encode_xer; -per_type_decoder_f RICcontrolOutcome_decode_uper; -per_type_encoder_f RICcontrolOutcome_encode_uper; -per_type_decoder_f RICcontrolOutcome_decode_aper; -per_type_encoder_f RICcontrolOutcome_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolOutcome_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolRequest.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolRequest.c deleted file mode 100644 index 2b54af3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICcontrolRequest.h" - -asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P7, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1 = { - sizeof(struct RICcontrolRequest), - offsetof(struct RICcontrolRequest, _asn_ctx), - asn_MAP_RICcontrolRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest = { - "RICcontrolRequest", - "RICcontrolRequest", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolRequest_tags_1, - sizeof(asn_DEF_RICcontrolRequest_tags_1) - /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolRequest_tags_1) - /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolRequest_1, - 1, /* Elements count */ - &asn_SPC_RICcontrolRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolRequest.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolRequest.h deleted file mode 100644 index f35e61d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICcontrolRequest_H_ -#define _RICcontrolRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolRequest */ -typedef struct RICcontrolRequest { - ProtocolIE_Container_1527P7_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolStatus.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolStatus.c deleted file mode 100644 index 8dc0c58..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolStatus.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICcontrolStatus.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_RICcontrolStatus_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolStatus_value2enum_1[] = { - { 0, 7, "success" }, - { 1, 8, "rejected" }, - { 2, 6, "failed" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICcontrolStatus_enum2value_1[] = { - 2, /* failed(2) */ - 1, /* rejected(1) */ - 0 /* success(0) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_RICcontrolStatus_specs_1 = { - asn_MAP_RICcontrolStatus_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICcontrolStatus_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolStatus_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus = { - "RICcontrolStatus", - "RICcontrolStatus", - &asn_OP_NativeEnumerated, - asn_DEF_RICcontrolStatus_tags_1, - sizeof(asn_DEF_RICcontrolStatus_tags_1) - /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolStatus_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolStatus_tags_1) - /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICcontrolStatus_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICcontrolStatus_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolStatus.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolStatus.h deleted file mode 100644 index 627ebaa..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICcontrolStatus.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICcontrolStatus_H_ -#define _RICcontrolStatus_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICcontrolStatus { - RICcontrolStatus_success = 0, - RICcontrolStatus_rejected = 1, - RICcontrolStatus_failed = 2 - /* - * Enumeration is extensible - */ -} e_RICcontrolStatus; - -/* RICcontrolStatus */ -typedef long RICcontrolStatus_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus; -asn_struct_free_f RICcontrolStatus_free; -asn_struct_print_f RICcontrolStatus_print; -asn_constr_check_f RICcontrolStatus_constraint; -ber_type_decoder_f RICcontrolStatus_decode_ber; -der_type_encoder_f RICcontrolStatus_encode_der; -xer_type_decoder_f RICcontrolStatus_decode_xer; -xer_type_encoder_f RICcontrolStatus_encode_xer; -per_type_decoder_f RICcontrolStatus_decode_uper; -per_type_encoder_f RICcontrolStatus_encode_uper; -per_type_decoder_f RICcontrolStatus_decode_aper; -per_type_encoder_f RICcontrolStatus_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolStatus_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICeventTriggerDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICeventTriggerDefinition.c deleted file mode 100644 index 4c892e0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICeventTriggerDefinition.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICeventTriggerDefinition.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICeventTriggerDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition = { - "RICeventTriggerDefinition", - "RICeventTriggerDefinition", - &asn_OP_OCTET_STRING, - asn_DEF_RICeventTriggerDefinition_tags_1, - sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) - /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ - asn_DEF_RICeventTriggerDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) - /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICeventTriggerDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICeventTriggerDefinition.h deleted file mode 100644 index f323980..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICeventTriggerDefinition.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICeventTriggerDefinition_H_ -#define _RICeventTriggerDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICeventTriggerDefinition */ -typedef OCTET_STRING_t RICeventTriggerDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition; -asn_struct_free_f RICeventTriggerDefinition_free; -asn_struct_print_f RICeventTriggerDefinition_print; -asn_constr_check_f RICeventTriggerDefinition_constraint; -ber_type_decoder_f RICeventTriggerDefinition_decode_ber; -der_type_encoder_f RICeventTriggerDefinition_encode_der; -xer_type_decoder_f RICeventTriggerDefinition_decode_xer; -xer_type_encoder_f RICeventTriggerDefinition_encode_xer; -per_type_decoder_f RICeventTriggerDefinition_decode_uper; -per_type_encoder_f RICeventTriggerDefinition_encode_uper; -per_type_decoder_f RICeventTriggerDefinition_decode_aper; -per_type_encoder_f RICeventTriggerDefinition_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICeventTriggerDefinition_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.c deleted file mode 100644 index be2a72a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICindication.h" - -asn_TYPE_member_t asn_MBR_RICindication_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICindication, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P6, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICindication_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICindication_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1 = { - sizeof(struct RICindication), - offsetof(struct RICindication, _asn_ctx), - asn_MAP_RICindication_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICindication = { - "RICindication", - "RICindication", - &asn_OP_SEQUENCE, - asn_DEF_RICindication_tags_1, - sizeof(asn_DEF_RICindication_tags_1) - /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ - asn_DEF_RICindication_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindication_tags_1) - /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICindication_1, - 1, /* Elements count */ - &asn_SPC_RICindication_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.h deleted file mode 100644 index 8a8173d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindication.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICindication_H_ -#define _RICindication_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindication */ -typedef struct RICindication { - ProtocolIE_Container_1527P6_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICindication_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindication; -extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1; -extern asn_TYPE_member_t asn_MBR_RICindication_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindication_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationHeader.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationHeader.c deleted file mode 100644 index 31e2f7f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationHeader.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICindicationHeader.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICindicationHeader_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationHeader = { - "RICindicationHeader", - "RICindicationHeader", - &asn_OP_OCTET_STRING, - asn_DEF_RICindicationHeader_tags_1, - sizeof(asn_DEF_RICindicationHeader_tags_1) - /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ - asn_DEF_RICindicationHeader_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationHeader_tags_1) - /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationHeader.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationHeader.h deleted file mode 100644 index 0d1448d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationHeader.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICindicationHeader_H_ -#define _RICindicationHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindicationHeader */ -typedef OCTET_STRING_t RICindicationHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationHeader; -asn_struct_free_f RICindicationHeader_free; -asn_struct_print_f RICindicationHeader_print; -asn_constr_check_f RICindicationHeader_constraint; -ber_type_decoder_f RICindicationHeader_decode_ber; -der_type_encoder_f RICindicationHeader_encode_der; -xer_type_decoder_f RICindicationHeader_decode_xer; -xer_type_encoder_f RICindicationHeader_encode_xer; -per_type_decoder_f RICindicationHeader_decode_uper; -per_type_encoder_f RICindicationHeader_encode_uper; -per_type_decoder_f RICindicationHeader_decode_aper; -per_type_encoder_f RICindicationHeader_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationHeader_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationMessage.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationMessage.c deleted file mode 100644 index 096f61d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationMessage.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICindicationMessage.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICindicationMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationMessage = { - "RICindicationMessage", - "RICindicationMessage", - &asn_OP_OCTET_STRING, - asn_DEF_RICindicationMessage_tags_1, - sizeof(asn_DEF_RICindicationMessage_tags_1) - /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ - asn_DEF_RICindicationMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationMessage_tags_1) - /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationMessage.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationMessage.h deleted file mode 100644 index 97ce63e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationMessage.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICindicationMessage_H_ -#define _RICindicationMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindicationMessage */ -typedef OCTET_STRING_t RICindicationMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationMessage; -asn_struct_free_f RICindicationMessage_free; -asn_struct_print_f RICindicationMessage_print; -asn_constr_check_f RICindicationMessage_constraint; -ber_type_decoder_f RICindicationMessage_decode_ber; -der_type_encoder_f RICindicationMessage_encode_der; -xer_type_decoder_f RICindicationMessage_decode_xer; -xer_type_encoder_f RICindicationMessage_encode_xer; -per_type_decoder_f RICindicationMessage_decode_uper; -per_type_encoder_f RICindicationMessage_encode_uper; -per_type_decoder_f RICindicationMessage_decode_aper; -per_type_encoder_f RICindicationMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.c deleted file mode 100644 index 74782d8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICindicationSN.h" - -int -RICindicationSN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_RICindicationSN_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RICindicationSN_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationSN = { - "RICindicationSN", - "RICindicationSN", - &asn_OP_NativeInteger, - asn_DEF_RICindicationSN_tags_1, - sizeof(asn_DEF_RICindicationSN_tags_1) - /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ - asn_DEF_RICindicationSN_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationSN_tags_1) - /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICindicationSN_constr_1, RICindicationSN_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.h deleted file mode 100644 index 30d8c55..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationSN.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICindicationSN_H_ -#define _RICindicationSN_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindicationSN */ -typedef long RICindicationSN_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationSN; -asn_struct_free_f RICindicationSN_free; -asn_struct_print_f RICindicationSN_print; -asn_constr_check_f RICindicationSN_constraint; -ber_type_decoder_f RICindicationSN_decode_ber; -der_type_encoder_f RICindicationSN_encode_der; -xer_type_decoder_f RICindicationSN_decode_xer; -xer_type_encoder_f RICindicationSN_encode_xer; -per_type_decoder_f RICindicationSN_decode_uper; -per_type_encoder_f RICindicationSN_encode_uper; -per_type_decoder_f RICindicationSN_decode_aper; -per_type_encoder_f RICindicationSN_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationSN_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationType.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationType.c deleted file mode 100644 index 81beabe..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationType.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICindicationType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_RICindicationType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICindicationType_value2enum_1[] = { - { 0, 6, "report" }, - { 1, 6, "insert" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICindicationType_enum2value_1[] = { - 1, /* insert(1) */ - 0 /* report(0) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_RICindicationType_specs_1 = { - asn_MAP_RICindicationType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICindicationType_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICindicationType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationType = { - "RICindicationType", - "RICindicationType", - &asn_OP_NativeEnumerated, - asn_DEF_RICindicationType_tags_1, - sizeof(asn_DEF_RICindicationType_tags_1) - /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ - asn_DEF_RICindicationType_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationType_tags_1) - /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICindicationType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICindicationType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationType.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationType.h deleted file mode 100644 index ae14d7a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICindicationType.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICindicationType_H_ -#define _RICindicationType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICindicationType { - RICindicationType_report = 0, - RICindicationType_insert = 1 - /* - * Enumeration is extensible - */ -} e_RICindicationType; - -/* RICindicationType */ -typedef long RICindicationType_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationType; -asn_struct_free_f RICindicationType_free; -asn_struct_print_f RICindicationType_print; -asn_constr_check_f RICindicationType_constraint; -ber_type_decoder_f RICindicationType_decode_ber; -der_type_encoder_f RICindicationType_encode_der; -xer_type_decoder_f RICindicationType_decode_xer; -xer_type_encoder_f RICindicationType_encode_xer; -per_type_decoder_f RICindicationType_decode_uper; -per_type_encoder_f RICindicationType_encode_uper; -per_type_decoder_f RICindicationType_decode_aper; -per_type_encoder_f RICindicationType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.c deleted file mode 100644 index dfe67b5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICrequestID.h" - -static int -memb_ricRequestorID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ricInstanceID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_ricRequestorID_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_ricInstanceID_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_RICrequestID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestorID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, &asn_PER_memb_ricRequestorID_constr_2, memb_ricRequestorID_constraint_1 }, - 0, 0, /* No default value */ - "ricRequestorID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricInstanceID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, &asn_PER_memb_ricInstanceID_constr_3, memb_ricInstanceID_constraint_1 }, - 0, 0, /* No default value */ - "ricInstanceID" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICrequestID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICrequestID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestorID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricInstanceID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1 = { - sizeof(struct RICrequestID), - offsetof(struct RICrequestID, _asn_ctx), - asn_MAP_RICrequestID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICrequestID = { - "RICrequestID", - "RICrequestID", - &asn_OP_SEQUENCE, - asn_DEF_RICrequestID_tags_1, - sizeof(asn_DEF_RICrequestID_tags_1) - /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ - asn_DEF_RICrequestID_tags_1, /* Same as above */ - sizeof(asn_DEF_RICrequestID_tags_1) - /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICrequestID_1, - 2, /* Elements count */ - &asn_SPC_RICrequestID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.h deleted file mode 100644 index 24636d4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICrequestID.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICrequestID_H_ -#define _RICrequestID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICrequestID */ -typedef struct RICrequestID { - long ricRequestorID; - long ricInstanceID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICrequestID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICrequestID; -extern asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1; -extern asn_TYPE_member_t asn_MBR_RICrequestID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICrequestID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.c deleted file mode 100644 index a2c83c8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICserviceQuery.h" - -asn_TYPE_member_t asn_MBR_RICserviceQuery_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P19, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceQuery_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1 = { - sizeof(struct RICserviceQuery), - offsetof(struct RICserviceQuery, _asn_ctx), - asn_MAP_RICserviceQuery_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceQuery = { - "RICserviceQuery", - "RICserviceQuery", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceQuery_tags_1, - sizeof(asn_DEF_RICserviceQuery_tags_1) - /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ - asn_DEF_RICserviceQuery_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceQuery_tags_1) - /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceQuery_1, - 1, /* Elements count */ - &asn_SPC_RICserviceQuery_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.h deleted file mode 100644 index 7db0a4f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceQuery.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICserviceQuery_H_ -#define _RICserviceQuery_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceQuery */ -typedef struct RICserviceQuery { - ProtocolIE_Container_1527P19_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceQuery_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceQuery_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceQuery_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdate.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdate.c deleted file mode 100644 index 8ec4465..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdate.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICserviceUpdate.h" - -asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P16, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1 = { - sizeof(struct RICserviceUpdate), - offsetof(struct RICserviceUpdate, _asn_ctx), - asn_MAP_RICserviceUpdate_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate = { - "RICserviceUpdate", - "RICserviceUpdate", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdate_tags_1, - sizeof(asn_DEF_RICserviceUpdate_tags_1) - /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ - asn_DEF_RICserviceUpdate_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdate_tags_1) - /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdate_1, - 1, /* Elements count */ - &asn_SPC_RICserviceUpdate_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdate.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdate.h deleted file mode 100644 index f9353cb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdate.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICserviceUpdate_H_ -#define _RICserviceUpdate_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceUpdate */ -typedef struct RICserviceUpdate { - ProtocolIE_Container_1527P16_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdate_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceUpdate_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.c deleted file mode 100644 index fe21337..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICserviceUpdateAcknowledge.h" - -asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P17, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1 = { - sizeof(struct RICserviceUpdateAcknowledge), - offsetof(struct RICserviceUpdateAcknowledge, _asn_ctx), - asn_MAP_RICserviceUpdateAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge = { - "RICserviceUpdateAcknowledge", - "RICserviceUpdateAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateAcknowledge_tags_1, - sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_RICserviceUpdateAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_RICserviceUpdateAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.h deleted file mode 100644 index ec27597..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICserviceUpdateAcknowledge_H_ -#define _RICserviceUpdateAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceUpdateAcknowledge */ -typedef struct RICserviceUpdateAcknowledge { - ProtocolIE_Container_1527P17_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceUpdateAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateFailure.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateFailure.c deleted file mode 100644 index 61334b4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICserviceUpdateFailure.h" - -asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P18, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1 = { - sizeof(struct RICserviceUpdateFailure), - offsetof(struct RICserviceUpdateFailure, _asn_ctx), - asn_MAP_RICserviceUpdateFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure = { - "RICserviceUpdateFailure", - "RICserviceUpdateFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateFailure_tags_1, - sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) - /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ - asn_DEF_RICserviceUpdateFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) - /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateFailure_1, - 1, /* Elements count */ - &asn_SPC_RICserviceUpdateFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateFailure.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateFailure.h deleted file mode 100644 index 71e1e62..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICserviceUpdateFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICserviceUpdateFailure_H_ -#define _RICserviceUpdateFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceUpdateFailure */ -typedef struct RICserviceUpdateFailure { - ProtocolIE_Container_1527P18_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceUpdateFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.c deleted file mode 100644 index 04b54c7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICsubscriptionDeleteFailure.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P5, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1 = { - sizeof(struct RICsubscriptionDeleteFailure), - offsetof(struct RICsubscriptionDeleteFailure, _asn_ctx), - asn_MAP_RICsubscriptionDeleteFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure = { - "RICsubscriptionDeleteFailure", - "RICsubscriptionDeleteFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteFailure_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteFailure_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.h deleted file mode 100644 index 1560efb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICsubscriptionDeleteFailure_H_ -#define _RICsubscriptionDeleteFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteFailure */ -typedef struct RICsubscriptionDeleteFailure { - ProtocolIE_Container_1527P5_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.c deleted file mode 100644 index 4ff78c6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICsubscriptionDeleteRequest.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1 = { - sizeof(struct RICsubscriptionDeleteRequest), - offsetof(struct RICsubscriptionDeleteRequest, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest = { - "RICsubscriptionDeleteRequest", - "RICsubscriptionDeleteRequest", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequest_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequest_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.h deleted file mode 100644 index f25c782..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICsubscriptionDeleteRequest_H_ -#define _RICsubscriptionDeleteRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteRequest */ -typedef struct RICsubscriptionDeleteRequest { - ProtocolIE_Container_1527P3_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.c deleted file mode 100644 index 70a20c7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICsubscriptionDeleteResponse.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P4, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1 = { - sizeof(struct RICsubscriptionDeleteResponse), - offsetof(struct RICsubscriptionDeleteResponse, _asn_ctx), - asn_MAP_RICsubscriptionDeleteResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse = { - "RICsubscriptionDeleteResponse", - "RICsubscriptionDeleteResponse", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteResponse_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteResponse_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.h deleted file mode 100644 index 9b93735..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDeleteResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICsubscriptionDeleteResponse_H_ -#define _RICsubscriptionDeleteResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteResponse */ -typedef struct RICsubscriptionDeleteResponse { - ProtocolIE_Container_1527P4_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDetails.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDetails.c deleted file mode 100644 index 39475fd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDetails.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICsubscriptionDetails.h" - -static asn_TYPE_member_t asn_MBR_RICsubscriptionDetails_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricEventTriggerDefinition), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICeventTriggerDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricEventTriggerDefinition" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricAction_ToBeSetup_List), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactions_ToBeSetup_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricAction-ToBeSetup-List" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDetails_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDetails_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricEventTriggerDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricAction-ToBeSetup-List */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDetails_specs_1 = { - sizeof(struct RICsubscriptionDetails), - offsetof(struct RICsubscriptionDetails, _asn_ctx), - asn_MAP_RICsubscriptionDetails_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails = { - "RICsubscriptionDetails", - "RICsubscriptionDetails", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDetails_tags_1, - sizeof(asn_DEF_RICsubscriptionDetails_tags_1) - /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDetails_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDetails_tags_1) - /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDetails_1, - 2, /* Elements count */ - &asn_SPC_RICsubscriptionDetails_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDetails.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDetails.h deleted file mode 100644 index cd5b0f8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionDetails.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICsubscriptionDetails_H_ -#define _RICsubscriptionDetails_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICeventTriggerDefinition.h" -#include "RICactions-ToBeSetup-List.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDetails */ -typedef struct RICsubscriptionDetails { - RICeventTriggerDefinition_t ricEventTriggerDefinition; - RICactions_ToBeSetup_List_t ricAction_ToBeSetup_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDetails_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDetails_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionFailure.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionFailure.c deleted file mode 100644 index f0a7a43..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICsubscriptionFailure.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1 = { - sizeof(struct RICsubscriptionFailure), - offsetof(struct RICsubscriptionFailure, _asn_ctx), - asn_MAP_RICsubscriptionFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure = { - "RICsubscriptionFailure", - "RICsubscriptionFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionFailure_tags_1, - sizeof(asn_DEF_RICsubscriptionFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionFailure_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionFailure.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionFailure.h deleted file mode 100644 index fb43397..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICsubscriptionFailure_H_ -#define _RICsubscriptionFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionFailure */ -typedef struct RICsubscriptionFailure { - ProtocolIE_Container_1527P2_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionRequest.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionRequest.c deleted file mode 100644 index dcc451e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICsubscriptionRequest.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P0, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1 = { - sizeof(struct RICsubscriptionRequest), - offsetof(struct RICsubscriptionRequest, _asn_ctx), - asn_MAP_RICsubscriptionRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest = { - "RICsubscriptionRequest", - "RICsubscriptionRequest", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionRequest_tags_1, - sizeof(asn_DEF_RICsubscriptionRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionRequest_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionRequest.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionRequest.h deleted file mode 100644 index d6ed804..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICsubscriptionRequest_H_ -#define _RICsubscriptionRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionRequest */ -typedef struct RICsubscriptionRequest { - ProtocolIE_Container_1527P0_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionResponse.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionResponse.c deleted file mode 100644 index 836322b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICsubscriptionResponse.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1 = { - sizeof(struct RICsubscriptionResponse), - offsetof(struct RICsubscriptionResponse, _asn_ctx), - asn_MAP_RICsubscriptionResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse = { - "RICsubscriptionResponse", - "RICsubscriptionResponse", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionResponse_tags_1, - sizeof(asn_DEF_RICsubscriptionResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionResponse_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionResponse.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionResponse.h deleted file mode 100644 index 64e2e45..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubscriptionResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICsubscriptionResponse_H_ -#define _RICsubscriptionResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionResponse */ -typedef struct RICsubscriptionResponse { - ProtocolIE_Container_1527P1_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentAction.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentAction.c deleted file mode 100644 index 1008fb1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentAction.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICsubsequentAction.h" - -asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricSubsequentActionType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICsubsequentActionType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricSubsequentActionType" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricTimeToWait), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICtimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricTimeToWait" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubsequentAction_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubsequentAction_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricSubsequentActionType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricTimeToWait */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1 = { - sizeof(struct RICsubsequentAction), - offsetof(struct RICsubsequentAction, _asn_ctx), - asn_MAP_RICsubsequentAction_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction = { - "RICsubsequentAction", - "RICsubsequentAction", - &asn_OP_SEQUENCE, - asn_DEF_RICsubsequentAction_tags_1, - sizeof(asn_DEF_RICsubsequentAction_tags_1) - /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ - asn_DEF_RICsubsequentAction_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubsequentAction_tags_1) - /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubsequentAction_1, - 2, /* Elements count */ - &asn_SPC_RICsubsequentAction_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentAction.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentAction.h deleted file mode 100644 index dae24c8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentAction.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICsubsequentAction_H_ -#define _RICsubsequentAction_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICsubsequentActionType.h" -#include "RICtimeToWait.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubsequentAction */ -typedef struct RICsubsequentAction { - RICsubsequentActionType_t ricSubsequentActionType; - RICtimeToWait_t ricTimeToWait; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubsequentAction_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubsequentAction_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentActionType.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentActionType.c deleted file mode 100644 index c622986..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentActionType.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICsubsequentActionType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICsubsequentActionType_value2enum_1[] = { - { 0, 8, "continue" }, - { 1, 4, "wait" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICsubsequentActionType_enum2value_1[] = { - 0, /* continue(0) */ - 1 /* wait(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1 = { - asn_MAP_RICsubsequentActionType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICsubsequentActionType_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICsubsequentActionType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType = { - "RICsubsequentActionType", - "RICsubsequentActionType", - &asn_OP_NativeEnumerated, - asn_DEF_RICsubsequentActionType_tags_1, - sizeof(asn_DEF_RICsubsequentActionType_tags_1) - /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ - asn_DEF_RICsubsequentActionType_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubsequentActionType_tags_1) - /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICsubsequentActionType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICsubsequentActionType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentActionType.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentActionType.h deleted file mode 100644 index 18f61c7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICsubsequentActionType.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICsubsequentActionType_H_ -#define _RICsubsequentActionType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICsubsequentActionType { - RICsubsequentActionType_continue = 0, - RICsubsequentActionType_wait = 1 - /* - * Enumeration is extensible - */ -} e_RICsubsequentActionType; - -/* RICsubsequentActionType */ -typedef long RICsubsequentActionType_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType; -extern const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1; -asn_struct_free_f RICsubsequentActionType_free; -asn_struct_print_f RICsubsequentActionType_print; -asn_constr_check_f RICsubsequentActionType_constraint; -ber_type_decoder_f RICsubsequentActionType_decode_ber; -der_type_encoder_f RICsubsequentActionType_encode_der; -xer_type_decoder_f RICsubsequentActionType_decode_xer; -xer_type_encoder_f RICsubsequentActionType_encode_xer; -per_type_decoder_f RICsubsequentActionType_decode_uper; -per_type_encoder_f RICsubsequentActionType_encode_uper; -per_type_decoder_f RICsubsequentActionType_decode_aper; -per_type_encoder_f RICsubsequentActionType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubsequentActionType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.c deleted file mode 100644 index 159b5e3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "RICtimeToWait.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 17 } /* (0..17,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICtimeToWait_value2enum_1[] = { - { 0, 4, "zero" }, - { 1, 4, "w1ms" }, - { 2, 4, "w2ms" }, - { 3, 4, "w5ms" }, - { 4, 5, "w10ms" }, - { 5, 5, "w20ms" }, - { 6, 5, "w30ms" }, - { 7, 5, "w40ms" }, - { 8, 5, "w50ms" }, - { 9, 6, "w100ms" }, - { 10, 6, "w200ms" }, - { 11, 6, "w500ms" }, - { 12, 3, "w1s" }, - { 13, 3, "w2s" }, - { 14, 3, "w5s" }, - { 15, 4, "w10s" }, - { 16, 4, "w20s" }, - { 17, 4, "w60s" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICtimeToWait_enum2value_1[] = { - 9, /* w100ms(9) */ - 4, /* w10ms(4) */ - 15, /* w10s(15) */ - 1, /* w1ms(1) */ - 12, /* w1s(12) */ - 10, /* w200ms(10) */ - 5, /* w20ms(5) */ - 16, /* w20s(16) */ - 2, /* w2ms(2) */ - 13, /* w2s(13) */ - 6, /* w30ms(6) */ - 7, /* w40ms(7) */ - 11, /* w500ms(11) */ - 8, /* w50ms(8) */ - 3, /* w5ms(3) */ - 14, /* w5s(14) */ - 17, /* w60s(17) */ - 0 /* zero(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1 = { - asn_MAP_RICtimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICtimeToWait_enum2value_1, /* N => "tag"; sorted by N */ - 18, /* Number of elements in the maps */ - 19, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICtimeToWait_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICtimeToWait = { - "RICtimeToWait", - "RICtimeToWait", - &asn_OP_NativeEnumerated, - asn_DEF_RICtimeToWait_tags_1, - sizeof(asn_DEF_RICtimeToWait_tags_1) - /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ - asn_DEF_RICtimeToWait_tags_1, /* Same as above */ - sizeof(asn_DEF_RICtimeToWait_tags_1) - /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICtimeToWait_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICtimeToWait_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.h deleted file mode 100644 index 6bd2096..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RICtimeToWait.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _RICtimeToWait_H_ -#define _RICtimeToWait_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICtimeToWait { - RICtimeToWait_zero = 0, - RICtimeToWait_w1ms = 1, - RICtimeToWait_w2ms = 2, - RICtimeToWait_w5ms = 3, - RICtimeToWait_w10ms = 4, - RICtimeToWait_w20ms = 5, - RICtimeToWait_w30ms = 6, - RICtimeToWait_w40ms = 7, - RICtimeToWait_w50ms = 8, - RICtimeToWait_w100ms = 9, - RICtimeToWait_w200ms = 10, - RICtimeToWait_w500ms = 11, - RICtimeToWait_w1s = 12, - RICtimeToWait_w2s = 13, - RICtimeToWait_w5s = 14, - RICtimeToWait_w10s = 15, - RICtimeToWait_w20s = 16, - RICtimeToWait_w60s = 17 - /* - * Enumeration is extensible - */ -} e_RICtimeToWait; - -/* RICtimeToWait */ -typedef long RICtimeToWait_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICtimeToWait; -extern const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1; -asn_struct_free_f RICtimeToWait_free; -asn_struct_print_f RICtimeToWait_print; -asn_constr_check_f RICtimeToWait_constraint; -ber_type_decoder_f RICtimeToWait_decode_ber; -der_type_encoder_f RICtimeToWait_encode_der; -xer_type_decoder_f RICtimeToWait_decode_xer; -xer_type_encoder_f RICtimeToWait_encode_xer; -per_type_decoder_f RICtimeToWait_decode_uper; -per_type_encoder_f RICtimeToWait_encode_uper; -per_type_decoder_f RICtimeToWait_decode_aper; -per_type_encoder_f RICtimeToWait_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICtimeToWait_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.c deleted file mode 100644 index 5f99297..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RT-Period-IE.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RT_Period_IE_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_RT_Period_IE_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 19 } /* (0..19,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RT_Period_IE_value2enum_1[] = { - { 0, 4, "ms10" }, - { 1, 4, "ms20" }, - { 2, 4, "ms32" }, - { 3, 4, "ms40" }, - { 4, 4, "ms60" }, - { 5, 4, "ms64" }, - { 6, 4, "ms70" }, - { 7, 4, "ms80" }, - { 8, 5, "ms128" }, - { 9, 5, "ms160" }, - { 10, 5, "ms256" }, - { 11, 5, "ms320" }, - { 12, 5, "ms512" }, - { 13, 5, "ms640" }, - { 14, 6, "ms1024" }, - { 15, 6, "ms1280" }, - { 16, 6, "ms2048" }, - { 17, 6, "ms2560" }, - { 18, 6, "ms5120" }, - { 19, 7, "ms10240" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RT_Period_IE_enum2value_1[] = { - 0, /* ms10(0) */ - 14, /* ms1024(14) */ - 19, /* ms10240(19) */ - 8, /* ms128(8) */ - 15, /* ms1280(15) */ - 9, /* ms160(9) */ - 1, /* ms20(1) */ - 16, /* ms2048(16) */ - 10, /* ms256(10) */ - 17, /* ms2560(17) */ - 2, /* ms32(2) */ - 11, /* ms320(11) */ - 3, /* ms40(3) */ - 12, /* ms512(12) */ - 18, /* ms5120(18) */ - 4, /* ms60(4) */ - 5, /* ms64(5) */ - 13, /* ms640(13) */ - 6, /* ms70(6) */ - 7 /* ms80(7) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RT_Period_IE_specs_1 = { - asn_MAP_RT_Period_IE_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RT_Period_IE_enum2value_1, /* N => "tag"; sorted by N */ - 20, /* Number of elements in the maps */ - 21, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RT_Period_IE_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RT_Period_IE = { - "RT-Period-IE", - "RT-Period-IE", - &asn_OP_NativeEnumerated, - asn_DEF_RT_Period_IE_tags_1, - sizeof(asn_DEF_RT_Period_IE_tags_1) - /sizeof(asn_DEF_RT_Period_IE_tags_1[0]), /* 1 */ - asn_DEF_RT_Period_IE_tags_1, /* Same as above */ - sizeof(asn_DEF_RT_Period_IE_tags_1) - /sizeof(asn_DEF_RT_Period_IE_tags_1[0]), /* 1 */ - { &asn_OER_type_RT_Period_IE_constr_1, &asn_PER_type_RT_Period_IE_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RT_Period_IE_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.h deleted file mode 100644 index 30d2843..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/RT-Period-IE.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RT_Period_IE_H_ -#define _RT_Period_IE_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RT_Period_IE { - RT_Period_IE_ms10 = 0, - RT_Period_IE_ms20 = 1, - RT_Period_IE_ms32 = 2, - RT_Period_IE_ms40 = 3, - RT_Period_IE_ms60 = 4, - RT_Period_IE_ms64 = 5, - RT_Period_IE_ms70 = 6, - RT_Period_IE_ms80 = 7, - RT_Period_IE_ms128 = 8, - RT_Period_IE_ms160 = 9, - RT_Period_IE_ms256 = 10, - RT_Period_IE_ms320 = 11, - RT_Period_IE_ms512 = 12, - RT_Period_IE_ms640 = 13, - RT_Period_IE_ms1024 = 14, - RT_Period_IE_ms1280 = 15, - RT_Period_IE_ms2048 = 16, - RT_Period_IE_ms2560 = 17, - RT_Period_IE_ms5120 = 18, - RT_Period_IE_ms10240 = 19 - /* - * Enumeration is extensible - */ -} e_RT_Period_IE; - -/* RT-Period-IE */ -typedef long RT_Period_IE_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RT_Period_IE_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RT_Period_IE; -extern const asn_INTEGER_specifics_t asn_SPC_RT_Period_IE_specs_1; -asn_struct_free_f RT_Period_IE_free; -asn_struct_print_f RT_Period_IE_print; -asn_constr_check_f RT_Period_IE_constraint; -ber_type_decoder_f RT_Period_IE_decode_ber; -der_type_encoder_f RT_Period_IE_encode_der; -xer_type_decoder_f RT_Period_IE_decode_xer; -xer_type_encoder_f RT_Period_IE_encode_xer; -oer_type_decoder_f RT_Period_IE_decode_oer; -oer_type_encoder_f RT_Period_IE_encode_oer; -per_type_decoder_f RT_Period_IE_decode_uper; -per_type_encoder_f RT_Period_IE_encode_uper; -per_type_decoder_f RT_Period_IE_decode_aper; -per_type_encoder_f RT_Period_IE_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RT_Period_IE_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.c deleted file mode 100644 index 3f96a6d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ResetRequest.h" - -asn_TYPE_member_t asn_MBR_ResetRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P14, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1 = { - sizeof(struct ResetRequest), - offsetof(struct ResetRequest, _asn_ctx), - asn_MAP_ResetRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetRequest = { - "ResetRequest", - "ResetRequest", - &asn_OP_SEQUENCE, - asn_DEF_ResetRequest_tags_1, - sizeof(asn_DEF_ResetRequest_tags_1) - /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ - asn_DEF_ResetRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_ResetRequest_tags_1) - /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetRequest_1, - 1, /* Elements count */ - &asn_SPC_ResetRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.h deleted file mode 100644 index e7f6ec8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ResetRequest_H_ -#define _ResetRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ResetRequest */ -typedef struct ResetRequest { - ProtocolIE_Container_1527P14_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ResetRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_ResetRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ResetRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.c deleted file mode 100644 index c8afcc4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "ResetResponse.h" - -asn_TYPE_member_t asn_MBR_ResetResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1527P15, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1 = { - sizeof(struct ResetResponse), - offsetof(struct ResetResponse, _asn_ctx), - asn_MAP_ResetResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetResponse = { - "ResetResponse", - "ResetResponse", - &asn_OP_SEQUENCE, - asn_DEF_ResetResponse_tags_1, - sizeof(asn_DEF_ResetResponse_tags_1) - /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ - asn_DEF_ResetResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_ResetResponse_tags_1) - /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetResponse_1, - 1, /* Elements count */ - &asn_SPC_ResetResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.h deleted file mode 100644 index 08a576e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ResetResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _ResetResponse_H_ -#define _ResetResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ResetResponse */ -typedef struct ResetResponse { - ProtocolIE_Container_1527P15_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ResetResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_ResetResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ResetResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.c deleted file mode 100644 index 39afcad..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "SNSSAI.h" - -static int -memb_sST_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 1)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_sD_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 3)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_sST_constr_2 CC_NOTUSED = { - { 0, 0 }, - 1 /* (SIZE(1..1)) */}; -static asn_per_constraints_t asn_PER_memb_sST_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_sD_constr_3 CC_NOTUSED = { - { 0, 0 }, - 3 /* (SIZE(3..3)) */}; -static asn_per_constraints_t asn_PER_memb_sD_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_SNSSAI_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct SNSSAI, sST), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { &asn_OER_memb_sST_constr_2, &asn_PER_memb_sST_constr_2, memb_sST_constraint_1 }, - 0, 0, /* No default value */ - "sST" - }, - { ATF_POINTER, 1, offsetof(struct SNSSAI, sD), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { &asn_OER_memb_sD_constr_3, &asn_PER_memb_sD_constr_3, memb_sD_constraint_1 }, - 0, 0, /* No default value */ - "sD" - }, -}; -static const int asn_MAP_SNSSAI_oms_1[] = { 1 }; -static const ber_tlv_tag_t asn_DEF_SNSSAI_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_SNSSAI_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sST */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sD */ -}; -asn_SEQUENCE_specifics_t asn_SPC_SNSSAI_specs_1 = { - sizeof(struct SNSSAI), - offsetof(struct SNSSAI, _asn_ctx), - asn_MAP_SNSSAI_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_SNSSAI_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_SNSSAI = { - "SNSSAI", - "SNSSAI", - &asn_OP_SEQUENCE, - asn_DEF_SNSSAI_tags_1, - sizeof(asn_DEF_SNSSAI_tags_1) - /sizeof(asn_DEF_SNSSAI_tags_1[0]), /* 1 */ - asn_DEF_SNSSAI_tags_1, /* Same as above */ - sizeof(asn_DEF_SNSSAI_tags_1) - /sizeof(asn_DEF_SNSSAI_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_SNSSAI_1, - 2, /* Elements count */ - &asn_SPC_SNSSAI_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.h deleted file mode 100644 index b854e6f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SNSSAI.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _SNSSAI_H_ -#define _SNSSAI_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* SNSSAI */ -typedef struct SNSSAI { - OCTET_STRING_t sST; - OCTET_STRING_t *sD; /* OPTIONAL */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} SNSSAI_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_SNSSAI; -extern asn_SEQUENCE_specifics_t asn_SPC_SNSSAI_specs_1; -extern asn_TYPE_member_t asn_MBR_SNSSAI_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _SNSSAI_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.c deleted file mode 100644 index 52fbaf5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "ServedPlmnPerCellListItem.h" - -asn_TYPE_member_t asn_MBR_ServedPlmnPerCellListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ServedPlmnPerCellListItem, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_POINTER, 2, offsetof(struct ServedPlmnPerCellListItem, du_PM_5GC), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_FGC_DU_PM_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "du-PM-5GC" - }, - { ATF_POINTER, 1, offsetof(struct ServedPlmnPerCellListItem, du_PM_EPC), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_EPC_DU_PM_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "du-PM-EPC" - }, -}; -static const int asn_MAP_ServedPlmnPerCellListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_ServedPlmnPerCellListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ServedPlmnPerCellListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* du-PM-5GC */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* du-PM-EPC */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ServedPlmnPerCellListItem_specs_1 = { - sizeof(struct ServedPlmnPerCellListItem), - offsetof(struct ServedPlmnPerCellListItem, _asn_ctx), - asn_MAP_ServedPlmnPerCellListItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_ServedPlmnPerCellListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ServedPlmnPerCellListItem = { - "ServedPlmnPerCellListItem", - "ServedPlmnPerCellListItem", - &asn_OP_SEQUENCE, - asn_DEF_ServedPlmnPerCellListItem_tags_1, - sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1[0]), /* 1 */ - asn_DEF_ServedPlmnPerCellListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ServedPlmnPerCellListItem_1, - 3, /* Elements count */ - &asn_SPC_ServedPlmnPerCellListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.h deleted file mode 100644 index be5ecd6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ServedPlmnPerCellListItem.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _ServedPlmnPerCellListItem_H_ -#define _ServedPlmnPerCellListItem_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct FGC_DU_PM_Container; -struct EPC_DU_PM_Container; - -/* ServedPlmnPerCellListItem */ -typedef struct ServedPlmnPerCellListItem { - PLMN_Identity_t pLMN_Identity; - struct FGC_DU_PM_Container *du_PM_5GC; /* OPTIONAL */ - struct EPC_DU_PM_Container *du_PM_EPC; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ServedPlmnPerCellListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ServedPlmnPerCellListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_ServedPlmnPerCellListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_ServedPlmnPerCellListItem_1[3]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "FGC-DU-PM-Container.h" -#include "EPC-DU-PM-Container.h" - -#endif /* _ServedPlmnPerCellListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.c deleted file mode 100644 index a463803..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "SlicePerPlmnPerCellListItem.h" - -static int -memb_fQIPERSlicesPerPlmnPerCellList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 64)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..64)) */}; -static asn_per_constraints_t asn_PER_type_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 64 } /* (SIZE(1..64)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..64)) */}; -static asn_per_constraints_t asn_PER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 64 } /* (SIZE(1..64)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_fQIPERSlicesPerPlmnPerCellList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_FQIPERSlicesPerPlmnPerCellListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_fQIPERSlicesPerPlmnPerCellList_specs_3 = { - sizeof(struct SlicePerPlmnPerCellListItem__fQIPERSlicesPerPlmnPerCellList), - offsetof(struct SlicePerPlmnPerCellListItem__fQIPERSlicesPerPlmnPerCellList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_fQIPERSlicesPerPlmnPerCellList_3 = { - "fQIPERSlicesPerPlmnPerCellList", - "fQIPERSlicesPerPlmnPerCellList", - &asn_OP_SEQUENCE_OF, - asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3, - sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3) - /sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3[0]) - 1, /* 1 */ - asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3, /* Same as above */ - sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3) - /sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3[0]), /* 2 */ - { &asn_OER_type_fQIPERSlicesPerPlmnPerCellList_constr_3, &asn_PER_type_fQIPERSlicesPerPlmnPerCellList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_fQIPERSlicesPerPlmnPerCellList_3, - 1, /* Single element */ - &asn_SPC_fQIPERSlicesPerPlmnPerCellList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_SlicePerPlmnPerCellListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct SlicePerPlmnPerCellListItem, sliceID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SNSSAI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "sliceID" - }, - { ATF_NOFLAGS, 0, offsetof(struct SlicePerPlmnPerCellListItem, fQIPERSlicesPerPlmnPerCellList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_fQIPERSlicesPerPlmnPerCellList_3, - 0, - { &asn_OER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3, &asn_PER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3, memb_fQIPERSlicesPerPlmnPerCellList_constraint_1 }, - 0, 0, /* No default value */ - "fQIPERSlicesPerPlmnPerCellList" - }, -}; -static const ber_tlv_tag_t asn_DEF_SlicePerPlmnPerCellListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_SlicePerPlmnPerCellListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sliceID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fQIPERSlicesPerPlmnPerCellList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_SlicePerPlmnPerCellListItem_specs_1 = { - sizeof(struct SlicePerPlmnPerCellListItem), - offsetof(struct SlicePerPlmnPerCellListItem, _asn_ctx), - asn_MAP_SlicePerPlmnPerCellListItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_SlicePerPlmnPerCellListItem = { - "SlicePerPlmnPerCellListItem", - "SlicePerPlmnPerCellListItem", - &asn_OP_SEQUENCE, - asn_DEF_SlicePerPlmnPerCellListItem_tags_1, - sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1[0]), /* 1 */ - asn_DEF_SlicePerPlmnPerCellListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_SlicePerPlmnPerCellListItem_1, - 2, /* Elements count */ - &asn_SPC_SlicePerPlmnPerCellListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.h deleted file mode 100644 index 1d704d5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SlicePerPlmnPerCellListItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _SlicePerPlmnPerCellListItem_H_ -#define _SlicePerPlmnPerCellListItem_H_ - - -#include - -/* Including external dependencies */ -#include "SNSSAI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct FQIPERSlicesPerPlmnPerCellListItem; - -/* SlicePerPlmnPerCellListItem */ -typedef struct SlicePerPlmnPerCellListItem { - SNSSAI_t sliceID; - struct SlicePerPlmnPerCellListItem__fQIPERSlicesPerPlmnPerCellList { - A_SEQUENCE_OF(struct FQIPERSlicesPerPlmnPerCellListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } fQIPERSlicesPerPlmnPerCellList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} SlicePerPlmnPerCellListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_SlicePerPlmnPerCellListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_SlicePerPlmnPerCellListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_SlicePerPlmnPerCellListItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "FQIPERSlicesPerPlmnPerCellListItem.h" - -#endif /* _SlicePerPlmnPerCellListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SliceToReportListItem.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SliceToReportListItem.c deleted file mode 100644 index ae32ba9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SliceToReportListItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "SliceToReportListItem.h" - -static int -memb_fQIPERSlicesPerPlmnList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 64)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..64)) */}; -static asn_per_constraints_t asn_PER_type_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 64 } /* (SIZE(1..64)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..64)) */}; -static asn_per_constraints_t asn_PER_memb_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 64 } /* (SIZE(1..64)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_fQIPERSlicesPerPlmnList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_FQIPERSlicesPerPlmnListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_fQIPERSlicesPerPlmnList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_fQIPERSlicesPerPlmnList_specs_3 = { - sizeof(struct SliceToReportListItem__fQIPERSlicesPerPlmnList), - offsetof(struct SliceToReportListItem__fQIPERSlicesPerPlmnList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_fQIPERSlicesPerPlmnList_3 = { - "fQIPERSlicesPerPlmnList", - "fQIPERSlicesPerPlmnList", - &asn_OP_SEQUENCE_OF, - asn_DEF_fQIPERSlicesPerPlmnList_tags_3, - sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3) - /sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3[0]) - 1, /* 1 */ - asn_DEF_fQIPERSlicesPerPlmnList_tags_3, /* Same as above */ - sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3) - /sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3[0]), /* 2 */ - { &asn_OER_type_fQIPERSlicesPerPlmnList_constr_3, &asn_PER_type_fQIPERSlicesPerPlmnList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_fQIPERSlicesPerPlmnList_3, - 1, /* Single element */ - &asn_SPC_fQIPERSlicesPerPlmnList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_SliceToReportListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct SliceToReportListItem, sliceID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SNSSAI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "sliceID" - }, - { ATF_NOFLAGS, 0, offsetof(struct SliceToReportListItem, fQIPERSlicesPerPlmnList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_fQIPERSlicesPerPlmnList_3, - 0, - { &asn_OER_memb_fQIPERSlicesPerPlmnList_constr_3, &asn_PER_memb_fQIPERSlicesPerPlmnList_constr_3, memb_fQIPERSlicesPerPlmnList_constraint_1 }, - 0, 0, /* No default value */ - "fQIPERSlicesPerPlmnList" - }, -}; -static const ber_tlv_tag_t asn_DEF_SliceToReportListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_SliceToReportListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sliceID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fQIPERSlicesPerPlmnList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_SliceToReportListItem_specs_1 = { - sizeof(struct SliceToReportListItem), - offsetof(struct SliceToReportListItem, _asn_ctx), - asn_MAP_SliceToReportListItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_SliceToReportListItem = { - "SliceToReportListItem", - "SliceToReportListItem", - &asn_OP_SEQUENCE, - asn_DEF_SliceToReportListItem_tags_1, - sizeof(asn_DEF_SliceToReportListItem_tags_1) - /sizeof(asn_DEF_SliceToReportListItem_tags_1[0]), /* 1 */ - asn_DEF_SliceToReportListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_SliceToReportListItem_tags_1) - /sizeof(asn_DEF_SliceToReportListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_SliceToReportListItem_1, - 2, /* Elements count */ - &asn_SPC_SliceToReportListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SliceToReportListItem.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SliceToReportListItem.h deleted file mode 100644 index c25b20a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SliceToReportListItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _SliceToReportListItem_H_ -#define _SliceToReportListItem_H_ - - -#include - -/* Including external dependencies */ -#include "SNSSAI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct FQIPERSlicesPerPlmnListItem; - -/* SliceToReportListItem */ -typedef struct SliceToReportListItem { - SNSSAI_t sliceID; - struct SliceToReportListItem__fQIPERSlicesPerPlmnList { - A_SEQUENCE_OF(struct FQIPERSlicesPerPlmnListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } fQIPERSlicesPerPlmnList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} SliceToReportListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_SliceToReportListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_SliceToReportListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_SliceToReportListItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "FQIPERSlicesPerPlmnListItem.h" - -#endif /* _SliceToReportListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SuccessfulOutcome.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SuccessfulOutcome.c deleted file mode 100644 index 55bad07..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SuccessfulOutcome.c +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "SuccessfulOutcome.h" - -static const long asn_VAL_1_id_RICsubscription = 8; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_2_id_RICsubscriptionDelete = 9; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_3_id_RICserviceUpdate = 7; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_4_id_RICcontrol = 4; -static const long asn_VAL_4_reject = 0; -static const long asn_VAL_5_id_E2setup = 1; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_6_id_Reset = 3; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_7_id_RICindication = 5; -static const long asn_VAL_7_ignore = 1; -static const long asn_VAL_8_id_RICserviceQuery = 6; -static const long asn_VAL_8_ignore = 1; -static const long asn_VAL_9_id_ErrorIndication = 2; -static const long asn_VAL_9_ignore = 1; -static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_Reset }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICindication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_RICserviceQuery }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_ErrorIndication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore } -}; -static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { - { 9, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } -}; -static int -memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_SuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 4; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_SuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 1; /* &SuccessfulOutcome */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionResponse" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionDeleteResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteResponse" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICserviceUpdateAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceUpdateAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICcontrolAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2setupResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2setupResponse" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResetResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ResetResponse" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 5 }, /* RICsubscriptionResponse */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 4 }, /* RICsubscriptionDeleteResponse */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 3 }, /* RICserviceUpdateAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 2 }, /* RICcontrolAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 1 }, /* E2setupResponse */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 0 } /* ResetResponse */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct SuccessfulOutcome__value), - offsetof(struct SuccessfulOutcome__value, _asn_ctx), - offsetof(struct SuccessfulOutcome__value, present), - sizeof(((struct SuccessfulOutcome__value *)0)->present), - asn_MAP_value_tag2el_4, - 6, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 6, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_SuccessfulOutcome_criticality_type, - { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_SuccessfulOutcome_value_type, - { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = { - sizeof(struct SuccessfulOutcome), - offsetof(struct SuccessfulOutcome, _asn_ctx), - asn_MAP_SuccessfulOutcome_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = { - "SuccessfulOutcome", - "SuccessfulOutcome", - &asn_OP_SEQUENCE, - asn_DEF_SuccessfulOutcome_tags_1, - sizeof(asn_DEF_SuccessfulOutcome_tags_1) - /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ - asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */ - sizeof(asn_DEF_SuccessfulOutcome_tags_1) - /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_SuccessfulOutcome_1, - 3, /* Elements count */ - &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SuccessfulOutcome.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SuccessfulOutcome.h deleted file mode 100644 index fd04d94..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/SuccessfulOutcome.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _SuccessfulOutcome_H_ -#define _SuccessfulOutcome_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICsubscriptionRequest.h" -#include "RICsubscriptionResponse.h" -#include "RICsubscriptionFailure.h" -#include "RICsubscriptionDeleteRequest.h" -#include "RICsubscriptionDeleteResponse.h" -#include "RICsubscriptionDeleteFailure.h" -#include "RICserviceUpdate.h" -#include "RICserviceUpdateAcknowledge.h" -#include "RICserviceUpdateFailure.h" -#include "RICcontrolRequest.h" -#include "RICcontrolAcknowledge.h" -#include "RICcontrolFailure.h" -#include "E2setupRequest.h" -#include "E2setupResponse.h" -#include "E2setupFailure.h" -#include "ResetRequest.h" -#include "ResetResponse.h" -#include "RICindication.h" -#include "RICserviceQuery.h" -#include "ErrorIndication.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum SuccessfulOutcome__value_PR { - SuccessfulOutcome__value_PR_NOTHING, /* No components present */ - SuccessfulOutcome__value_PR_RICsubscriptionResponse, - SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse, - SuccessfulOutcome__value_PR_RICserviceUpdateAcknowledge, - SuccessfulOutcome__value_PR_RICcontrolAcknowledge, - SuccessfulOutcome__value_PR_E2setupResponse, - SuccessfulOutcome__value_PR_ResetResponse -} SuccessfulOutcome__value_PR; - -/* SuccessfulOutcome */ -typedef struct SuccessfulOutcome { - ProcedureCode_t procedureCode; - Criticality_t criticality; - struct SuccessfulOutcome__value { - SuccessfulOutcome__value_PR present; - union SuccessfulOutcome__value_u { - RICsubscriptionResponse_t RICsubscriptionResponse; - RICsubscriptionDeleteResponse_t RICsubscriptionDeleteResponse; - RICserviceUpdateAcknowledge_t RICserviceUpdateAcknowledge; - RICcontrolAcknowledge_t RICcontrolAcknowledge; - E2setupResponse_t E2setupResponse; - ResetResponse_t ResetResponse; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} SuccessfulOutcome_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome; -extern asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1; -extern asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _SuccessfulOutcome_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.c deleted file mode 100644 index c4eec34..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "TimeToWait.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_TimeToWait_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TimeToWait_value2enum_1[] = { - { 0, 3, "v1s" }, - { 1, 3, "v2s" }, - { 2, 3, "v5s" }, - { 3, 4, "v10s" }, - { 4, 4, "v20s" }, - { 5, 4, "v60s" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_TimeToWait_enum2value_1[] = { - 3, /* v10s(3) */ - 0, /* v1s(0) */ - 4, /* v20s(4) */ - 1, /* v2s(1) */ - 2, /* v5s(2) */ - 5 /* v60s(5) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1 = { - asn_MAP_TimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TimeToWait_enum2value_1, /* N => "tag"; sorted by N */ - 6, /* Number of elements in the maps */ - 7, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TimeToWait_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TimeToWait = { - "TimeToWait", - "TimeToWait", - &asn_OP_NativeEnumerated, - asn_DEF_TimeToWait_tags_1, - sizeof(asn_DEF_TimeToWait_tags_1) - /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ - asn_DEF_TimeToWait_tags_1, /* Same as above */ - sizeof(asn_DEF_TimeToWait_tags_1) - /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_TimeToWait_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TimeToWait_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.h deleted file mode 100644 index 6fad8ee..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TimeToWait.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _TimeToWait_H_ -#define _TimeToWait_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TimeToWait { - TimeToWait_v1s = 0, - TimeToWait_v2s = 1, - TimeToWait_v5s = 2, - TimeToWait_v10s = 3, - TimeToWait_v20s = 4, - TimeToWait_v60s = 5 - /* - * Enumeration is extensible - */ -} e_TimeToWait; - -/* TimeToWait */ -typedef long TimeToWait_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_TimeToWait; -asn_struct_free_f TimeToWait_free; -asn_struct_print_f TimeToWait_print; -asn_constr_check_f TimeToWait_constraint; -ber_type_decoder_f TimeToWait_decode_ber; -der_type_encoder_f TimeToWait_encode_der; -xer_type_decoder_f TimeToWait_decode_xer; -xer_type_encoder_f TimeToWait_encode_xer; -per_type_decoder_f TimeToWait_decode_uper; -per_type_encoder_f TimeToWait_encode_uper; -per_type_decoder_f TimeToWait_decode_aper; -per_type_encoder_f TimeToWait_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TimeToWait_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.c deleted file mode 100644 index 4087751..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "Timestamp.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_Timestamp_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_Timestamp = { - "Timestamp", - "Timestamp", - &asn_OP_OCTET_STRING, - asn_DEF_Timestamp_tags_1, - sizeof(asn_DEF_Timestamp_tags_1) - /sizeof(asn_DEF_Timestamp_tags_1[0]), /* 1 */ - asn_DEF_Timestamp_tags_1, /* Same as above */ - sizeof(asn_DEF_Timestamp_tags_1) - /sizeof(asn_DEF_Timestamp_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.h deleted file mode 100644 index f77ac4a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Timestamp.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _Timestamp_H_ -#define _Timestamp_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Timestamp */ -typedef OCTET_STRING_t Timestamp_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_Timestamp; -asn_struct_free_f Timestamp_free; -asn_struct_print_f Timestamp_print; -asn_constr_check_f Timestamp_constraint; -ber_type_decoder_f Timestamp_decode_ber; -der_type_encoder_f Timestamp_encode_der; -xer_type_decoder_f Timestamp_decode_xer; -xer_type_encoder_f Timestamp_encode_xer; -oer_type_decoder_f Timestamp_decode_oer; -oer_type_encoder_f Timestamp_encode_oer; -per_type_decoder_f Timestamp_decode_uper; -per_type_encoder_f Timestamp_encode_uper; -per_type_decoder_f Timestamp_decode_aper; -per_type_encoder_f Timestamp_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _Timestamp_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.c deleted file mode 100644 index 069fd1d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "Trigger-ConditionIE-Item.h" - -asn_TYPE_member_t asn_MBR_Trigger_ConditionIE_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct Trigger_ConditionIE_Item, report_Period_IE), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RT_Period_IE, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "report-Period-IE" - }, -}; -static const ber_tlv_tag_t asn_DEF_Trigger_ConditionIE_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_Trigger_ConditionIE_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* report-Period-IE */ -}; -asn_SEQUENCE_specifics_t asn_SPC_Trigger_ConditionIE_Item_specs_1 = { - sizeof(struct Trigger_ConditionIE_Item), - offsetof(struct Trigger_ConditionIE_Item, _asn_ctx), - asn_MAP_Trigger_ConditionIE_Item_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_Trigger_ConditionIE_Item = { - "Trigger-ConditionIE-Item", - "Trigger-ConditionIE-Item", - &asn_OP_SEQUENCE, - asn_DEF_Trigger_ConditionIE_Item_tags_1, - sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1) - /sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1[0]), /* 1 */ - asn_DEF_Trigger_ConditionIE_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1) - /sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_Trigger_ConditionIE_Item_1, - 1, /* Elements count */ - &asn_SPC_Trigger_ConditionIE_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.h deleted file mode 100644 index 173b46a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/Trigger-ConditionIE-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _Trigger_ConditionIE_Item_H_ -#define _Trigger_ConditionIE_Item_H_ - - -#include - -/* Including external dependencies */ -#include "RT-Period-IE.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Trigger-ConditionIE-Item */ -typedef struct Trigger_ConditionIE_Item { - RT_Period_IE_t report_Period_IE; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} Trigger_ConditionIE_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_Trigger_ConditionIE_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_Trigger_ConditionIE_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_Trigger_ConditionIE_Item_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _Trigger_ConditionIE_Item_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TriggeringMessage.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TriggeringMessage.c deleted file mode 100644 index 45dcd5f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TriggeringMessage.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "TriggeringMessage.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = { - { 0, 18, "initiating-message" }, - { 1, 18, "successful-outcome" }, - { 2, 21, "unsuccessfull-outcome" } -}; -static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = { - 0, /* initiating-message(0) */ - 1, /* successful-outcome(1) */ - 2 /* unsuccessfull-outcome(2) */ -}; -const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = { - asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = { - "TriggeringMessage", - "TriggeringMessage", - &asn_OP_NativeEnumerated, - asn_DEF_TriggeringMessage_tags_1, - sizeof(asn_DEF_TriggeringMessage_tags_1) - /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ - asn_DEF_TriggeringMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_TriggeringMessage_tags_1) - /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_TriggeringMessage_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TriggeringMessage.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TriggeringMessage.h deleted file mode 100644 index 734cefa..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TriggeringMessage.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _TriggeringMessage_H_ -#define _TriggeringMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TriggeringMessage { - TriggeringMessage_initiating_message = 0, - TriggeringMessage_successful_outcome = 1, - TriggeringMessage_unsuccessfull_outcome = 2 -} e_TriggeringMessage; - -/* TriggeringMessage */ -typedef long TriggeringMessage_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage; -extern const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1; -asn_struct_free_f TriggeringMessage_free; -asn_struct_print_f TriggeringMessage_print; -asn_constr_check_f TriggeringMessage_constraint; -ber_type_decoder_f TriggeringMessage_decode_ber; -der_type_encoder_f TriggeringMessage_encode_der; -xer_type_decoder_f TriggeringMessage_decode_xer; -xer_type_encoder_f TriggeringMessage_encode_xer; -per_type_decoder_f TriggeringMessage_decode_uper; -per_type_encoder_f TriggeringMessage_encode_uper; -per_type_decoder_f TriggeringMessage_decode_aper; -per_type_encoder_f TriggeringMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TriggeringMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.c deleted file mode 100644 index 76beba5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "TypeOfError.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = { - { 0, 14, "not-understood" }, - { 1, 7, "missing" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = { - 1, /* missing(1) */ - 0 /* not-understood(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = { - asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TypeOfError_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TypeOfError = { - "TypeOfError", - "TypeOfError", - &asn_OP_NativeEnumerated, - asn_DEF_TypeOfError_tags_1, - sizeof(asn_DEF_TypeOfError_tags_1) - /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ - asn_DEF_TypeOfError_tags_1, /* Same as above */ - sizeof(asn_DEF_TypeOfError_tags_1) - /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_TypeOfError_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TypeOfError_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.h deleted file mode 100644 index 9451b1e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/TypeOfError.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _TypeOfError_H_ -#define _TypeOfError_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TypeOfError { - TypeOfError_not_understood = 0, - TypeOfError_missing = 1 - /* - * Enumeration is extensible - */ -} e_TypeOfError; - -/* TypeOfError */ -typedef long TypeOfError_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_TypeOfError_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_TypeOfError; -extern const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1; -asn_struct_free_f TypeOfError_free; -asn_struct_print_f TypeOfError_print; -asn_constr_check_f TypeOfError_constraint; -ber_type_decoder_f TypeOfError_decode_ber; -der_type_encoder_f TypeOfError_encode_der; -xer_type_decoder_f TypeOfError_decode_xer; -xer_type_encoder_f TypeOfError_encode_xer; -per_type_decoder_f TypeOfError_decode_uper; -per_type_encoder_f TypeOfError_encode_uper; -per_type_decoder_f TypeOfError_decode_aper; -per_type_encoder_f TypeOfError_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TypeOfError_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.c deleted file mode 100644 index 1966c27..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "UE-Report-Type.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_UE_Report_Type_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_UE_Report_Type_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_UE_Report_Type_value2enum_1[] = { - { 0, 17, "oDU-Report-Per-UE" }, - { 1, 20, "oCU-CP-Report-Per-UE" }, - { 2, 20, "oCU-UP-Report-Per-UE" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_UE_Report_Type_enum2value_1[] = { - 1, /* oCU-CP-Report-Per-UE(1) */ - 2, /* oCU-UP-Report-Per-UE(2) */ - 0 /* oDU-Report-Per-UE(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_UE_Report_Type_specs_1 = { - asn_MAP_UE_Report_Type_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_UE_Report_Type_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_UE_Report_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_UE_Report_Type = { - "UE-Report-Type", - "UE-Report-Type", - &asn_OP_NativeEnumerated, - asn_DEF_UE_Report_Type_tags_1, - sizeof(asn_DEF_UE_Report_Type_tags_1) - /sizeof(asn_DEF_UE_Report_Type_tags_1[0]), /* 1 */ - asn_DEF_UE_Report_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_UE_Report_Type_tags_1) - /sizeof(asn_DEF_UE_Report_Type_tags_1[0]), /* 1 */ - { &asn_OER_type_UE_Report_Type_constr_1, &asn_PER_type_UE_Report_Type_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_UE_Report_Type_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.h deleted file mode 100644 index 02e7cb5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UE-Report-Type.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _UE_Report_Type_H_ -#define _UE_Report_Type_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum UE_Report_Type { - UE_Report_Type_oDU_Report_Per_UE = 0, - UE_Report_Type_oCU_CP_Report_Per_UE = 1, - UE_Report_Type_oCU_UP_Report_Per_UE = 2 - /* - * Enumeration is extensible - */ -} e_UE_Report_Type; - -/* UE-Report-Type */ -typedef long UE_Report_Type_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_UE_Report_Type_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_UE_Report_Type; -extern const asn_INTEGER_specifics_t asn_SPC_UE_Report_Type_specs_1; -asn_struct_free_f UE_Report_Type_free; -asn_struct_print_f UE_Report_Type_print; -asn_constr_check_f UE_Report_Type_constraint; -ber_type_decoder_f UE_Report_Type_decode_ber; -der_type_encoder_f UE_Report_Type_encode_der; -xer_type_decoder_f UE_Report_Type_decode_xer; -xer_type_encoder_f UE_Report_Type_encode_xer; -oer_type_decoder_f UE_Report_Type_decode_oer; -oer_type_encoder_f UE_Report_Type_encode_oer; -per_type_decoder_f UE_Report_Type_decode_uper; -per_type_encoder_f UE_Report_Type_encode_uper; -per_type_decoder_f UE_Report_Type_decode_aper; -per_type_encoder_f UE_Report_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _UE_Report_Type_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UnsuccessfulOutcome.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UnsuccessfulOutcome.c deleted file mode 100644 index 327134e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UnsuccessfulOutcome.c +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#include "UnsuccessfulOutcome.h" - -static const long asn_VAL_1_id_RICsubscription = 8; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_2_id_RICsubscriptionDelete = 9; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_3_id_RICserviceUpdate = 7; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_4_id_RICcontrol = 4; -static const long asn_VAL_4_reject = 0; -static const long asn_VAL_5_id_E2setup = 1; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_6_id_Reset = 3; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_7_id_RICindication = 5; -static const long asn_VAL_7_ignore = 1; -static const long asn_VAL_8_id_RICserviceQuery = 6; -static const long asn_VAL_8_ignore = 1; -static const long asn_VAL_9_id_ErrorIndication = 2; -static const long asn_VAL_9_ignore = 1; -static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_Reset }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICindication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_RICserviceQuery }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_ErrorIndication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore } -}; -static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { - { 9, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } -}; -static int -memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_UnsuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 4; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_UnsuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 2; /* &UnsuccessfulOutcome */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionDeleteFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICserviceUpdateFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceUpdateFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICcontrolFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2setupFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2setupFailure" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 4 }, /* RICsubscriptionFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 3 }, /* RICsubscriptionDeleteFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 2 }, /* RICserviceUpdateFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 1 }, /* RICcontrolFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 0 } /* E2setupFailure */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct UnsuccessfulOutcome__value), - offsetof(struct UnsuccessfulOutcome__value, _asn_ctx), - offsetof(struct UnsuccessfulOutcome__value, present), - sizeof(((struct UnsuccessfulOutcome__value *)0)->present), - asn_MAP_value_tag2el_4, - 5, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 5, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_UnsuccessfulOutcome_criticality_type, - { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_UnsuccessfulOutcome_value_type, - { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = { - sizeof(struct UnsuccessfulOutcome), - offsetof(struct UnsuccessfulOutcome, _asn_ctx), - asn_MAP_UnsuccessfulOutcome_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = { - "UnsuccessfulOutcome", - "UnsuccessfulOutcome", - &asn_OP_SEQUENCE, - asn_DEF_UnsuccessfulOutcome_tags_1, - sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) - /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ - asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */ - sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) - /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_UnsuccessfulOutcome_1, - 3, /* Elements count */ - &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UnsuccessfulOutcome.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UnsuccessfulOutcome.h deleted file mode 100644 index 7762209..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/UnsuccessfulOutcome.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "/home/rshacham/e2ap-v01.00.00.asn" - * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D .` - */ - -#ifndef _UnsuccessfulOutcome_H_ -#define _UnsuccessfulOutcome_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICsubscriptionRequest.h" -#include "RICsubscriptionResponse.h" -#include "RICsubscriptionFailure.h" -#include "RICsubscriptionDeleteRequest.h" -#include "RICsubscriptionDeleteResponse.h" -#include "RICsubscriptionDeleteFailure.h" -#include "RICserviceUpdate.h" -#include "RICserviceUpdateAcknowledge.h" -#include "RICserviceUpdateFailure.h" -#include "RICcontrolRequest.h" -#include "RICcontrolAcknowledge.h" -#include "RICcontrolFailure.h" -#include "E2setupRequest.h" -#include "E2setupResponse.h" -#include "E2setupFailure.h" -#include "ResetRequest.h" -#include "ResetResponse.h" -#include "RICindication.h" -#include "RICserviceQuery.h" -#include "ErrorIndication.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum UnsuccessfulOutcome__value_PR { - UnsuccessfulOutcome__value_PR_NOTHING, /* No components present */ - UnsuccessfulOutcome__value_PR_RICsubscriptionFailure, - UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure, - UnsuccessfulOutcome__value_PR_RICserviceUpdateFailure, - UnsuccessfulOutcome__value_PR_RICcontrolFailure, - UnsuccessfulOutcome__value_PR_E2setupFailure -} UnsuccessfulOutcome__value_PR; - -/* UnsuccessfulOutcome */ -typedef struct UnsuccessfulOutcome { - ProcedureCode_t procedureCode; - Criticality_t criticality; - struct UnsuccessfulOutcome__value { - UnsuccessfulOutcome__value_PR present; - union UnsuccessfulOutcome__value_u { - RICsubscriptionFailure_t RICsubscriptionFailure; - RICsubscriptionDeleteFailure_t RICsubscriptionDeleteFailure; - RICserviceUpdateFailure_t RICserviceUpdateFailure; - RICcontrolFailure_t RICcontrolFailure; - E2setupFailure_t E2setupFailure; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} UnsuccessfulOutcome_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome; -extern asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1; -extern asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _UnsuccessfulOutcome_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_application.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_application.c deleted file mode 100644 index 2bff460..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_application.c +++ /dev/null @@ -1,481 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_app_consume_bytes_f *callback, - void *callback_key); - - -struct callback_count_bytes_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - size_t computed_size; -}; - -/* - * Encoder which just counts bytes that come through it. - */ -static int -callback_count_bytes_cb(const void *data, size_t size, void *keyp) { - struct callback_count_bytes_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret >= 0) { - key->computed_size += size; - } - - return ret; -} - -struct overrun_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct dynamic_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct callback_failure_catch_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - int callback_failed; -}; - -/* - * Encoder which doesn't stop counting bytes - * even if it reaches the end of the buffer. - */ -static int -overrun_encoder_cb(const void *data, size_t size, void *keyp) { - struct overrun_encoder_key *key = keyp; - - if(key->computed_size + size > key->buffer_size) { - /* - * Avoid accident on the next call: - * stop adding bytes to the buffer. - */ - key->buffer_size = 0; - } else { - memcpy((char *)key->buffer + key->computed_size, data, size); - } - key->computed_size += size; - - return 0; -} - -/* - * Encoder which dynamically allocates output, and continues - * to count even if allocation failed. - */ -static int -dynamic_encoder_cb(const void *data, size_t size, void *keyp) { - struct dynamic_encoder_key *key = keyp; - - if(key->buffer) { - if(key->computed_size + size >= key->buffer_size) { - void *p; - size_t new_size = key->buffer_size; - - do { - new_size *= 2; - } while(new_size <= key->computed_size + size); - - p = REALLOC(key->buffer, new_size); - if(p) { - key->buffer = p; - key->buffer_size = new_size; - } else { - FREEMEM(key->buffer); - key->buffer = 0; - key->buffer_size = 0; - key->computed_size += size; - return 0; - } - } - memcpy((char *)key->buffer + key->computed_size, data, size); - } - - key->computed_size += size; - - return 0; -} - -/* - * Encoder which help convert the application level encoder failure into EIO. - */ -static int -callback_failure_catch_cb(const void *data, size_t size, void *keyp) { - struct callback_failure_catch_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret < 0) { - key->callback_failed = 1; - } - - return ret; -} - -asn_enc_rval_t -asn_encode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { - struct callback_failure_catch_key cb_key; - asn_enc_rval_t er = {0,0,0}; - - if(!callback) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.callback_failed = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - callback_failure_catch_cb, &cb_key); - if(cb_key.callback_failed) { - assert(er.encoded == -1); - assert(errno == EBADF); - errno = EIO; - } - - return er; -} - -asn_enc_rval_t -asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - void *buffer, size_t buffer_size) { - struct overrun_encoder_key buf_key; - asn_enc_rval_t er = {0,0,0}; - - if(buffer_size > 0 && !buffer) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - buf_key.buffer = buffer; - buf_key.buffer_size = buffer_size; - buf_key.computed_size = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - overrun_encoder_cb, &buf_key); - - if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - er.encoded, buf_key.computed_size); - assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); - } - - return er; -} - -asn_encode_to_new_buffer_result_t -asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr) { - struct dynamic_encoder_key buf_key; - asn_encode_to_new_buffer_result_t res; - - buf_key.buffer_size = 16; - buf_key.buffer = MALLOC(buf_key.buffer_size); - buf_key.computed_size = 0; - - res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - dynamic_encoder_cb, &buf_key); - - if(res.result.encoded >= 0 - && (size_t)res.result.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - res.result.encoded, buf_key.computed_size); - assert(res.result.encoded < 0 - || (size_t)res.result.encoded == buf_key.computed_size); - } - - res.buffer = buf_key.buffer; - - /* 0-terminate just in case. */ - if(res.buffer) { - assert(buf_key.computed_size < buf_key.buffer_size); - ((char *)res.buffer)[buf_key.computed_size] = '\0'; - } - - return res; -} - -static asn_enc_rval_t -asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_consume_bytes_f *callback, void *callback_key) { - asn_enc_rval_t er = {0,0,0}; - enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; - - (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ - - if(!td || !sptr) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - switch(syntax) { - case ATS_NONSTANDARD_PLAINTEXT: - if(td->op->print_struct) { - struct callback_count_bytes_key cb_key; - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.computed_size = 0; - if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, - &cb_key) - < 0 - || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { - errno = EBADF; /* Structure has incorrect form. */ - er.encoded = -1; - er.failed_type = td; - er.structure_ptr = sptr; - } else { - er.encoded = cb_key.computed_size; - er.failed_type = 0; - er.structure_ptr = 0; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - case ATS_RANDOM: - errno = ENOENT; /* Randomization doesn't make sense on output. */ - ASN__ENCODE_FAILED; - - case ATS_BER: - /* BER is a superset of DER. */ - /* Fall through. */ - case ATS_DER: - if(td->op->der_encoder) { - er = der_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->der_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* DER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_CER: - errno = ENOENT; /* Transfer syntax is not defined for any type. */ - ASN__ENCODE_FAILED; - -#ifdef ASN_DISABLE_OER_SUPPORT - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_OER_SUPPORT */ - case ATS_BASIC_OER: - /* CANONICAL-OER is a superset of BASIC-OER. */ - /* Fall through. */ - case ATS_CANONICAL_OER: - if(td->op->oer_encoder) { - er = oer_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->oer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* OER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_OER_SUPPORT */ - -#ifdef ASN_DISABLE_PER_SUPPORT - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_PER_SUPPORT */ - case ATS_UNALIGNED_BASIC_PER: - /* CANONICAL-UPER is a superset of BASIC-UPER. */ - /* Fall through. */ - case ATS_UNALIGNED_CANONICAL_PER: - if(td->op->uper_encoder) { - er = uper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->uper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* UPER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_ALIGNED_BASIC_PER: - /* CANONICAL-APER is a superset of BASIC-APER. */ - /* Fall through. */ - case ATS_ALIGNED_CANONICAL_PER: - if(td->op->aper_encoder) { - er = aper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->aper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* APER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_PER_SUPPORT */ - - case ATS_BASIC_XER: - /* CANONICAL-XER is a superset of BASIC-XER. */ - xer_flags &= ~XER_F_CANONICAL; - xer_flags |= XER_F_BASIC; - /* Fall through. */ - case ATS_CANONICAL_XER: - if(td->op->xer_encoder) { - er = xer_encode(td, sptr, xer_flags, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->xer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* XER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - default: - errno = ENOENT; - ASN__ENCODE_FAILED; - } - - return er; -} - -asn_dec_rval_t -asn_decode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - void **sptr, const void *buffer, size_t size) { - if(!td || !td->op || !sptr || (size && !buffer)) { - ASN__DECODE_FAILED; - } - - switch(syntax) { - case ATS_CER: - case ATS_NONSTANDARD_PLAINTEXT: - default: - errno = ENOENT; - ASN__DECODE_FAILED; - - case ATS_RANDOM: - if(!td->op->random_fill) { - ASN__DECODE_FAILED; - } else { - if(asn_random_fill(td, sptr, 16000) == 0) { - asn_dec_rval_t ret = {RC_OK, 0}; - return ret; - } else { - ASN__DECODE_FAILED; - } - } - break; - - case ATS_DER: - case ATS_BER: - return ber_decode(opt_codec_ctx, td, sptr, buffer, size); - - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: -#ifdef ASN_DISABLE_OER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return oer_decode(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_BASIC_XER: - case ATS_CANONICAL_XER: - return xer_decode(opt_codec_ctx, td, sptr, buffer, size); - } -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_application.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_application.h deleted file mode 100644 index 034f646..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_application.h +++ /dev/null @@ -1,171 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Application-level ASN.1 callbacks. - */ -#ifndef ASN_APPLICATION_H -#define ASN_APPLICATION_H - -#include "asn_system.h" /* for platform-dependent types */ -#include "asn_codecs.h" /* for ASN.1 codecs specifics */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * A selection of ASN.1 Transfer Syntaxes to use with generalized - * encoders and decoders declared further in this .h file. - */ -enum asn_transfer_syntax { - /* Avoid appearance of a default transfer syntax. */ - ATS_INVALID = 0, - /* Plaintext output (not conforming to any standard), for debugging. */ - ATS_NONSTANDARD_PLAINTEXT, - /* Returns a randomly generated structure. */ - ATS_RANDOM, - /* - * X.690: - * BER: Basic Encoding Rules. - * DER: Distinguished Encoding Rules. - * CER: Canonical Encoding Rules. - * DER and CER are more strict variants of BER. - */ - ATS_BER, - ATS_DER, - ATS_CER, /* Only decoding is supported */ - /* - * X.696: - * OER: Octet Encoding Rules. - * CANONICAL-OER is a more strict variant of BASIC-OER. - */ - ATS_BASIC_OER, - ATS_CANONICAL_OER, - /* - * X.691: - * PER: Packed Encoding Rules. - * CANONICAL-PER is a more strict variant of BASIC-PER. - * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). - */ - ATS_UNALIGNED_BASIC_PER, - ATS_UNALIGNED_CANONICAL_PER, - ATS_ALIGNED_BASIC_PER, - ATS_ALIGNED_CANONICAL_PER, - /* - * X.693: - * XER: XML Encoding Rules. - * CANONICAL-XER is a more strict variant of BASIC-XER. - */ - ATS_BASIC_XER, - ATS_CANONICAL_XER -}; - -/* - * A generic encoder for any supported transfer syntax. - * RETURN VALUES: - * The (.encoded) field of the return value is REDEFINED to mean the following: - * >=0: The computed size of the encoded data. Can exceed the (buffer_size). - * -1: Error encoding the structure. See the error code in (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate - * values at the place of failure, if at all possible. - * WARNING: The (.encoded) field of the return value can exceed the buffer_size. - * This is similar to snprintf(3) contract which might return values - * greater than the buffer size. - */ -asn_enc_rval_t asn_encode_to_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, void *buffer, size_t buffer_size); - -/* - * A variant of asn_encode_to_buffer() with automatically allocated buffer. - * RETURN VALUES: - * On success, returns a newly allocated (.buffer) containing the whole message. - * The message size is returned in (.result.encoded). - * On failure: - * (.buffer) is NULL, - * (.result.encoded) as in asn_encode_to_buffer(), - * The errno codes as in asn_encode_to_buffer(), plus the following: - * ENOMEM: Memory allocation failed due to system or internal limits. - * The user is responsible for freeing the (.buffer). - */ -typedef struct asn_encode_to_new_buffer_result_s { - void *buffer; /* NULL if failed to encode. */ - asn_enc_rval_t result; -} asn_encode_to_new_buffer_result_t; -asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode); - - -/* - * Generic type of an application-defined callback to return various - * types of data to the application. - * EXPECTED RETURN VALUES: - * -1: Failed to consume bytes. Abort the mission. - * Non-negative return values indicate success, and ignored. - */ -typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, - void *application_specific_key); - - -/* - * A generic encoder for any supported transfer syntax. - * Returns the comprehensive encoding result descriptor (see asn_codecs.h). - * RETURN VALUES: - * The negative (.encoded) field of the return values is accompanied with the - * following error codes (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * EIO: The (callback) has returned negative value during encoding. - */ -asn_enc_rval_t asn_encode( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, - asn_app_consume_bytes_f *callback, void *callback_key); - - -/* - * A generic decoder for any supported transfer syntax. - */ -asn_dec_rval_t asn_decode( - const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_decode, - void **structure_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ -); - - -/* - * A callback of this type is called whenever constraint validation fails - * on some ASN.1 type. See "constraints.h" for more details on constraint - * validation. - * This callback specifies a descriptor of the ASN.1 type which failed - * the constraint check, as well as human readable message on what - * particular constraint has failed. - */ -typedef void (asn_app_constraint_failed_f)(void *application_specific_key, - const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, - const void *structure_which_failed_ptr, - const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); - - -#ifdef __cplusplus -} -#endif - -#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ - -#endif /* ASN_APPLICATION_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_bit_data.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_bit_data.h deleted file mode 100644 index 59de7af..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_bit_data.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.c deleted file mode 100644 index fc24247..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.c +++ /dev/null @@ -1,317 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Decode an always-primitive type. - */ -asn_dec_rval_t -ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; - asn_dec_rval_t rval; - ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ - - /* - * If the structure is not there, allocate it. - */ - if(st == NULL) { - st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) ASN__DECODE_FAILED; - *sptr = (void *)st; - } - - ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", - td->name, tag_mode); - - /* - * Check tags and extract value length. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - st->size = (int)length; - /* The following better be optimized away. */ - if(sizeof(st->size) != sizeof(length) - && (ber_tlv_len_t)st->size != length) { - st->size = 0; - ASN__DECODE_FAILED; - } - - st->buf = (uint8_t *)MALLOC(length + 1); - if(!st->buf) { - st->size = 0; - ASN__DECODE_FAILED; - } - - memcpy(st->buf, buf_ptr, length); - st->buf[length] = '\0'; /* Just in case */ - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s", - (long)rval.consumed, - (long)length, td->name); - - return rval; -} - -/* - * Encode an always-primitive type using DER. - */ -asn_enc_rval_t -der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t erval = {0,0,0}; - const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; - - ASN_DEBUG("%s %s as a primitive type (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, - cb, app_key); - ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); - if(erval.encoded == -1) { - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - - if(cb && st->buf) { - if(cb(st->buf, st->size, app_key) < 0) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - } else { - assert(st->buf || st->size == 0); - } - - erval.encoded += st->size; - ASN__ENCODED_OK(erval); -} - -void -ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as a primitive type", td->name); - - if(st->buf) - FREEMEM(st->buf); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); - break; - } -} - - -/* - * Local internal type passed around as an argument. - */ -struct xdp_arg_s { - const asn_TYPE_descriptor_t *type_descriptor; - void *struct_key; - xer_primitive_body_decoder_f *prim_body_decoder; - int decoded_something; - int want_more; -}; - -/* - * Since some kinds of primitive values can be encoded using value-specific - * tags (, , etc), the primitive decoder must - * be supplied with such tags to parse them as needed. - */ -static int -xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - - /* - * The chunk_buf is guaranteed to start at '<'. - */ - assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); - - /* - * Decoding was performed once already. Prohibit doing it again. - */ - if(arg->decoded_something) - return -1; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return 0; - } - - return -1; -} - -static ssize_t -xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - size_t lead_wsp_size; - - if(arg->decoded_something) { - if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { - /* - * Example: - * "123 " - * ^- chunk_buf position. - */ - return chunk_size; - } - /* - * Decoding was done once already. Prohibit doing it again. - */ - return -1; - } - - if(!have_more) { - /* - * If we've received something like "1", we can't really - * tell whether it is really `1` or `123`, until we know - * that there is no more data coming. - * The have_more argument will be set to 1 once something - * like this is available to the caller of this callback: - * "1want_more = 1; - return -1; - } - - lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); - chunk_buf = (const char *)chunk_buf + lead_wsp_size; - chunk_size -= lead_wsp_size; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return lead_wsp_size + chunk_size; - } - - return -1; -} - - -asn_dec_rval_t -xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - size_t struct_size, const char *opt_mname, - const void *buf_ptr, size_t size, - xer_primitive_body_decoder_f *prim_body_decoder) { - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t s_ctx; - struct xdp_arg_s s_arg; - asn_dec_rval_t rc; - - /* - * Create the structure if does not exist. - */ - if(!*sptr) { - *sptr = CALLOC(1, struct_size); - if(!*sptr) ASN__DECODE_FAILED; - } - - memset(&s_ctx, 0, sizeof(s_ctx)); - s_arg.type_descriptor = td; - s_arg.struct_key = *sptr; - s_arg.prim_body_decoder = prim_body_decoder; - s_arg.decoded_something = 0; - s_arg.want_more = 0; - - rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, - xml_tag, buf_ptr, size, - xer_decode__unexpected_tag, xer_decode__primitive_body); - switch(rc.code) { - case RC_OK: - if(!s_arg.decoded_something) { - char ch; - ASN_DEBUG("Primitive body is not recognized, " - "supplying empty one"); - /* - * Decoding opportunity has come and gone. - * Where's the result? - * Try to feed with empty body, see if it eats it. - */ - if(prim_body_decoder(s_arg.type_descriptor, - s_arg.struct_key, &ch, 0) - != XPBD_BODY_CONSUMED) { - /* - * This decoder does not like empty stuff. - */ - ASN__DECODE_FAILED; - } - } - break; - case RC_WMORE: - /* - * Redo the whole thing later. - * We don't have a context to save intermediate parsing state. - */ - rc.consumed = 0; - break; - case RC_FAIL: - rc.consumed = 0; - if(s_arg.want_more) - rc.code = RC_WMORE; - else - ASN__DECODE_FAILED; - break; - } - return rc; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.h deleted file mode 100644 index fbc5576..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_codecs_prim.h +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_constant.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_constant.h deleted file mode 100644 index af5a0fd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_constant.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - */ - -#ifndef _ASN_CONSTANT_H -#define _ASN_CONSTANT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define maxofMessageProtocolTests (15) -#define maxofRICstyles (63) -#define maxnoofQCI (256) -#define maxnoofQoSFlows (64) -#define maxnoofSliceItems (1024) -#define maxnoofContainerListItems (3) -#define maxCellingNBDU (512) -#define maxofContainers (8) -#define maxPLMN (12) -#define maxofRANparamters (65536) -#define maxUeReport (32) -#define maxCellingNB (16384) - - -#ifdef __cplusplus -} -#endif - -#endif /* _ASN_CONSTANT_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.c deleted file mode 100644 index 1aff95f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.c +++ /dev/null @@ -1,48 +0,0 @@ -#include - -ssize_t -asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, - const char *fmt, ...) { - char scratch[64]; - char *buf = scratch; - size_t buf_size = sizeof(scratch); - int wrote; - int cb_ret; - - do { - va_list args; - va_start(args, fmt); - - wrote = vsnprintf(buf, buf_size, fmt, args); - if(wrote < (ssize_t)buf_size) { - if(wrote < 0) { - if(buf != scratch) FREEMEM(buf); - va_end(args); - return -1; - } - break; - } - - buf_size <<= 1; - if(buf == scratch) { - buf = MALLOC(buf_size); - if(!buf) return -1; - } else { - void *p = REALLOC(buf, buf_size); - if(!p) { - FREEMEM(buf); - return -1; - } - buf = p; - } - } while(1); - - cb_ret = cb(buf, wrote, key); - if(buf != scratch) FREEMEM(buf); - if(cb_ret < 0) { - return -1; - } - - return wrote; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.h deleted file mode 100644 index c4105ad..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_internal.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Declarations internally useful for the ASN.1 support code. - */ -#ifndef ASN_INTERNAL_H -#define ASN_INTERNAL_H -#define __EXTENSIONS__ /* for Sun */ - -#include "asn_application.h" /* Application-visible API */ - -#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ -#include /* for assert() macro */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Environment version might be used to avoid running with the old library */ -#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ -int get_asn1c_environment_version(void); /* Run-time version */ - -#define CALLOC(nmemb, size) calloc(nmemb, size) -#define MALLOC(size) malloc(size) -#define REALLOC(oldptr, size) realloc(oldptr, size) -#define FREEMEM(ptr) free(ptr) - -#define asn_debug_indent 0 -#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) - -#ifdef EMIT_ASN_DEBUG -#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" -#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG -#endif - -/* - * A macro for debugging the ASN.1 internals. - * You may enable or override it. - */ -#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ -#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ -#if !defined(BELL_LABS) /* Bell Labs */ - //#if __STDC_VERSION__ >= 199901L -#ifdef ASN_THREAD_SAFE -/* Thread safety requires sacrifice in output indentation: - * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ -#else /* !ASN_THREAD_SAFE */ -#undef ASN_DEBUG_INDENT_ADD -#undef asn_debug_indent -int asn_debug_indent; -#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) -#endif /* ASN_THREAD_SAFE */ -#if defined(BELL_LABS) /* Bell Labs version */ -extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); -#define ASN_DEBUG(fmt, args...) do { \ - (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ - } while(0) -#else -#define ASN_DEBUG(fmt, args...) do { \ - int adi = asn_debug_indent; \ - while(adi--) fprintf(stderr, " "); \ - fprintf(stderr, fmt, ##args); \ - fprintf(stderr, " (%s:%d)\n", \ - __FILE__, __LINE__); \ - } while(0) -#endif /* BELL_LABS */ -#else /* !C99 */ -void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); -#define ASN_DEBUG ASN_DEBUG_f -#endif /* C99 */ -#else /* ASN_EMIT_DEBUG != 1 */ -#if __STDC_VERSION__ >= 199901L -#define ASN_DEBUG(...) do{}while(0) -#else /* not C99 */ -static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } -#endif /* C99 or better */ -#endif /* ASN_EMIT_DEBUG */ -#endif /* ASN_DEBUG */ - -/* - * Print to a callback. - * The callback is expected to return negative values on error. - * 0 and positive values are treated as success. - * RETURN VALUES: - * -1: Failed to format or invoke the callback. - * >0: Size of the data that got delivered to the callback. - */ -ssize_t CC_PRINTFLIKE(3, 4) -asn__format_to_callback( - int (*callback)(const void *, size_t, void *key), void *key, - const char *fmt, ...); - -/* - * Invoke the application-supplied callback and fail, if something is wrong. - */ -#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) -#define ASN__E_CALLBACK(size, foo) \ - do { \ - if(foo) goto cb_failed; \ - er.encoded += (size); \ - } while(0) -#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) -#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ - ASN__E_CALLBACK((size1) + (size2), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) -#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ - ASN__E_CALLBACK((size1) + (size2) + (size3), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ - || ASN__E_cbc(buf3, size3)) - -#define ASN__TEXT_INDENT(nl, level) \ - do { \ - int tmp_level = (level); \ - int tmp_nl = ((nl) != 0); \ - int tmp_i; \ - if(tmp_nl) ASN__CALLBACK("\n", 1); \ - if(tmp_level < 0) tmp_level = 0; \ - for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ - } while(0) - -#define _i_INDENT(nl) do { \ - int tmp_i; \ - if((nl) && cb("\n", 1, app_key) < 0) \ - return -1; \ - for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ - if(cb(" ", 4, app_key) < 0) \ - return -1; \ - } while(0) - -/* - * Check stack against overflow, if limit is set. - */ -#define ASN__DEFAULT_STACK_MAX (30000) -static int CC_NOTUSED -ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { - if(ctx && ctx->max_stack_size) { - - /* ctx MUST be allocated on the stack */ - ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); - if(usedstack > 0) usedstack = -usedstack; /* grows up! */ - - /* double negative required to avoid int wrap-around */ - if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { - ASN_DEBUG("Stack limit %ld reached", - (long)ctx->max_stack_size); - return -1; - } - } - return 0; -} - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_INTERNAL_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_random_fill.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_random_fill.c deleted file mode 100644 index 819cf70..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_random_fill.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_system.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_system.h deleted file mode 100644 index fa8cf11..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/asn_system.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_tag.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_tag.c deleted file mode 100644 index 4a7d732..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/ber_tlv_tag.c +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.c deleted file mode 100644 index 86dcbb0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.c +++ /dev/null @@ -1,1533 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * See the definitions. - */ -static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, - unsigned size); -static void _set_present_idx(void *sptr, unsigned offset, unsigned size, - unsigned pres); -static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, - const void *sptr, asn_TYPE_member_t **elm, - unsigned *present); - -/* - * Tags are canonically sorted in the tag to member table. - */ -static int -_search4tag(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) - return 0; - else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - -/* - * The decoder of the CHOICE type. - */ -asn_dec_rval_t -CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - ssize_t tag_len; /* Length of TLV's T */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as CHOICE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - if(tag_mode || td->tags_count) { - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, -1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) { - /* ?Substracted below! */ - ctx->left += rval.consumed; - } - ADVANCE(rval.consumed); - } else { - ctx->left = -1; - } - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - do { - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key; - - key.el_tag = tlv_tag; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _search4tag); - if(t2m) { - /* - * Found the element corresponding to the tag. - */ - NEXT_PHASE(ctx); - ctx->step = t2m->el_no; - break; - } else if(specs->ext_start == -1) { - ASN_DEBUG("Unexpected tag %s " - "in non-extensible CHOICE %s", - ber_tlv_tag_string(tlv_tag), td->name); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - - ASN_DEBUG("Skipping unknown tag %s", - ber_tlv_tag_string(tlv_tag)); - - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - RETURN(RC_OK); - } - } while(0); - - case 2: - /* - * PHASE 2. - * Read in the element. - */ - do { - asn_TYPE_member_t *elm;/* CHOICE's element */ - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &elements[ctx->step]; - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - /* Set presence to be able to free it properly at any time */ - _set_present_idx(st, specs->pres_offset, - specs->pres_size, ctx->step + 1); - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, - memb_ptr2, ptr, LEFT, elm->tag_mode); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - RETURN(RC_FAIL); - case RC_FAIL: /* Fatal error */ - RETURN(rval.code); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } while(0); - - NEXT_PHASE(ctx); - - /* Fall through */ - case 3: - ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", - td->name, (long)ctx->left, (long)size, - tag_mode, td->tags_count); - - if(ctx->left > 0) { - /* - * The type must be fully decoded - * by the CHOICE member-specific decoder. - */ - RETURN(RC_FAIL); - } - - if(ctx->left == -1 - && !(tag_mode || td->tags_count)) { - /* - * This is an untagged CHOICE. - * It doesn't contain nothing - * except for the member itself, including all its tags. - * The decoding is completed. - */ - NEXT_PHASE(ctx); - break; - } - - /* - * Read in the "end of data chunks"'s. - */ - while(ctx->left < 0) { - ssize_t tl; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * Expected <0><0>... - */ - if(((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - continue; - } - } else { - ASN_DEBUG("Unexpected continuation in %s", - td->name); - RETURN(RC_FAIL); - } - - /* UNREACHABLE */ - } - - NEXT_PHASE(ctx); - case 4: - /* No meaningful work here */ - break; - } - - RETURN(RC_OK); -} - -asn_enc_rval_t -CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE element */ - asn_enc_rval_t erval = {0,0,0}; - const void *memb_ptr; - size_t computed_size = 0; - unsigned present; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("%s %s as CHOICE", - cb?"Encoding":"Estimating", td->name); - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) { - if(present == 0 && td->elements_count == 0) { - /* The CHOICE is empty?! */ - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - ASN__ENCODE_FAILED; - } - - /* - * Seek over the present member of the structure. - */ - elm = &td->elements[present-1]; - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(memb_ptr == 0) { - if(elm->optional) { - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - /* Mandatory element absent */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* - * If the CHOICE itself is tagged EXPLICIT: - * T ::= [2] EXPLICIT CHOICE { ... } - * Then emit the appropriate tags. - */ - if(tag_mode == 1 || td->tags_count) { - /* - * For this, we need to pre-compute the member. - */ - ssize_t ret; - - /* Encode member with its tag */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, 0, 0); - if(erval.encoded == -1) - return erval; - - /* Encode CHOICE with parent or my own tag */ - ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, - cb, app_key); - if(ret == -1) - ASN__ENCODE_FAILED; - computed_size += ret; - } - - /* - * Encode the single underlying member. - */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, cb, app_key); - if(erval.encoded == -1) - return erval; - - ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", - (long)erval.encoded, (long)computed_size); - - erval.encoded += computed_size; - - return erval; -} - -ber_tlv_tag_t -CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - assert(tag_mode == 0); (void)tag_mode; - assert(tag == 0); (void)tag; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - if(present > 0 && present <= td->elements_count) { - const asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *) - ((const char *)ptr + elm->memb_offset); - } else { - memb_ptr = (const void *) - ((const char *)ptr + elm->memb_offset); - } - - return asn_TYPE_outmost_tag(elm->type, memb_ptr, - elm->tag_mode, elm->tag); - } else { - return (ber_tlv_tag_t)-1; - } -} - -int -CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - return 0; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory CHOICE element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: no CHOICE element given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value of a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - if(ctx->phase == 0 && !*xml_tag) - ctx->phase = 1; /* Skip the outer tag checking phase */ - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Only waiting for closing tag. - * Phase 4: Skipping unknown extensions. - * Phase 5: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 4;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the member. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - unsigned old_present; - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Start/Continue decoding the inner member */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - buf_ptr, size); - XER_ADVANCE(tmprval.consumed); - ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", - elm->type->name, tmprval.code); - old_present = _fetch_present_idx(st, - specs->pres_offset, specs->pres_size); - assert(old_present == 0 || old_present == edx + 1); - /* Record what we've got */ - _set_present_idx(st, - specs->pres_offset, specs->pres_size, edx + 1); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 3; - /* Fall through */ - } - - /* No need to wait for closing tag; special mode. */ - if(ctx->phase == 3 && !*xml_tag) { - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - xml_tag, tcv); - - /* Skip the extensions section */ - if(ctx->phase == 4) { - ASN_DEBUG("skip_unknown(%d, %ld)", - tcv, (long)ctx->left); - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 5; - RETURN(RC_FAIL); - case 1: - ctx->phase = 3; - /* Fall through */ - case 0: - XER_ADVANCE(ch_size); - continue; - case 2: - ctx->phase = 3; - break; - } - } - - switch(tcv) { - case XCT_BOTH: - break; /* No CHOICE? */ - case XCT_CLOSING: - if(ctx->phase != 3) - break; - XER_ADVANCE(ch_size); - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - if(ctx->phase != 1) - break; /* Really unexpected */ - - /* - * Search which inner member corresponds to this tag. - */ - for(edx = 0; edx < td->elements_count; edx++) { - elm = &td->elements[edx]; - tcv = xer_check_tag(buf_ptr,ch_size,elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - edx = td->elements_count; - break; /* Phase out */ - } - break; - } - if(edx != td->elements_count) - continue; - - /* It is expected extension */ - if(specs->ext_start != -1) { - ASN_DEBUG("Got anticipated extension"); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - ctx->phase = 3; /* Terminating */ - } else { - ctx->left = 1; - ctx->phase = 4; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" - " (ph=%d, tag=%s)", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - td->name, ctx->phase, xml_tag); - break; - } - - ctx->phase = 5; /* Phase out, just in case */ - RETURN(RC_FAIL); -} - - -asn_enc_rval_t -CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - unsigned present = 0; - - if(!sptr) - ASN__ENCODE_FAILED; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr = NULL; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - er.encoded = 0; - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + 1, flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_dec_rval_t -CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted */ - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) { - ASN_DEBUG("CHOICE presence from wire %d", value); - value = specs->from_canonical_order[value]; - ASN_DEBUG("CHOICE presence index effective %d", value); - } - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct; - const void *memb_ptr; - unsigned present; - int present_enc; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present_enc = specs->to_canonical_order[present]; - else - present_enc = present; - - if(ct && ct->range_bits >= 0) { - if(present_enc < ct->lower_bound - || present_enc > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG( - "CHOICE member %d (enc %d) is an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 1, 1)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - ct = 0; - } - } - if(ct && ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 0, 1)) - ASN__ENCODE_FAILED; - } - - - elm = &td->elements[present]; - ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, - present_enc); - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, present_enc, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) ASN__ENCODE_FAILED; - if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) - ASN__ENCODE_FAILED; - if(uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -asn_dec_rval_t -CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - const asn_per_constraint_t *ext_ct = NULL; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) { - ext_ct = ct; - ct = 0; /* Not restricted */ - } - } - - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = aper_get_nsnnwn(pd, ext_ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) - value = specs->from_canonical_order[value]; - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = aper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct = NULL; - const asn_per_constraint_t *ext_ct = NULL; - const void *memb_ptr; - unsigned present; - int present_enc; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = NULL; - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present <= 0 || (unsigned)present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present_enc = specs->to_canonical_order[present]; - else - present_enc = present; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - if(ct && (ct->range_bits >= 0)) { - // Value is not within the range of the primary values ? - if(present < ct->lower_bound || present > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG("CHOICE member %d (enc %d) is an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - // X691/23.5 Extension marker = 1 - if(per_put_few_bits(po, 1, 1)) { - ASN__ENCODE_FAILED; - } - } else { - ASN__ENCODE_FAILED; - } - // no more need of constraint. - ext_ct = ct; - ct = NULL; - } - } - - if(ct && (ct->flags & APC_EXTENSIBLE)) { - ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", - present, present, ct->lower_bound, ct->upper_bound); - // X691.23.5 Extension marker = 0 - if(per_put_few_bits(po, 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && (ct->range_bits >= 0)) { - // By construction (ct != 0), the alternative value is a non extended one. - // X691/23.7 X691/23.6 alternative value encoded as a range_bits bits value. - if(per_put_few_bits(po, present_enc, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) - ASN__ENCODE_FAILED; - // X691/23.8 normally encoded as a small non negative whole number - - if(ext_ct && aper_put_nsnnwn(po, ext_ct->range_bits, present_enc - specs->ext_start)) - ASN__ENCODE_FAILED; - if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -int -CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - /* - * Print that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Print member's name and stuff */ - if(0) { - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - } - - return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, - cb, app_key); - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as CHOICE", td->name); - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - /* - * Free that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)ptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)ptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } -} - - -/* - * The following functions functions offer protection against -fshort-enums, - * compatible with little- and big-endian machines. - * If assertion is triggered, either disable -fshort-enums, or add an entry - * here with the ->pres_size of your target stracture. - * Unless the target structure is packed, the ".present" member - * is guaranteed to be aligned properly. ASN.1 compiler itself does not - * produce packed code. - */ -static unsigned -_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, - unsigned pres_size) { - const void *present_ptr; - unsigned present; - - present_ptr = ((const char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): present = *(const unsigned int *)present_ptr; break; - case sizeof(short): present = *(const unsigned short *)present_ptr; break; - case sizeof(char): present = *(const unsigned char *)present_ptr; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - return 0; /* If not aborted, pass back safe value */ - } - - return present; -} - -static void -_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, - unsigned present) { - void *present_ptr; - present_ptr = ((char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): *(unsigned int *)present_ptr = present; break; - case sizeof(short): *(unsigned short *)present_ptr = present; break; - case sizeof(char): *(unsigned char *)present_ptr = present; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - } -} - -static const void * -_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_TYPE_member_t **elm_ptr, unsigned *present_out) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - *elm_ptr = NULL; - *present_out = 0; - return NULL; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - *present_out = present; - - /* - * The presence index is intentionally 1-based to avoid - * treating zeroed structure as a valid one. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *const elm = &td->elements[present - 1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - *elm_ptr = elm; - return memb_ptr; - } else { - *elm_ptr = NULL; - return NULL; - } - -} - -int -CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - asn_TYPE_member_t *aelm; - asn_TYPE_member_t *belm; - unsigned apresent = 0; - unsigned bpresent = 0; - const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); - const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); - - if(amember && bmember) { - if(apresent == bpresent) { - assert(aelm == belm); - return aelm->type->op->compare_struct(aelm->type, amember, bmember); - } else if(apresent < bpresent) { - return -1; - } else { - return 1; - } - } else if(!amember) { - return -1; - } else { - return 1; - } -} - -/* - * Return the 1-based choice variant presence index. - * Returns 0 in case of error. - */ -unsigned -CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); -} - -/* - * Sets or resets the 1-based choice variant presence index. - * In case a previous index is not zero, the currently selected structure - * member is freed and zeroed-out first. - * Returns 0 on success and -1 on error. - */ -int -CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, - unsigned present) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned old_present; - - if(!sptr) { - return -1; - } - - if(present > td->elements_count) - return -1; - - old_present = - _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - if(present == old_present) - return 0; - - if(old_present != 0) { - assert(old_present <= td->elements_count); - ASN_STRUCT_RESET(*td, sptr); - } - - _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); - - return 0; -} - - -asn_random_fill_result_t -CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_random_fill_result_t res; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm; - unsigned present; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *st = *sptr; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - present = asn_random_between(1, td->elements_count); - elm = &td->elements[present - 1]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - res = elm->type->op->random_fill(elm->type, memb_ptr2, - &elm->encoding_constraints, max_length); - _set_present_idx(st, specs->pres_offset, specs->pres_size, present); - if(res.code == ARFILL_OK) { - *sptr = st; - } else { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - } - - return res; -} - - -asn_TYPE_operation_t asn_OP_CHOICE = { - CHOICE_free, - CHOICE_print, - CHOICE_compare, - CHOICE_decode_ber, - CHOICE_encode_der, - CHOICE_decode_xer, - CHOICE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - CHOICE_decode_oer, - CHOICE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - CHOICE_decode_uper, - CHOICE_encode_uper, - CHOICE_decode_aper, - CHOICE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - CHOICE_random_fill, - CHOICE_outmost_tag -}; diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.h deleted file mode 100644 index a1999ed..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE_oer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE_oer.c deleted file mode 100644 index a4c591c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_CHOICE_oer.c +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t rval; \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - return rval; \ - } while(0) - -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) \ - do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#undef SET_PHASE -#define SET_PHASE(ctx, value) \ - do { \ - ctx->phase = value; \ - ctx->step = 0; \ - } while(0) - -/* - * Tags are canonically sorted in the tag to member table. - */ -static int -_search4tag(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) - return 0; - else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - -/* - * X.696 (08/2015) #8.7 Encoding of tags - */ -static ssize_t -oer_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { - ber_tlv_tag_t val; - ber_tlv_tag_t tclass; - size_t skipped; - - if(size == 0) - return 0; - - val = *(const uint8_t *)ptr; - tclass = (val >> 6); - if((val & 0x3F) != 0x3F) { - /* #8.7.1 */ - *tag_r = ((val & 0x3F) << 2) | tclass; - return 1; - } - - /* - * Each octet contains 7 bits of useful information. - * The MSB is 0 if it is the last octet of the tag. - */ - for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; skipped <= size; - ptr = ((const char *)ptr) + 1, skipped++) { - unsigned int oct = *(const uint8_t *)ptr; - if(oct & 0x80) { - val = (val << 7) | (oct & 0x7F); - /* - * Make sure there are at least 9 bits spare - * at the MS side of a value. - */ - if(val >> ((8 * sizeof(val)) - 9)) { - /* - * We would not be able to accomodate - * any more tag bits. - */ - return -1; - } - } else { - val = (val << 7) | oct; - *tag_r = (val << 2) | tclass; - return skipped; - } - } - - return 0; /* Want more */ -} - -asn_dec_rval_t -CHOICE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **struct_ptr, - const void *ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - (void)constraints; - - ASN_DEBUG("Decoding %s as CHOICE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - switch(ctx->phase) { - case 0: { - /* - * Discover the tag. - */ - ber_tlv_tag_t tlv_tag; /* T from TLV */ - ssize_t tag_len; /* Length of TLV's T */ - - tag_len = oer_fetch_tag(ptr, size, &tlv_tag); - switch(tag_len) { - case 0: - ASN__DECODE_STARVED; - case -1: - ASN__DECODE_FAILED; - } - - do { - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key = {0, 0, 0, 0}; - key.el_tag = tlv_tag; - - t2m = (const asn_TYPE_tag2member_t *)bsearch( - &key, specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _search4tag); - if(t2m) { - /* - * Found the element corresponding to the tag. - */ - NEXT_PHASE(ctx); - ctx->step = t2m->el_no; - break; - } else if(specs->ext_start == -1) { - ASN_DEBUG( - "Unexpected tag %s " - "in non-extensible CHOICE %s", - ber_tlv_tag_string(tlv_tag), td->name); - RETURN(RC_FAIL); - } else { - /* Skip open type extension */ - ASN_DEBUG( - "Not implemented skipping open type extension for tag %s", - ber_tlv_tag_string(tlv_tag)); - RETURN(RC_FAIL); - } - } while(0); - - - ADVANCE(tag_len); - } - /* Fall through */ - case 1: { - asn_TYPE_member_t *elm = &elements[ctx->step]; /* CHOICE's element */ - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - asn_dec_rval_t rval = {0,0}; - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Set presence to be able to free it properly at any time */ - (void)CHOICE_variant_set_presence(td, st, ctx->step + 1); - - if(specs->ext_start >= 0 && specs->ext_start <= ctx->step) { - ssize_t got = - oer_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, - memb_ptr2, ptr, size); - if(got < 0) ASN__DECODE_FAILED; - if(got == 0) ASN__DECODE_STARVED; - rval.code = RC_OK; - rval.consumed = got; - } else { - rval = elm->type->op->oer_decoder( - opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, - size); - } - rval.consumed += consumed_myself; - switch(rval.code) { - case RC_OK: - NEXT_PHASE(ctx); - case RC_WMORE: - break; - case RC_FAIL: - SET_PHASE(ctx, 3); /* => 3 */ - } - return rval; - } - case 2: - /* Already decoded everything */ - RETURN(RC_OK); - case 3: - /* Failed to decode, after all */ - RETURN(RC_FAIL); - } - - RETURN(RC_FAIL); -} - -/* - * X.696 (08/2015) #8.7 Encoding of tags - */ -static ssize_t -oer_put_tag(ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { - uint8_t tclass = BER_TAG_CLASS(tag); - ber_tlv_tag_t tval = BER_TAG_VALUE(tag); - - if(tval < 0x3F) { - uint8_t b = (uint8_t)((tclass << 6) | tval); - if(cb(&b, 1, app_key) < 0) { - return -1; - } - return 1; - } else { - uint8_t buf[1 + 2 * sizeof(tval)]; - uint8_t *b = &buf[sizeof(buf)-1]; /* Last addressable */ - size_t encoded; - for(; ; tval >>= 7) { - if(tval >> 7) { - *b-- = 0x80 | (tval & 0x7f); - } else { - *b-- = tval & 0x7f; - break; - } - } - *b = (uint8_t)((tclass << 6) | 0x3F); - encoded = sizeof(buf) - (b - buf); - if(cb(b, encoded, app_key) < 0) { - return -1; - } - return encoded; - } - -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -CHOICE_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE element */ - unsigned present; - const void *memb_ptr; - ber_tlv_tag_t tag; - ssize_t tag_len; - asn_enc_rval_t er = {0, 0, 0}; - - (void)constraints; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("OER %s encoding as CHOICE", td->name); - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN_DEBUG("CHOICE %s member is not selected", td->name); - ASN__ENCODE_FAILED; - } - - elm = &td->elements[present-1]; - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(memb_ptr == 0) { - /* Mandatory element absent */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - tag = asn_TYPE_outmost_tag(elm->type, memb_ptr, elm->tag_mode, elm->tag); - if(tag == 0) { - ASN__ENCODE_FAILED; - } - - tag_len = oer_put_tag(tag, cb, app_key); - if(tag_len < 0) { - ASN__ENCODE_FAILED; - } - - if(specs->ext_start >= 0 && (unsigned)specs->ext_start <= (present-1)) { - ssize_t encoded = oer_open_type_put(elm->type, - elm->encoding_constraints.oer_constraints, - memb_ptr, cb, app_key); - if(encoded < 0) ASN__ENCODE_FAILED; - er.encoded = tag_len + encoded; - } else { - er = elm->type->op->oer_encoder( - elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, - app_key); - if(er.encoded >= 0) er.encoded += tag_len; - } - - return er; -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.c deleted file mode 100644 index 43dcac7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.c +++ /dev/null @@ -1,2059 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * Check whether we are inside the extensions group. - */ -#define IN_EXTENSION_GROUP(specs, memb_idx) \ - ((specs)->first_extension >= 0 \ - && (unsigned)(specs)->first_extension <= (memb_idx)) - -/* - * Tags are canonically sorted in the tag2element map. - */ -static int -_t2e_cmp(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) { - if(a->el_no > b->el_no) - return 1; - /* - * Important: we do not check - * for a->el_no <= b->el_no! - */ - return 0; - } else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - - -/* - * The decoder of the SEQUENCE type. - */ -asn_dec_rval_t -SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* SEQUENCE element's index */ - - ASN_DEBUG("Decoding %s as SEQUENCE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next member from the list of - * this structure's elements. - * (ctx->step) stores the member being processed - * between invocations and the microphase {0,1} of parsing - * that member: - * step = ( * 2 + ). - */ - for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; - edx++, ctx->step = (ctx->step & ~1) + 2) { - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - ssize_t tag_len; /* Length of TLV's T */ - size_t opt_edx_end; /* Next non-optional element */ - size_t n; - int use_bsearch; - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" - " opt=%d ec=%d", - td->name, (int)ctx->left, edx, - elements[edx].flags, elements[edx].optional, - td->elements_count); - - if(ctx->left == 0 /* No more stuff is expected */ - && ( - /* Explicit OPTIONAL specification reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx))) { - ASN_DEBUG("End of SEQUENCE %s", td->name); - /* - * Found the legitimate end of the structure. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " - "(%s) is %s encoded in %d bytes, of frame %ld", - td->name, edx, elements[edx].name, - ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) { - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } else if(((const uint8_t *)ptr)[1] == 0) { - ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, - elements[edx].optional, td->elements_count); - if((edx + elements[edx].optional == td->elements_count) - || IN_EXTENSION_GROUP(specs, edx)) { - /* - * Yeah, baby! Found the terminator - * of the indefinite length structure. - */ - /* - * Proceed to the canonical - * finalization function. - * No advancing is necessary. - */ - goto phase3; - } - } - } - - /* - * Find the next available type with this tag. - */ - use_bsearch = 0; - opt_edx_end = edx + elements[edx].optional + 1; - if(opt_edx_end > td->elements_count) - opt_edx_end = td->elements_count; /* Cap */ - else if(opt_edx_end - edx > 8) { - /* Limit the scope of linear search... */ - opt_edx_end = edx + 8; - use_bsearch = 1; - /* ... and resort to bsearch() */ - } - for(n = edx; n < opt_edx_end; n++) { - if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { - /* - * Found element corresponding to the tag - * being looked at. - * Reposition over the right element. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].flags & ATF_ANY_TYPE) { - /* - * This is the ANY type, which may bear - * any flag whatsoever. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].tag == (ber_tlv_tag_t)-1) { - use_bsearch = 1; - break; - } - } - if(use_bsearch) { - /* - * Resort to a binary search over - * sorted array of tags. - */ - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key = {0, 0, 0, 0}; - key.el_tag = tlv_tag; - key.el_no = edx; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _t2e_cmp); - if(t2m) { - const asn_TYPE_tag2member_t *best = 0; - const asn_TYPE_tag2member_t *t2m_f, *t2m_l; - size_t edx_max = edx + elements[edx].optional; - /* - * Rewind to the first element with that tag, - * `cause bsearch() does not guarantee order. - */ - t2m_f = t2m + t2m->toff_first; - t2m_l = t2m + t2m->toff_last; - for(t2m = t2m_f; t2m <= t2m_l; t2m++) { - if(t2m->el_no > edx_max) break; - if(t2m->el_no < edx) continue; - best = t2m; - } - if(best) { - edx = best->el_no; - ctx->step = 1 + 2 * edx; - goto microphase2; - } - } - n = opt_edx_end; - } - if(n == opt_edx_end) { - /* - * If tag is unknown, it may be either - * an unknown (thus, incorrect) tag, - * or an extension (...), - * or an end of the indefinite-length structure. - */ - if(!IN_EXTENSION_GROUP(specs, - edx + elements[edx].optional)) { - ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - ASN_DEBUG("Expected tag %s (%s)%s", - ber_tlv_tag_string(elements[edx].tag), - elements[edx].name, - elements[edx].optional - ?" or alternatives":""); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - edx += elements[edx].optional; - - ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - ASN_DEBUG("Skip length %d in %s", - (int)skip, td->name); - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - ctx->step -= 2; - edx--; - continue; /* Try again with the next tag */ - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elements[edx].flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elements[edx].memb_offset; - memb_ptr2 = &memb_ptr; - } - /* - * Invoke the member fetch routine according to member's type - */ - if(elements[edx].flags & ATF_OPEN_TYPE) { - rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); - } else { - rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, - elements[edx].type, - memb_ptr2, ptr, LEFT, - elements[edx].tag_mode); - } - ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " - "in %d bytes rval.code %d, size=%d", - td->name, edx, elements[edx].type->name, - (int)LEFT, (int)rval.consumed, rval.code, (int)size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", - (long)ctx->left, (long)size); - /* Fall through */ - case RC_FAIL: /* Fatal error */ - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all structure members) */ - - phase3: - ctx->phase = 3; - /* Fall through */ - case 3: /* 00 and other tags expected */ - case 4: /* only 00's expected */ - - ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", - td->name, (long)ctx->left, (long)size); - - /* - * Skip everything until the end of the SEQUENCE. - */ - while(ctx->left) { - ssize_t tl, ll; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * If expected <0><0>... - */ - if(ctx->left < 0 - && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - ctx->phase = 4; - continue; - } - } - - if(!IN_EXTENSION_GROUP(specs, td->elements_count) - || ctx->phase == 4) { - ASN_DEBUG("Unexpected continuation " - "of a non-extensible type " - "%s (SEQUENCE): %s", - td->name, - ber_tlv_tag_string(tlv_tag)); - RETURN(RC_FAIL); - } - - ll = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tl, LEFT - tl); - switch(ll) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(tl + ll); - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - - -/* - * The DER encoder of the SEQUENCE type. - */ -asn_enc_rval_t -SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t computed_size = 0; - asn_enc_rval_t erval = {0,0,0}; - ssize_t ret; - size_t edx; - - ASN_DEBUG("%s %s as SEQUENCE", - cb?"Encoding":"Estimating", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", - edx, elm->name, (long)erval.encoded); - } - - /* - * Encode the TLV for the sequence itself. - */ - ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); - if(ret == -1) - ASN__ENCODE_FAILED; - erval.encoded = computed_size + ret; - - if(!cb) ASN__ENCODED_OK(erval); - - /* - * Encode all members. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - asn_enc_rval_t tmperval = {0,0,0}; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) continue; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, cb, app_key); - if(tmperval.encoded == -1) - return tmperval; - computed_size -= tmperval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", - edx, elm->name, td->name, (long)tmperval.encoded); - } - - if(computed_size != 0) - /* - * Encoded size is not equal to the computed size. - */ - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(erval); -} - - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) \ - do { \ - size_t num = (num_bytes); \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Skipping unknown extensions. - * Phase 4: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 3;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the inner member of a sequence. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr_dontuse; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr_dontuse = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ - } - - if(elm->flags & ATF_OPEN_TYPE) { - tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); - } else { - /* Invoke the inner type decoder, m.b. multiple times */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - ptr, size); - } - XER_ADVANCE(tmprval.consumed); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 1; /* Back to body processing */ - ctx->step = ++edx; - ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", - ctx->phase, ctx->step); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", - tcv, ctx->phase, xml_tag); - - /* Skip the extensions section */ - if(ctx->phase == 3) { - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 4; - RETURN(RC_FAIL); - case 0: - XER_ADVANCE(ch_size); - continue; - case 1: - XER_ADVANCE(ch_size); - ctx->phase = 1; - continue; - case 2: - ctx->phase = 1; - break; - } - } - - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - if(edx >= td->elements_count || - /* Explicit OPTIONAL specs reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx)) { - XER_ADVANCE(ch_size); - ctx->phase = 4; /* Phase out */ - RETURN(RC_OK); - } else { - ASN_DEBUG("Premature end of XER SEQUENCE"); - RETURN(RC_FAIL); - } - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", - tcv, ctx->phase, edx); - if(ctx->phase != 1) { - break; /* Really unexpected */ - } - - if(edx < td->elements_count) { - /* - * Search which member corresponds to this tag. - */ - size_t n; - size_t edx_end = edx + elements[edx].optional + 1; - if(edx_end > td->elements_count) - edx_end = td->elements_count; - for(n = edx; n < edx_end; n++) { - elm = &td->elements[n]; - tcv = xer_check_tag(ptr, ch_size, elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx = n; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - n = edx_end; - break; /* Phase out */ - } - break; - } - if(n != edx_end) - continue; - } else { - ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", - edx, td->elements_count); - } - - /* It is expected extension */ - if(IN_EXTENSION_GROUP(specs, - edx + (edx < td->elements_count - ? elements[edx].optional : 0))) { - ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", - edx); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - } else { - ctx->left = 1; - ctx->phase = 3; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", - size>0?((const char *)ptr)[0]:'.', - size>1?((const char *)ptr)[1]:'.', - size>2?((const char *)ptr)[2]:'.', - size>3?((const char *)ptr)[3]:'.', - size>4?((const char *)ptr)[4]:'.', - size>5?((const char *)ptr)[5]:'.'); - break; - } - - ctx->phase = 4; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - -asn_enc_rval_t -SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - int xcan = (flags & XER_F_CANONICAL); - asn_TYPE_descriptor_t *tmp_def_val_td = 0; - void *tmp_def_val = 0; - size_t edx; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - assert(tmp_def_val == 0); - if(elm->default_value_set) { - if(elm->default_value_set(&tmp_def_val)) { - ASN__ENCODE_FAILED; - } else { - memb_ptr = tmp_def_val; - tmp_def_val_td = elm->type; - } - } else if(elm->optional) { - continue; - } else { - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - /* Print the member itself */ - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmp_def_val) { - ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - tmp_def_val = 0; - } - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - ASN__ENCODE_FAILED; -} - -int -SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t edx; - int ret; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) continue; - /* Print line */ - /* Fall through */ - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Indentation */ - _i_INDENT(1); - - /* Print the member's name and stuff */ - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - - /* Print the member itself */ - ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, - cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - size_t edx; - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_struct_ctx_t *ctx; /* Decoder context */ - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as SEQUENCE", td->name); - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - /* Clean parsing context */ - ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); - FREEMEM(ctx->ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset( - sptr, 0, - ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); - break; - } -} - -int -SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t edx; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Iterate over structure members and check their validity. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - continue; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - if(ret) return ret; - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; - edx < (specs->first_extension < 0 ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - assert(!IN_EXTENSION_GROUP(specs, edx)); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = uper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, (long)bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, - *memb_ptr2); - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: break; - case 0: continue; - default: - if(uper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - ASN_DEBUG("Skipped overflow extension"); - continue; - } - break; - } - - FREEMEM(epres); - } - - if(specs->first_extension >= 0) { - unsigned i; - /* Fill DEFAULT members in extensions */ - for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; - i++) { - asn_TYPE_member_t *elm; - void **memb_ptr2; /* Pointer to member pointer */ - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) { - return -1; - } - /* Encode as open type field */ - if(po2 && present - && uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - *memb_ptr2, po2)) - return -1; - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(*memb_ptr2) == 0) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, - po); - if(er.encoded == -1) return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of extensions %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(uper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ -#if 0 - int padding; -#endif - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } -#if 0 - /* Get Padding */ - padding = (8 - (pd->moved % 8)) % 8; - if(padding > 0) - ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); -#if 0 /* old way of removing padding */ - per_get_few_bits(pd, padding); -#else /* Experimental fix proposed by @mhanna123 */ - if(edx != (td->elements_count-1)) - per_get_few_bits(pd, padding); - else { - if(specs->roms_count && (padding > 0)) - ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); - else - per_get_few_bits(pd, padding); - } -#endif /* dealing with padding */ -#endif - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = aper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) - ASN__DECODE_STARVED; - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%ld is not extension", edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); - rv = aper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: - break; - case 0: - continue; - default: - if(aper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - } - break; - } - - FREEMEM(epres); - } - - /* Fill DEFAULT members in extensions */ - for(edx = specs->roms_count; edx < specs->roms_count - + specs->aoms_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void **memb_ptr2; /* Pointer to member pointer */ - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s (@%ld) present => %d", - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) - return -1; - /* Encode as open type field */ - if(po2 && present && aper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) - return -1; - - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(memb_ptr2) == 1) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %ld not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) - continue; - - ASN_DEBUG("Encoding %s->%s", td->name, elm->name); - er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - *memb_ptr2, po); - if(er.encoded == -1) - return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(aper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - size_t edx; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *amemb; - const void *bmemb; - int ret; - - if(elm->flags & ATF_POINTER) { - amemb = - *(const void *const *)((const char *)aptr + elm->memb_offset); - bmemb = - *(const void *const *)((const char *)bptr + elm->memb_offset); - if(!amemb) { - if(!bmemb) continue; - if(elm->default_value_cmp - && elm->default_value_cmp(bmemb) == 0) { - /* A is absent, but B is present and equal to DEFAULT */ - continue; - } - return -1; - } else if(!bmemb) { - if(elm->default_value_cmp - && elm->default_value_cmp(amemb) == 0) { - /* B is absent, but A is present and equal to DEFAULT */ - continue; - } - return 1; - } - } else { - amemb = (const void *)((const char *)aptr + elm->memb_offset); - bmemb = (const void *)((const char *)bptr + elm->memb_offset); - } - - ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); - if(ret != 0) return ret; - } - - return 0; -} - -asn_TYPE_operation_t asn_OP_SEQUENCE = { - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_compare, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_decode_oer, - SEQUENCE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_decode_uper, - SEQUENCE_encode_uper, - SEQUENCE_decode_aper, - SEQUENCE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - void *st = *sptr; - size_t edx; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - for(edx = 0; edx < td->elements_count; edx++) { - const asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - asn_random_fill_result_t tmpres; - - if(elm->optional && asn_random_between(0, 4) == 2) { - /* Sometimes decide not to fill the optional value */ - continue; - } - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - tmpres = elm->type->op->random_fill( - elm->type, memb_ptr2, &elm->encoding_constraints, - max_length > result_ok.length ? max_length - result_ok.length : 0); - switch(tmpres.code) { - case ARFILL_OK: - result_ok.length += tmpres.length; - continue; - case ARFILL_SKIPPED: - assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); - continue; - case ARFILL_FAILED: - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return tmpres; - } - } - - *sptr = st; - - return result_ok; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.h deleted file mode 100644 index a22ed3a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_OF.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_OF.c deleted file mode 100644 index 10f18cf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_OF.c +++ /dev/null @@ -1,358 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The DER encoder of the SEQUENCE OF type. - */ -asn_enc_rval_t -SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - asn_enc_rval_t erval = {0,0,0}; - int edx; - - ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - } - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, - cb, app_key); - if(encoding_size == -1) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - return erval; - } - - computed_size += encoding_size; - if(!cb) { - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - cb, app_key); - if(erval.encoded == -1) - return erval; - encoding_size += erval.encoded; - } - - if(computed_size != (size_t)encoding_size) { - /* - * Encoded size is not equal to the computed size. - */ - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - } else { - erval.encoded = computed_size; - erval.structure_ptr = 0; - erval.failed_type = 0; - } - - return erval; -} - -asn_enc_rval_t -SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 - : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_enc_rval_t -SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - const asn_TYPE_member_t *elm = td->elements; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, - po); - if(er.encoded == -1) ASN__ENCODE_FAILED; - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - ASN__ENCODED_OK(er); -} - -asn_enc_rval_t -SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - asn_TYPE_member_t *elm = td->elements; - int seq; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = (list->count < ct->lower_bound - || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", - ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) - ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) - ASN__ENCODE_FAILED; - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ -/* if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; -*/ - if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) - ASN__ENCODE_FAILED; - } - - for(seq = -1; seq < list->count;) { - ssize_t mayEncode; - if(seq < 0) seq = 0; - if(ct && ct->effective_bits >= 0) { - mayEncode = list->count; - } else { - mayEncode = aper_put_length(po, -1, list->count - seq); - if(mayEncode < 0) ASN__ENCODE_FAILED; - } - - while(mayEncode--) { - void *memb_ptr = list->array[seq++]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->aper_encoder(elm->type, - elm->encoding_constraints.per_constraints, memb_ptr, po); - if(er.encoded == -1) - ASN__ENCODE_FAILED; - } - } - - ASN__ENCODED_OK(er); -} -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); - const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); - ssize_t idx; - - if(a && b) { - ssize_t common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, a->array[idx], b->array[idx]); - if(ret) return ret; - } - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { - SEQUENCE_OF_free, - SEQUENCE_OF_print, - SEQUENCE_OF_compare, - SEQUENCE_OF_decode_ber, - SEQUENCE_OF_encode_der, - SEQUENCE_OF_decode_xer, - SEQUENCE_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ - SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ - SEQUENCE_OF_encode_uper, - SEQUENCE_OF_decode_aper, - SEQUENCE_OF_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_OF.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_OF.h deleted file mode 100644 index 6857f0f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_OF.h +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_oer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_oer.c deleted file mode 100644 index ecb589c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SEQUENCE_oer.c +++ /dev/null @@ -1,561 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include -#include - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) \ - do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) - -/* - * Check whether we are inside the extensions group. - */ -#define IN_EXTENSION_GROUP(specs, memb_idx) \ - ((specs)->first_extension >= 0 \ - && (unsigned)(specs)->first_extension <= (memb_idx)) - -#define IN_ROOT_GROUP_PRED(edx) \ - edx < (specs->first_extension < 0 ? td->elements_count \ - : (size_t)specs->first_extension) - -#define FOR_IN_ROOT_GROUP(edx) for(edx = 0; IN_ROOT_GROUP_PRED(edx); edx++) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * Return pointer to a member. - */ -static void ** -element_ptrptr(void *struct_ptr, asn_TYPE_member_t *elm, void **tmp_save_ptr) { - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - return (void **)((char *)struct_ptr + elm->memb_offset); - } else { - assert(tmp_save_ptr); - *tmp_save_ptr = (void *)((char *)struct_ptr + elm->memb_offset); - return tmp_save_ptr; - } -} - -static const void * -element_ptr(const void *struct_ptr, const asn_TYPE_member_t *elm) { - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - return *(const void *const *)((const char *)struct_ptr - + elm->memb_offset); - } else { - return (const void *)((const char *)struct_ptr + elm->memb_offset); - } -} - -asn_dec_rval_t -SEQUENCE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **struct_ptr, - const void *ptr, size_t size) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_dec_rval_t rval = {RC_OK, 0}; - void *st = *struct_ptr; /* Target structure */ - asn_struct_ctx_t *ctx; /* Decoder context */ - size_t consumed_myself = 0; /* Consumed bytes from ptr. */ - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously. - */ - switch(ctx->phase) { - case 0: { - /* - * Fetch preamble. - */ - asn_bit_data_t *preamble; - int has_extensions_bit = (specs->first_extension >= 0); - size_t preamble_bits = (has_extensions_bit + specs->roms_count); - size_t preamble_bytes = ((7 + preamble_bits) >> 3); - - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 0", td->name); - - ASN_DEBUG( - "Expecting preamble bits %" ASN_PRI_SIZE " for %s (including %d extension bits)", - preamble_bits, td->name, has_extensions_bit); - - if(preamble_bytes > size) { - ASN__DECODE_STARVED; - } - - preamble = asn_bit_data_new_contiguous(ptr, preamble_bits); - if(!preamble) { - RETURN(RC_FAIL); - } - preamble->nboff = has_extensions_bit; - ctx->ptr = preamble; - ADVANCE(preamble_bytes); - } - NEXT_PHASE(ctx); - /* FALL THROUGH */ - case 1: { - /* Decode components of the extension root */ - asn_bit_data_t *preamble = ctx->ptr; - size_t edx; - - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 1 (Root)", td->name); - - assert(preamble); - - for(edx = (ctx->step >> 1); IN_ROOT_GROUP_PRED(edx); - edx++, ctx->step = (ctx->step & ~1) + 2) { - asn_TYPE_member_t *elm = &td->elements[edx]; - - ASN_DEBUG("Decoding %s->%s", td->name, elm->name); - - assert(!IN_EXTENSION_GROUP(specs, edx)); - - if(ctx->step & 1) { - goto microphase2_decode_continues; - } - - - if(elm->optional) { - int32_t present = asn_get_few_bits(preamble, 1); - if(present < 0) { - ASN_DEBUG("Presence map ended prematurely: %d", present); - RETURN(RC_FAIL); - } else if(present == 0) { - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - void *tmp; - if(elm->default_value_set( - element_ptrptr(st, elm, &tmp))) { - RETURN(RC_FAIL); - } - } - /* The member is not present. */ - continue; - } - /* Present OPTIONAL or DEFAULT component. */ - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2_decode_continues: - if(elm->flags & ATF_OPEN_TYPE) { - rval = OPEN_TYPE_oer_get(opt_codec_ctx, td, st, elm, ptr, size); - } else { - void *save_memb_ptr; /* Temporary reference. */ - void **memb_ptr2; /* Pointer to a pointer to a memmber */ - - memb_ptr2 = element_ptrptr(st, elm, &save_memb_ptr); - - rval = elm->type->op->oer_decoder( - opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, - size); - } - switch(rval.code) { - case RC_OK: - ADVANCE(rval.consumed); - break; - case RC_WMORE: - ASN_DEBUG("More bytes needed at element %s \"%s\"", td->name, - elm->name); - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - case RC_FAIL: - ASN_DEBUG("Decoding failed at element %s \"%s\"", td->name, - elm->name); - RETURN(RC_FAIL); - } - } /* for(all root members) */ - - } - NEXT_PHASE(ctx); - /* FALL THROUGH */ - case 2: - assert(ctx->ptr); - { - /* Cleanup preamble. */ - asn_bit_data_t *preamble = ctx->ptr; - asn_bit_data_t *extadds; - int has_extensions_bit = (specs->first_extension >= 0); - int extensions_present = - has_extensions_bit - && (preamble->buffer == NULL - || (((const uint8_t *)preamble->buffer)[0] & 0x80)); - uint8_t unused_bits; - size_t len = 0; - ssize_t len_len; - - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 2", td->name); - - preamble->buffer = 0; /* Will do extensions_present==1 next time. */ - - if(!extensions_present) { - ctx->phase = 10; - RETURN(RC_OK); - } - - /* - * X.696 (08/2015) #16.1 (c), #16.4 - * Read in the extension addition presence bitmap. - */ - - len_len = oer_fetch_length(ptr, size, &len); - if(len_len > 0) { - ADVANCE(len_len); - } else if(len_len < 0) { - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - - if(len == 0) { - /* 16.4.1-2 */ - RETURN(RC_FAIL); - } else if(len > size) { - RETURN(RC_WMORE); - } - - /* Account for unused bits */ - unused_bits = 0x7 & *(const uint8_t *)ptr; - ADVANCE(1); - len--; - if(unused_bits && len == 0) { - RETURN(RC_FAIL); - } - - /* Get the extensions map */ - extadds = asn_bit_data_new_contiguous(ptr, len * 8 - unused_bits); - if(!extadds) { - RETURN(RC_FAIL); - } - FREEMEM(preamble); - ctx->ptr = extadds; - ADVANCE(len); - } - NEXT_PHASE(ctx); - ctx->step = - (specs->first_extension < 0 ? td->elements_count - : (size_t)specs->first_extension); - /* Fall through */ - case 3: - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 3 (Extensions)", td->name); - for(; ctx->step < (signed)td->elements_count; ctx->step++) { - asn_bit_data_t *extadds = ctx->ptr; - size_t edx = ctx->step; - asn_TYPE_member_t *elm = &td->elements[edx]; - void *tmp_memb_ptr; - void **memb_ptr2 = element_ptrptr(st, elm, &tmp_memb_ptr); - - switch(asn_get_few_bits(extadds, 1)) { - case -1: - /* - * Not every one of our extensions is known to the remote side. - * Continue filling in their defaults though. - */ - /* Fall through */ - case 0: - /* Fill-in DEFAULT */ - if(elm->default_value_set - && elm->default_value_set(memb_ptr2)) { - RETURN(RC_FAIL); - } - continue; - case 1: { - /* Read OER open type */ - ssize_t ot_size = - oer_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, - memb_ptr2, ptr, size); - assert(ot_size <= (ssize_t)size); - if(ot_size > 0) { - ADVANCE(ot_size); - } else if(ot_size < 0) { - RETURN(RC_FAIL); - } else { - /* Roll back open type parsing */ - asn_get_undo(extadds, 1); - RETURN(RC_WMORE); - } - break; - } - default: - RETURN(RC_FAIL); - } - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 4: - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 4", td->name); - /* Read in the rest of Open Types while ignoring them */ - for(;;) { - asn_bit_data_t *extadds = ctx->ptr; - switch(asn_get_few_bits(extadds, 1)) { - case 0: - continue; - case 1: { - ssize_t skipped = oer_open_type_skip(ptr, size); - if(skipped > 0) { - ADVANCE(skipped); - } else if(skipped < 0) { - RETURN(RC_FAIL); - } else { - asn_get_undo(extadds, 1); - RETURN(RC_WMORE); - } - continue; - } - case -1: - /* No more Open Type encoded components */ - break; - default: - RETURN(RC_FAIL); - } - break; - } - } - - RETURN(RC_OK); -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -SEQUENCE_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - size_t computed_size = 0; - int has_extensions_bit = (specs->first_extension >= 0); - size_t preamble_bits = (has_extensions_bit + specs->roms_count); - uint32_t has_extensions = 0; - size_t edx; - int ret; - - (void)constraints; - - if(preamble_bits) { - asn_bit_outp_t preamble; - - memset(&preamble, 0, sizeof(preamble)); - preamble.output = cb; - preamble.op_key = app_key; - - if(has_extensions_bit) { - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr = element_ptr(sptr, elm); - if(memb_ptr) { - if(elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - /* Do not encode default values in extensions */ - } else { - has_extensions = 1; - break; - } - } - } - ret = asn_put_few_bits(&preamble, has_extensions, 1); - assert(ret == 0); - if(ret < 0) { - ASN__ENCODE_FAILED; - } - } - - /* - * Encode optional components bitmap. - */ - if(specs->roms_count) { - FOR_IN_ROOT_GROUP(edx) { - asn_TYPE_member_t *elm = &td->elements[edx]; - - if(IN_EXTENSION_GROUP(specs, edx)) break; - - if(elm->optional) { - const void *memb_ptr = element_ptr(sptr, elm); - uint32_t has_component = memb_ptr != NULL; - if(has_component && elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - has_component = 0; - } - ret = asn_put_few_bits(&preamble, has_component, 1); - if(ret < 0) { - ASN__ENCODE_FAILED; - } - } - } - } - - asn_put_aligned_flush(&preamble); - computed_size += preamble.flushed_bytes; - } /* if(preamble_bits) */ - - /* - * Put root components and extensions root. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - asn_enc_rval_t er = {0,0,0}; - const void *memb_ptr; - - if(IN_EXTENSION_GROUP(specs, edx)) break; - - memb_ptr = element_ptr(sptr, elm); - if(memb_ptr) { - if(elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - /* Skip default values in encoding */ - continue; - } - } else { - if(elm->optional) continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - if(!elm->type->op->oer_encoder) { - ASN_DEBUG("OER encoder is not defined for type %s", elm->type->name); - ASN__ENCODE_FAILED; - } - er = elm->type->op->oer_encoder( - elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, - app_key); - if(er.encoded == -1) { - ASN_DEBUG("... while encoding %s member \"%s\"\n", td->name, - elm->name); - return er; - } - computed_size += er.encoded; - } - - /* - * Before encode extensions, encode extensions additions presense bitmap - # X.696 (08/2015) #16.4. - */ - if(has_extensions) { - asn_bit_outp_t extadds; - - /* Special case allowing us to use exactly one byte for #8.6 */ - size_t aoms_length_bits = specs->aoms_count; - size_t aoms_length_bytes = (7 + aoms_length_bits) >> 3; - uint8_t unused_bits = 0x07 & (8 - (aoms_length_bits & 0x07)); - - assert(1 + aoms_length_bytes <= 127); - - memset(&extadds, 0, sizeof(extadds)); - extadds.output = cb; - extadds.op_key = app_key; - - /* #8.6 length determinant */ - ret = asn_put_few_bits(&extadds, (1 + aoms_length_bytes), 8); - if(ret < 0) ASN__ENCODE_FAILED; - - /* Number of unused bytes, #16.4.2 */ - ret = asn_put_few_bits(&extadds, unused_bits, 8); - if(ret < 0) ASN__ENCODE_FAILED; - - /* Encode presence bitmap #16.4.3 */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr = element_ptr(sptr, elm); - if(memb_ptr && elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - memb_ptr = 0; /* Do not encode default value. */ - } - ret |= asn_put_few_bits(&extadds, memb_ptr ? 1 : 0, 1); - } - if(ret < 0) ASN__ENCODE_FAILED; - - asn_put_aligned_flush(&extadds); - computed_size += extadds.flushed_bytes; - - /* Now, encode extensions */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr = element_ptr(sptr, elm); - - if(memb_ptr) { - if(elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - /* Do not encode default value. */ - } else { - ssize_t wrote = oer_open_type_put( - elm->type, elm->encoding_constraints.oer_constraints, - memb_ptr, cb, app_key); - if(wrote == -1) { - ASN__ENCODE_FAILED; - } - computed_size += wrote; - } - } else if(!elm->optional) { - ASN__ENCODE_FAILED; - } - } - } /* if(has_extensions) */ - - - { - asn_enc_rval_t er = {0, 0, 0}; - er.encoded = computed_size; - ASN__ENCODED_OK(er); - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.c deleted file mode 100644 index bf1dc27..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.c +++ /dev/null @@ -1,1441 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * The decoder of the SET OF type. - */ -asn_dec_rval_t -SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as SET OF", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - ASN_DEBUG("Structure consumes %ld bytes, " - "buffer %ld", (long)ctx->left, (long)size); - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next item. - */ - for(;; ctx->step = 0) { - ssize_t tag_len; /* Length of TLV's T */ - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - - if(ctx->left == 0) { - ASN_DEBUG("End of SET OF %s", td->name); - /* - * No more things to decode. - * Exit out of here. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Found the terminator of the - * indefinite length structure. - */ - break; - } - } - - /* Outmost tag may be unknown and cannot be fetched/compared */ - if(elm->tag != (ber_tlv_tag_t)-1) { - if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { - /* - * The new list member of expected type has arrived. - */ - } else { - ASN_DEBUG("Unexpected tag %s fixed SET OF %s", - ber_tlv_tag_string(tlv_tag), td->name); - ASN_DEBUG("%s SET OF has tag %s", - td->name, ber_tlv_tag_string(elm->tag)); - RETURN(RC_FAIL); - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, - elm->type, &ctx->ptr, ptr, LEFT, 0); - ASN_DEBUG("In %s SET OF %s code %d consumed %d", - td->name, elm->type->name, - rval.code, (int)rval.consumed); - switch(rval.code) { - case RC_OK: - { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - else - ctx->ptr = 0; - } - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - /* Fall through */ - case RC_FAIL: /* Fatal error */ - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all list members) */ - - NEXT_PHASE(ctx); - case 2: - /* - * Read in all "end of content" TLVs. - */ - while(ctx->left < 0) { - if(LEFT < 2) { - if(LEFT > 0 && ((const char *)ptr)[0] != 0) { - /* Unexpected tag */ - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } - if(((const char *)ptr)[0] == 0 - && ((const char *)ptr)[1] == 0) { - ADVANCE(2); - ctx->left++; - } else { - RETURN(RC_FAIL); - } - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - -/* - * Internally visible buffer holding a single encoded element. - */ -struct _el_buffer { - uint8_t *buf; - size_t length; - size_t allocated_size; - unsigned bits_unused; -}; -/* Append bytes to the above structure */ -static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { - struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; - - if(el_buf->length + size > el_buf->allocated_size) { - size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; - void *p; - - do { - new_size <<= 2; - } while(el_buf->length + size > new_size); - - p = REALLOC(el_buf->buf, new_size); - if(p) { - el_buf->buf = p; - el_buf->allocated_size = new_size; - } else { - return -1; - } - } - - memcpy(el_buf->buf + el_buf->length, buffer, size); - - el_buf->length += size; - return 0; -} - -static void assert_unused_bits(const struct _el_buffer* p) { - if(p->length) { - assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); - } else { - assert(p->bits_unused == 0); - } -} - -static int _el_buf_cmp(const void *ap, const void *bp) { - const struct _el_buffer *a = (const struct _el_buffer *)ap; - const struct _el_buffer *b = (const struct _el_buffer *)bp; - size_t common_len; - int ret = 0; - - if(a->length < b->length) - common_len = a->length; - else - common_len = b->length; - - if (a->buf && b->buf) { - ret = memcmp(a->buf, b->buf, common_len); - } - if(ret == 0) { - if(a->length < b->length) - ret = -1; - else if(a->length > b->length) - ret = 1; - /* Ignore unused bits. */ - assert_unused_bits(a); - assert_unused_bits(b); - } - - return ret; -} - -static void -SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { - size_t i; - - for(i = 0; i < count; i++) { - FREEMEM(el_buf[i].buf); - } - - FREEMEM(el_buf); -} - -enum SET_OF__encode_method { - SOES_DER, /* Distinguished Encoding Rules */ - SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ -}; - -static struct _el_buffer * -SET_OF__encode_sorted(const asn_TYPE_member_t *elm, - const asn_anonymous_set_ *list, - enum SET_OF__encode_method method) { - struct _el_buffer *encoded_els; - int edx; - - encoded_els = - (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); - if(encoded_els == NULL) { - return NULL; - } - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - const void *memb_ptr = list->array[edx]; - struct _el_buffer *encoding_el = &encoded_els[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) break; - - /* - * Encode the member into the prepared space. - */ - switch(method) { - case SOES_DER: - erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, - _el_addbytes, encoding_el); - break; - case SOES_CUPER: - erval = uper_encode(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, _el_addbytes, encoding_el); - if(erval.encoded != -1) { - size_t extra_bits = erval.encoded % 8; - assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); - encoding_el->bits_unused = (8 - extra_bits) & 0x7; - } - break; - default: - assert(!"Unreachable"); - break; - } - if(erval.encoded < 0) break; - } - - if(edx == list->count) { - /* - * Sort the encoded elements according to their encoding. - */ - qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); - - return encoded_els; - } else { - SET_OF__encode_sorted_free(encoded_els, edx); - return NULL; - } -} - - -/* - * The DER encoder of the SET OF type. - */ -asn_enc_rval_t -SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - struct _el_buffer *encoded_els; - int edx; - - ASN_DEBUG("Estimating size for SET OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) ASN__ENCODE_FAILED; - - erval = - elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); - if(erval.encoded == -1) return erval; - computed_size += erval.encoded; - } - - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = - der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - if(encoding_size < 0) { - ASN__ENCODE_FAILED; - } - computed_size += encoding_size; - - if(!cb || list->count == 0) { - asn_enc_rval_t erval = {0,0,0}; - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of %s SET OF", td->name); - - /* - * DER mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the - * encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); - - /* - * Report encoded elements to the application. - * Dispose of temporary sorted members table. - */ - for(edx = 0; edx < list->count; edx++) { - struct _el_buffer *encoded_el = &encoded_els[edx]; - /* Report encoded chunks to the application */ - if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { - break; - } else { - encoding_size += encoded_el->length; - } - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if(edx == list->count) { - asn_enc_rval_t erval = {0,0,0}; - assert(computed_size == (size_t)encoding_size); - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } else { - ASN__ENCODE_FAILED; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = ((const char *)buf_ptr) + num;\ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *element = td->elements; - const char *elm_tag; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval = {RC_OK, 0};/* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* Which tag is expected for the downstream */ - if(specs->as_XMLValueList) { - elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; - } else { - elm_tag = (*element->name) - ? element->name : element->type->xml_tag; - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - */ - for(; ctx->phase <= 2;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Go inside the inner member of a set. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval = {RC_OK, 0}; - - /* Invoke the inner type decoder, m.b. multiple times */ - ASN_DEBUG("XER/SET OF element [%s]", elm_tag); - tmprval = element->type->op->xer_decoder(opt_codec_ctx, - element->type, &ctx->ptr, elm_tag, - buf_ptr, size); - if(tmprval.code == RC_OK) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - ctx->ptr = 0; - XER_ADVANCE(tmprval.consumed); - } else { - XER_ADVANCE(tmprval.consumed); - RETURN(tmprval.code); - } - ctx->phase = 1; /* Back to body processing */ - ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, - buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", - tcv, ctx->phase, xml_tag); - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - /* No more things to decode */ - XER_ADVANCE(ch_size); - ctx->phase = 3; /* Phase out */ - RETURN(RC_OK); - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); - if(ctx->phase == 1) { - /* - * Process a single possible member. - */ - ctx->phase = 2; - continue; - } - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SET OF"); - break; - } - - ctx->phase = 3; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - - - -typedef struct xer_tmp_enc_s { - void *buffer; - size_t offset; - size_t size; -} xer_tmp_enc_t; -static int -SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { - xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; - if(t->offset + size >= t->size) { - size_t newsize = (t->size << 2) + size; - void *p = REALLOC(t->buffer, newsize); - if(!p) return -1; - t->buffer = p; - t->size = newsize; - } - memcpy((char *)t->buffer + t->offset, buffer, size); - t->offset += size; - return 0; -} -static int -SET_OF_xer_order(const void *aptr, const void *bptr) { - const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; - const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; - size_t minlen = a->offset; - int ret; - if(b->offset < minlen) minlen = b->offset; - /* Well-formed UTF-8 has this nice lexicographical property... */ - ret = memcmp(a->buffer, b->buffer, minlen); - if(ret != 0) return ret; - if(a->offset == b->offset) - return 0; - if(a->offset == minlen) - return -1; - return 1; -} - - -asn_enc_rval_t -SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - xer_tmp_enc_t *encs = 0; - size_t encs_count = 0; - void *original_app_key = app_key; - asn_app_consume_bytes_f *original_cb = cb; - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - if(xcan) { - encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); - if(!encs) ASN__ENCODE_FAILED; - cb = SET_OF_encode_xer_callback; - } - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(encs) { - memset(&encs[encs_count], 0, sizeof(encs[0])); - app_key = &encs[encs_count]; - encs_count++; - } - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - if(!xcan && specs->as_XMLValueList == 1) - ASN__TEXT_INDENT(1, ilevel + 1); - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + (specs->as_XMLValueList != 2), - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - if(encs) { - xer_tmp_enc_t *enc = encs; - xer_tmp_enc_t *end = encs + encs_count; - ssize_t control_size = 0; - - er.encoded = 0; - cb = original_cb; - app_key = original_app_key; - qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); - - for(; enc < end; enc++) { - ASN__CALLBACK(enc->buffer, enc->offset); - FREEMEM(enc->buffer); - enc->buffer = 0; - control_size += enc->offset; - } - assert(control_size == er.encoded); - } - - goto cleanup; -cb_failed: - ASN__ENCODE_FAILED; -cleanup: - if(encs) { - size_t n; - for(n = 0; n < encs_count; n++) { - FREEMEM(encs[n].buffer); - } - FREEMEM(encs); - } - ASN__ENCODED_OK(er); -} - -int -SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int ret; - int i; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - _i_INDENT(1); - - ret = elm->type->op->print_struct(elm->type, memb_ptr, - ilevel + 1, cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(td && ptr) { - const asn_SET_OF_specifics_t *specs; - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); - asn_struct_ctx_t *ctx; /* Decoder context */ - int i; - - /* - * Could not use set_of_empty() because of (*free) - * incompatibility. - */ - for(i = 0; i < list->count; i++) { - void *memb_ptr = list->array[i]; - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } - list->count = 0; /* No meaningful elements left */ - - asn_set_empty(list); /* Remove (list->array) */ - - specs = (const asn_SET_OF_specifics_t *)td->specifics; - ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); - if(ctx->ptr) { - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } - } -} - -int -SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - asn_constr_check_f *constr; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int i; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - constr = elm->encoding_constraints.general_constraints; - if(!constr) constr = elm->type->encoding_constraints.general_constraints; - - /* - * Iterate over the members of an array. - * Validate each in turn, until one fails. - */ - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - int ret; - - if(!memb_ptr) continue; - - ret = constr(elm->type, memb_ptr, ctfailcb, app_key); - if(ret) return ret; - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = per_get_few_bits(pd, ct->effective_bits); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = uper_get_length(pd, -1, 0, &repeat); - ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", - nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) { - if(rv.consumed == 0 && nelems > 200) { - /* Protect from SET OF NULL compression bombs. */ - ASN__DECODE_FAILED; - } - continue; - } - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -asn_enc_rval_t -SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - const asn_TYPE_member_t *elm = td->elements; - struct _el_buffer *encoded_els; - asn_enc_rval_t er = {0,0,0}; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - - list = _A_CSET_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - - /* - * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - const struct _el_buffer *el = &encoded_els[edx]; - if(asn_put_many_bits(po, el->buf, - (8 * el->length) - el->bits_unused) < 0) { - break; - } - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if((ssize_t)encoded_edx == list->count) { - ASN__ENCODED_OK(er); - } else { - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, - ct ? ct->effective_bits : -1, &repeat); - ASN_DEBUG("Got to decode %d elements (eff %d)", - (int)nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) - continue; - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -struct comparable_ptr { - const asn_TYPE_descriptor_t *td; - const void *sptr; -}; - -static int -SET_OF__compare_cb(const void *aptr, const void *bptr) { - const struct comparable_ptr *a = aptr; - const struct comparable_ptr *b = bptr; - assert(a->td == b->td); - return a->td->op->compare_struct(a->td, a->sptr, b->sptr); -} - -int -SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); - const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); - - if(a && b) { - struct comparable_ptr *asorted; - struct comparable_ptr *bsorted; - ssize_t common_length; - ssize_t idx; - - if(a->count == 0) { - if(b->count) return -1; - return 0; - } else if(b->count == 0) { - return 1; - } - - asorted = MALLOC(a->count * sizeof(asorted[0])); - bsorted = MALLOC(b->count * sizeof(bsorted[0])); - if(!asorted || !bsorted) { - FREEMEM(asorted); - FREEMEM(bsorted); - return -1; - } - - for(idx = 0; idx < a->count; idx++) { - asorted[idx].td = td->elements->type; - asorted[idx].sptr = a->array[idx]; - } - - for(idx = 0; idx < b->count; idx++) { - bsorted[idx].td = td->elements->type; - bsorted[idx].sptr = b->array[idx]; - } - - qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); - qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); - - common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); - if(ret) { - FREEMEM(asorted); - FREEMEM(bsorted); - return ret; - } - } - - FREEMEM(asorted); - FREEMEM(bsorted); - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SET_OF = { - SET_OF_free, - SET_OF_print, - SET_OF_compare, - SET_OF_decode_ber, - SET_OF_encode_der, - SET_OF_decode_xer, - SET_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SET_OF_decode_oer, - SET_OF_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SET_OF_decode_uper, - SET_OF_encode_uper, - SET_OF_decode_aper, - 0, /* SET_OF_encode_aper */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - SET_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_SET_OF_specifics_t *specs = - (const asn_SET_OF_specifics_t *)td->specifics; - asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm = td->elements; - void *st = *sptr; - long max_elements = 5; - long slb = 0; /* Lower size bound */ - long sub = 0; /* Upper size bound */ - size_t rnd_len; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) { - return result_failed; - } - } - - switch(asn_random_between(0, 6)) { - case 0: max_elements = 0; break; - case 1: max_elements = 1; break; - case 2: max_elements = 5; break; - case 3: max_elements = max_length; break; - case 4: max_elements = max_length / 2; break; - case 5: max_elements = max_length / 4; break; - default: break; - } - sub = slb + max_elements; - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_SEMI_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->lower_bound + max_elements; - } else if(pc->flags & APC_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->upper_bound; - if(sub - slb > max_elements) sub = slb + max_elements; - } - } - - /* Bias towards edges of allowed space */ - switch(asn_random_between(-1, 4)) { - default: - case -1: - /* Prepare lengths somewhat outside of constrained range. */ - if(constraints->per_constraints - && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { - switch(asn_random_between(0, 5)) { - default: - case 0: - rnd_len = 0; - break; - case 1: - if(slb > 0) { - rnd_len = slb - 1; - } else { - rnd_len = 0; - } - break; - case 2: - rnd_len = asn_random_between(0, slb); - break; - case 3: - if(sub < (ssize_t)max_length) { - rnd_len = sub + 1; - } else { - rnd_len = max_length; - } - break; - case 4: - if(sub < (ssize_t)max_length) { - rnd_len = asn_random_between(sub + 1, max_length); - } else { - rnd_len = max_length; - } - break; - case 5: - rnd_len = max_length; - break; - } - break; - } - /* Fall through */ - case 0: - rnd_len = asn_random_between(slb, sub); - break; - case 1: - if(slb < sub) { - rnd_len = asn_random_between(slb + 1, sub); - break; - } - /* Fall through */ - case 2: - rnd_len = asn_random_between(slb, slb); - break; - case 3: - if(slb < sub) { - rnd_len = asn_random_between(slb, sub - 1); - break; - } - /* Fall through */ - case 4: - rnd_len = asn_random_between(sub, sub); - break; - } - - for(; rnd_len > 0; rnd_len--) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - void *ptr = 0; - asn_random_fill_result_t tmpres = elm->type->op->random_fill( - elm->type, &ptr, &elm->encoding_constraints, - (max_length > res_ok.length ? max_length - res_ok.length : 0) - / rnd_len); - switch(tmpres.code) { - case ARFILL_OK: - ASN_SET_ADD(list, ptr); - res_ok.length += tmpres.length; - break; - case ARFILL_SKIPPED: - break; - case ARFILL_FAILED: - assert(ptr == 0); - return tmpres; - } - } - - return res_ok; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.h deleted file mode 100644 index 7681062..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF.h +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF_oer.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF_oer.c deleted file mode 100644 index 5200518..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_SET_OF_oer.c +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include -#include - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) \ - do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#undef SET_PHASE -#define SET_PHASE(ctx, value) \ - do { \ - ctx->phase = value; \ - ctx->step = 0; \ - } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t rval; \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - return rval; \ - } while(0) - -/* - * The SEQUENCE OF and SET OF values utilize a "quantity field". - * It is is a pointless combination of #8.6 (length determinant, capable - * of encoding tiny and huge numbers in the shortest possible number of octets) - * and the variable sized integer. What could have been encoded by #8.6 alone - * is required to be encoded by #8.6 followed by that number of unsigned octets. - * This doesn't make too much sense. It seems that the original version of OER - * standard have been using the unconstrained unsigned integer as a quantity - * field, and this legacy have gone through ISO/ITU-T standardization process. - */ -static ssize_t -oer_fetch_quantity(const void *ptr, size_t size, size_t *qty_r) { - const uint8_t *b; - const uint8_t *bend; - size_t len = 0; - size_t qty; - - ssize_t len_len = oer_fetch_length(ptr, size, &len); - if(len_len <= 0) { - *qty_r = 0; - return len_len; - } - - if((len_len + len) > size) { - *qty_r = 0; - return 0; - } - - b = (const uint8_t *)ptr + len_len; - bend = b + len; - - /* Skip the leading 0-bytes */ - for(; b < bend && *b == 0; b++) { - } - - if((bend - b) > (ssize_t)sizeof(size_t)) { - /* Length is not representable by the native size_t type */ - *qty_r = 0; - return -1; - } - - for(qty = 0; b < bend; b++) { - qty = (qty << 8) + *b; - } - - if(qty > RSIZE_MAX) { /* A bit of C11 validation */ - *qty_r = 0; - return -1; - } - - *qty_r = qty; - assert((size_t)len_len + len == (size_t)(bend - (const uint8_t *)ptr)); - return len_len + len; -} - -asn_dec_rval_t -SET_OF_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **struct_ptr, - const void *ptr, size_t size) { - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - asn_dec_rval_t rval = {RC_OK, 0}; - void *st = *struct_ptr; /* Target structure */ - asn_struct_ctx_t *ctx; /* Decoder context */ - size_t consumed_myself = 0; /* Consumed bytes from ptr. */ - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously. - */ - switch(ctx->phase) { - case 0: { - /* - * Fetch number of elements to decode. - */ - size_t length = 0; - size_t len_size = oer_fetch_quantity(ptr, size, &length); - switch(len_size) { - case 0: - RETURN(RC_WMORE); - case -1: - RETURN(RC_FAIL); - default: - ADVANCE(len_size); - ctx->left = length; - } - } - NEXT_PHASE(ctx); - /* FALL THROUGH */ - case 1: { - /* Decode components of the extension root */ - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - const void *base_ptr = ptr; - ber_tlv_len_t base_ctx_left = ctx->left; - - assert(td->elements_count == 1); - - ASN_DEBUG("OER SET OF %s Decoding PHASE 1", td->name); - - for(; ctx->left > 0; ctx->left--) { - asn_dec_rval_t rv = elm->type->op->oer_decoder( - opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, &ctx->ptr, ptr, - size); - ADVANCE(rv.consumed); - switch(rv.code) { - case RC_OK: - if(ASN_SET_ADD(list, ctx->ptr) != 0) { - RETURN(RC_FAIL); - } else { - ctx->ptr = 0; - /* - * This check is to avoid compression bomb with - * specs like SEQUENCE/SET OF NULL which don't - * consume data at all. - */ - if(rv.consumed == 0 && base_ptr == ptr - && (base_ctx_left - ctx->left) > 200) { - ASN__DECODE_FAILED; - } - break; - } - case RC_WMORE: - RETURN(RC_WMORE); - case RC_FAIL: - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - SET_PHASE(ctx, 3); - RETURN(RC_FAIL); - } - } - /* Decoded decently. */ - NEXT_PHASE(ctx); - } - /* Fall through */ - case 2: - /* Ignore fully decoded */ - assert(ctx->left == 0); - RETURN(RC_OK); - case 3: - /* Failed to decode. */ - RETURN(RC_FAIL); - } - - return rval; -} - -static ssize_t -oer_put_quantity(size_t qty, asn_app_consume_bytes_f *cb, void *app_key) { - uint8_t buf[1 + sizeof(size_t)]; - uint8_t *b = &buf[sizeof(size_t)]; /* Last addressable */ - size_t encoded; - - do { - *b-- = qty; - qty >>= 8; - } while(qty); - - *b = sizeof(buf) - (b-buf) - 1; - encoded = sizeof(buf) - (b-buf); - if(cb(b, encoded, app_key) < 0) - return -1; - return encoded; -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -SET_OF_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_TYPE_member_t *elm; - const asn_anonymous_set_ *list; - size_t computed_size = 0; - ssize_t qty_len; - int n; - - (void)constraints; - - if(!sptr) ASN__ENCODE_FAILED; - - elm = td->elements; - list = _A_CSET_FROM_VOID(sptr); - - qty_len = oer_put_quantity(list->count, cb, app_key); - if(qty_len < 0) { - ASN__ENCODE_FAILED; - } - computed_size += qty_len; - - for(n = 0; n < list->count; n++) { - void *memb_ptr = list->array[n]; - asn_enc_rval_t er = {0,0,0}; - er = elm->type->op->oer_encoder( - elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, - app_key); - if(er.encoded < 0) { - return er; - } else { - computed_size += er.encoded; - } - } - - { - asn_enc_rval_t erval = {0,0,0}; - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.c deleted file mode 100644 index aefaefd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.c +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.h deleted file mode 100644 index d80dea5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constr_TYPE.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.c deleted file mode 100644 index df3c6c1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.c +++ /dev/null @@ -1,93 +0,0 @@ -#include -#include - -int -asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Nothing to check */ - return 0; -} - -int -asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Unknown how to check */ - return 0; -} - -struct errbufDesc { - const asn_TYPE_descriptor_t *failed_type; - const void *failed_struct_ptr; - char *errbuf; - size_t errlen; -}; - -static void -_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, - const char *fmt, ...) { - struct errbufDesc *arg = key; - va_list ap; - ssize_t vlen; - ssize_t maxlen; - - arg->failed_type = td; - arg->failed_struct_ptr = sptr; - - maxlen = arg->errlen; - if(maxlen <= 0) - return; - - va_start(ap, fmt); - vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); - va_end(ap); - if(vlen >= maxlen) { - arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ - arg->errlen = maxlen - 1; /* Not counting termination */ - return; - } else if(vlen >= 0) { - arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ - arg->errlen = vlen; /* Not counting termination */ - } else { - /* - * The libc on this system is broken. - */ - vlen = sizeof("") - 1; - maxlen--; - arg->errlen = vlen < maxlen ? vlen : maxlen; - memcpy(arg->errbuf, "", arg->errlen); - arg->errbuf[arg->errlen] = 0; - } - - return; -} - -int -asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, char *errbuf, size_t *errlen) { - struct errbufDesc arg; - int ret; - - arg.failed_type = 0; - arg.failed_struct_ptr = 0; - arg.errbuf = errbuf; - arg.errlen = errlen ? *errlen : 0; - - ret = type_descriptor->encoding_constraints.general_constraints( - type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); - if(ret == -1 && errlen) *errlen = arg.errlen; - - return ret; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.h deleted file mode 100644 index 0bd86a9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/constraints.h +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN1_CONSTRAINTS_VALIDATOR_H -#define ASN1_CONSTRAINTS_VALIDATOR_H - -#include /* Platform-dependent types */ - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Validate the structure according to the ASN.1 constraints. - * If errbuf and errlen are given, they shall be pointing to the appropriate - * buffer space and its length before calling this function. Alternatively, - * they could be passed as NULL's. If constraints validation fails, - * errlen will contain the actual number of bytes taken from the errbuf - * to encode an error message (properly 0-terminated). - * - * RETURN VALUES: - * This function returns 0 in case all ASN.1 constraints are met - * and -1 if one or more constraints were failed. - */ -int asn_check_constraints( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Target language's structure */ - char *errbuf, /* Returned error description */ - size_t *errlen /* Length of the error description */ -); - - -/* - * Generic type for constraint checking callback, - * associated with every type descriptor. - */ -typedef int(asn_constr_check_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, - asn_app_constraint_failed_f *optional_callback, /* Log the error */ - void *optional_app_key /* Opaque key passed to a callback */ -); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ -asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ - -/* - * Invoke the callback with a complete error message. - */ -#define ASN__CTFAIL if(ctfailcb) ctfailcb - -#ifdef __cplusplus -} -#endif - -#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/converter-example.mk b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/converter-example.mk deleted file mode 100644 index 0109476..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/converter-example.mk +++ /dev/null @@ -1,33 +0,0 @@ -include Makefile.am.libasncodec - -LIBS += -lm -CFLAGS += $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION -I. -ASN_LIBRARY ?= libasncodec.a -ASN_PROGRAM ?= converter-example -ASN_PROGRAM_SRCS ?= \ - converter-example.c\ - pdu_collection.c - -all: $(ASN_PROGRAM) - -$(ASN_PROGRAM): $(ASN_LIBRARY) $(ASN_PROGRAM_SRCS:.c=.o) - $(CC) $(CFLAGS) $(CPPFLAGS) -o $(ASN_PROGRAM) $(ASN_PROGRAM_SRCS:.c=.o) $(LDFLAGS) $(ASN_LIBRARY) $(LIBS) - -$(ASN_LIBRARY): $(ASN_MODULE_SRCS:.c=.o) - $(AR) rcs $@ $(ASN_MODULE_SRCS:.c=.o) - -.SUFFIXES: -.SUFFIXES: .c .o - -.c.o: - $(CC) $(CFLAGS) -o $@ -c $< - -clean: - rm -f $(ASN_PROGRAM) $(ASN_LIBRARY) - rm -f $(ASN_MODULE_SRCS:.c=.o) $(ASN_PROGRAM_SRCS:.c=.o) - -regen: regenerate-from-asn1-source - -regenerate-from-asn1-source: - asn1c -fcompound-names /home/rshacham/e2sm-kpm-v01.02.asn - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.c deleted file mode 100644 index 0701738..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* - * The OER decoder of any type. - */ -asn_dec_rval_t -oer_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, - const void *ptr, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return type_descriptor->op->oer_decoder(opt_codec_ctx, type_descriptor, 0, - struct_ptr, /* Pointer to the destination structure */ - ptr, size /* Buffer and its size */ - ); -} - -/* - * Open Type is encoded as a length (#8.6) followed by that number of bytes. - * Since we're just skipping, reading the length would be enough. - */ -ssize_t -oer_open_type_skip(const void *bufptr, size_t size) { - size_t len = 0; - return oer_fetch_length(bufptr, size, &len); -} - -/* - * Read the Open Type (X.696 (08/2015), #30). - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - */ -ssize_t -oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *td, - const asn_oer_constraints_t *constraints, void **struct_ptr, - const void *bufptr, size_t size) { - asn_dec_rval_t dr; - size_t container_len = 0; - ssize_t len_len; - enum asn_struct_free_method dispose_method = - (*struct_ptr) ? ASFM_FREE_UNDERLYING_AND_RESET : ASFM_FREE_EVERYTHING; - - /* Get the size of a length determinant */ - len_len = oer_fetch_length(bufptr, size, &container_len); - if(len_len <= 0) { - return len_len; /* Error or more data expected */ - } - - /* - * len_len can't be bigger than size, but size without len_len - * should be bigger or equal to container length - */ - if(size - len_len < container_len) { - /* More data is expected */ - return 0; - } - - dr = td->op->oer_decoder(opt_codec_ctx, td, constraints, struct_ptr, - (const uint8_t *)bufptr + len_len, container_len); - if(dr.code == RC_OK) { - return len_len + container_len; - } else { - /* Even if RC_WMORE, we can't get more data into a closed container. */ - td->op->free_struct(td, *struct_ptr, dispose_method); - *struct_ptr = NULL; - return -1; - } -} - - -asn_dec_rval_t -oer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; - asn_dec_rval_t rval = {RC_OK, 0}; - size_t expected_length = 0; - ssize_t len_len; - - (void)td; - (void)opt_codec_ctx; - (void)constraints; - - if(!st) { - st = (ASN__PRIMITIVE_TYPE_t *)(*sptr = CALLOC( - 1, sizeof(ASN__PRIMITIVE_TYPE_t))); - if(!st) ASN__DECODE_FAILED; - } - - - /* - * X.696 (08/2015) #27.2 - * Encode length determinant as _number of octets_, but only - * if upper bound is not equal to lower bound. - */ - len_len = oer_fetch_length(ptr, size, &expected_length); - if(len_len > 0) { - rval.consumed = len_len; - ptr = (const char *)ptr + len_len; - size -= len_len; - } else if(len_len == 0) { - ASN__DECODE_STARVED; - } else if(len_len < 0) { - ASN__DECODE_FAILED; - } - - if(size < expected_length) { - ASN__DECODE_STARVED; - } else { - uint8_t *buf = MALLOC(expected_length + 1); - if(buf == NULL) { - ASN__DECODE_FAILED; - } else { - memcpy(buf, ptr, expected_length); - buf[expected_length] = '\0'; - } - FREEMEM(st->buf); - st->buf = buf; - st->size = expected_length; - - rval.consumed += expected_length; - return rval; - } -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.h deleted file mode 100644 index 40992e9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_decoder.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef OER_DECODER_H -#define OER_DECODER_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ -struct asn_codec_ctx_s; /* Forward declaration */ - -/* - * The Octet Encoding Rules (OER, X.696 08/2015) decoder for any given type. - * This function may be invoked directly by the application. - * Parses CANONICAL-OER and BASIC-OER. - */ -asn_dec_rval_t oer_decode(const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ - ); - -/* - * Type of generic function which decodes the byte stream into the structure. - */ -typedef asn_dec_rval_t(oer_type_decoder_f)( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_oer_constraints_t *constraints, - void **struct_ptr, - const void *buf_ptr, - size_t size); - -/* - * Swallow the Open Type (X.696 (08/2015), #30) into /dev/null. - * RETURN VALUES: - * -1: Fatal error deciphering length. - * 0: More data expected than bufptr contains. - * >0: Number of bytes used from bufptr. - */ -ssize_t oer_open_type_skip(const void *bufptr, size_t size); - -/* - * Read the Open Type (X.696 (08/2015), #30). - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - */ -ssize_t oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *td, - const asn_oer_constraints_t *constraints, - void **struct_ptr, const void *bufptr, size_t size); - -/* - * Length-prefixed buffer decoding for primitive types. - */ -oer_type_decoder_f oer_decode_primitive; - - -#ifdef __cplusplus -} -#endif - -#endif /* OER_DECODER_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.c deleted file mode 100644 index a284cc2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* - * The OER encoder of any type. - */ -asn_enc_rval_t -oer_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, - asn_app_consume_bytes_f *consume_bytes, void *app_key) { - ASN_DEBUG("OER encoder invoked for %s", type_descriptor->name); - - /* - * Invoke type-specific encoder. - */ - return type_descriptor->op->oer_encoder( - type_descriptor, 0, - struct_ptr, /* Pointer to the destination structure */ - consume_bytes, app_key); -} - -/* - * Argument type and callback necessary for oer_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int -encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -/* - * A variant of the oer_encode() which encodes the data into the provided buffer - */ -asn_enc_rval_t -oer_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, - const asn_oer_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (maximum) */ -) { - enc_to_buf_arg arg; - asn_enc_rval_t ec; - - arg.buffer = buffer; - arg.left = buffer_size; - - if(type_descriptor->op->oer_encoder == NULL) { - ec.encoded = -1; - ec.failed_type = type_descriptor; - ec.structure_ptr = struct_ptr; - ASN_DEBUG("OER encoder is not defined for %s", - type_descriptor->name); - } else { - ec = type_descriptor->op->oer_encoder( - type_descriptor, constraints, - struct_ptr, /* Pointer to the destination structure */ - encode_to_buffer_cb, &arg); - if(ec.encoded != -1) { - assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); - /* Return the encoded contents size */ - } - } - return ec; -} - -asn_enc_rval_t -oer_encode_primitive(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - ssize_t ret; - - (void)constraints; - - if(!st) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s (%" ASN_PRI_SIZE " bytes)", td ? td->name : "", st->size); - - /* - * X.696 (08/2015) #27.2 - */ - ret = oer_serialize_length(st->size, cb, app_key); - if(ret < 0) { - ASN__ENCODE_FAILED; - } - er.encoded += ret; - - er.encoded += st->size; - if(cb(st->buf, st->size, app_key) < 0) { - ASN__ENCODE_FAILED; - } else { - ASN__ENCODED_OK(er); - } -} - -static int -oer__count_bytes(const void *buffer, size_t size, void *bytes_ptr) { - size_t *bytes = bytes_ptr; - (void)buffer; - *bytes += size; - return 0; -} - -ssize_t -oer_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t serialized_byte_count = 0; - asn_enc_rval_t er = {0,0,0}; - ssize_t len_len; - - er = td->op->oer_encoder(td, constraints, sptr, oer__count_bytes, - &serialized_byte_count); - if(er.encoded < 0) return -1; - assert(serialized_byte_count == (size_t)er.encoded); - - len_len = oer_serialize_length(serialized_byte_count, cb, app_key); - if(len_len == -1) return -1; - - er = td->op->oer_encoder(td, constraints, sptr, cb, app_key); - if(er.encoded < 0) return -1; - assert(serialized_byte_count == (size_t)er.encoded); - - return len_len + er.encoded; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.h deleted file mode 100644 index 6a7b681..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_encoder.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef OER_ENCODER_H -#define OER_ENCODER_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The Octet Encoding Rules (OER, X.696 08/2015) encoder for any type. - * This function may be invoked directly by the application. - * Produces CANONICAL-OER output compatible with CANONICAL-OER - * and BASIC-OER decoders. - */ -asn_enc_rval_t oer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* A variant of oer_encode() which encodes data into the pre-allocated buffer */ -asn_enc_rval_t oer_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_oer_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (maximum) */ -); - -/* - * Type of the generic OER encoder. - */ -typedef asn_enc_rval_t(oer_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_oer_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - -/* - * Write out the Open Type (X.696 (08/2015), #30). - * RETURN VALUES: - * -1: Fatal error encoding the type. - * >0: Number of bytes serialized. - */ -ssize_t oer_open_type_put(const struct asn_TYPE_descriptor_s *td, - const asn_oer_constraints_t *constraints, - const void *struct_ptr, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key); - - -/* - * Length-prefixed buffer encoding for primitive types. - */ -oer_type_encoder_f oer_encode_primitive; - -#ifdef __cplusplus -} -#endif - -#endif /* OER_ENCODER_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.c deleted file mode 100644 index b15a3bc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -#include - -/* - * Fetch the length determinant (X.696 08/2015, #8.6) into *len_r. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - */ -ssize_t -oer_fetch_length(const void *bufptr, size_t size, size_t *len_r) { - uint8_t first_byte; - size_t len_len; /* Length of the length determinant */ - const uint8_t *b; - const uint8_t *bend; - size_t len; - - if(size == 0) { - *len_r = 0; - return 0; - } - - first_byte = *(const uint8_t *)bufptr; - if((first_byte & 0x80) == 0) { /* Short form */ - *len_r = first_byte; /* 0..127 */ - return 1; - } - - len_len = (first_byte & 0x7f); - if((1 + len_len) > size) { - *len_r = 0; - return 0; - } - - b = (const uint8_t *)bufptr + 1; - bend = b + len_len; - - for(; b < bend && *b == 0; b++) { - /* Skip the leading 0-bytes */ - } - - if((bend - b) > (ssize_t)sizeof(size_t)) { - /* Length is not representable by the native size_t type */ - *len_r = 0; - return -1; - } - - for(len = 0; b < bend; b++) { - len = (len << 8) + *b; - } - - if(len > RSIZE_MAX) { /* A bit of C11 validation */ - *len_r = 0; - return -1; - } - - *len_r = len; - assert(len_len + 1 == (size_t)(bend - (const uint8_t *)bufptr)); - return len_len + 1; -} - - -/* - * Serialize OER length. Returns the number of bytes serialized - * or -1 if a given callback returned with negative result. - */ -ssize_t -oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, - void *app_key) { - uint8_t scratch[1 + sizeof(length)]; - uint8_t *sp = scratch; - int littleEndian = 1; /* Run-time detection */ - const uint8_t *pstart; - const uint8_t *pend; - const uint8_t *p; - int add; - - if(length <= 127) { - uint8_t b = length; - if(cb(&b, 1, app_key) < 0) { - return -1; - } - return 1; - } - - if(*(char *)&littleEndian) { - pstart = (const uint8_t *)&length + sizeof(length) - 1; - pend = (const uint8_t *)&length; - add = -1; - } else { - pstart = (const uint8_t *)&length; - pend = pstart + sizeof(length); - add = 1; - } - - for(p = pstart; p != pend; p += add) { - /* Skip leading zeros. */ - if(*p) break; - } - - for(sp = scratch + 1; ; p += add) { - *sp++ = *p; - if(p == pend) break; - } - assert((sp - scratch) - 1 <= 0x7f); - scratch[0] = 0x80 + ((sp - scratch) - 1); - - if(cb(scratch, sp - scratch, app_key) < 0) { - return -1; - } - - return sp - scratch; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.h deleted file mode 100644 index dbc9b5f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/oer_support.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef OER_SUPPORT_H -#define OER_SUPPORT_H - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Pre-computed OER constraints. - */ -typedef struct asn_oer_constraint_number_s { - unsigned width; /* ±8,4,2,1 fixed bytes */ - unsigned positive; /* 1 for unsigned number, 0 for signed */ -} asn_oer_constraint_number_t; -typedef struct asn_oer_constraints_s { - asn_oer_constraint_number_t value; - ssize_t size; /* -1 (no constraint) or >= 0 */ -} asn_oer_constraints_t; - - -/* - * Fetch the length determinant (X.696 (08/2015), #8.6) into *len_r. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - */ -ssize_t oer_fetch_length(const void *bufptr, size_t size, size_t *len_r); - -/* - * Serialize OER length. Returns the number of bytes serialized - * or -1 if a given callback returned with negative result. - */ -ssize_t oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, void *app_key); - - -#ifdef __cplusplus -} -#endif - -#endif /* OER_SUPPORT_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/pdu_collection.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/pdu_collection.c deleted file mode 100644 index 0d559a4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/pdu_collection.c +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - */ - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_EventTriggerDefinition; -extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_ActionDefinition; -extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_IndicationHeader; -extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_IndicationMessage; -extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_RANfunction_Description; -extern struct asn_TYPE_descriptor_s asn_DEF_RANcallProcess_ID_string; - - -struct asn_TYPE_descriptor_s *asn_pdu_collection[] = { - /* From module E2SM-KPM-IEs in /home/rshacham/e2sm-kpm-v01.02.asn */ - &asn_DEF_E2SM_KPM_EventTriggerDefinition, - &asn_DEF_E2SM_KPM_ActionDefinition, - &asn_DEF_E2SM_KPM_IndicationHeader, - &asn_DEF_E2SM_KPM_IndicationMessage, - &asn_DEF_E2SM_KPM_RANfunction_Description, - &asn_DEF_RANcallProcess_ID_string, - 0 -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.c deleted file mode 100644 index 8a3e39d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.c +++ /dev/null @@ -1,185 +0,0 @@ -#include -#include -#include - -/* - * Decode a "Production of a complete encoding", X.691#10.1. - * The complete encoding contains at least one byte, and is an integral - * multiple of 8 bytes. - */ -asn_dec_rval_t -uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -uper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->uper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %ld, counted %ld", - (long)rval.consumed, (long)pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - -asn_dec_rval_t -aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -aper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->aper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %zu, counted %zu", - rval.consumed, pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.h deleted file mode 100644 index eea474a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_decoder.h +++ /dev/null @@ -1,82 +0,0 @@ -/*- - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_DECODER_H_ -#define _PER_DECODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. - * On success, this call always returns (.consumed >= 1), as per #11.1.3. - */ -asn_dec_rval_t uper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ -); - -/* - * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t uper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of the input data buffer, in bytes */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ -); - -/* - * Aligned PER decoder of a "complete encoding" as per X.691#10.1. - * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. - */ -asn_dec_rval_t aper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ - ); - -/* - * Aligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t aper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of data buffer */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ - ); - -/* - * Type of the type-specific PER decoder function. - */ -typedef asn_dec_rval_t(per_type_decoder_f)( - const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, void **struct_ptr, - asn_per_data_t *per_data); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_DECODER_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.c deleted file mode 100644 index a35e1f0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.c +++ /dev/null @@ -1,265 +0,0 @@ -#include -#include -#include - -static int _uper_encode_flush_outp(asn_per_outp_t *po); - -static int -ignore_output(const void *data, size_t size, void *app_key) { - (void)data; - (void)size; - (void)app_key; - return 0; -} - -asn_enc_rval_t -uper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->uper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb ? cb : ignore_output; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->uper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; - } - - return er; -} - -/* - * Argument type and callback necessary for uper_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -asn_enc_rval_t -uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); - - return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -typedef struct enc_dyn_arg { - void *buffer; - size_t length; - size_t allocated; -} enc_dyn_arg; -static int -encode_dyn_cb(const void *buffer, size_t size, void *key) { - enc_dyn_arg *arg = key; - if(arg->length + size >= arg->allocated) { - size_t new_size = arg->allocated ? arg->allocated : 8; - void *p; - - do { - new_size <<= 2; - } while(arg->length + size >= new_size); - - p = REALLOC(arg->buffer, new_size); - if(!p) { - FREEMEM(arg->buffer); - memset(arg, 0, sizeof(*arg)); - return -1; - } - arg->buffer = p; - arg->allocated = new_size; - } - memcpy(((char *)arg->buffer) + arg->length, buffer, size); - arg->length += size; - return 0; -} -ssize_t -uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -/* - * Internally useful functions. - */ - -/* Flush partially filled buffer */ -static int -_uper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); -} - -asn_enc_rval_t -aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); - - return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -ssize_t -aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -static int -_aper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - if (po->output) { - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); - } - return 0; -} - -asn_enc_rval_t -aper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->aper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->aper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_aper_encode_flush_outp(&po)) - ASN__ENCODE_FAILED; - } - - return er; -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.h deleted file mode 100644 index b615ef0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_encoder.h +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_ENCODER_H_ -#define _PER_ENCODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. Use the following formula to convert to bytes: - * bytes = ((.encoded + 7) / 8) - */ -asn_enc_rval_t uper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -asn_enc_rval_t aper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -/* - * A variant of uper_encode() which encodes data into the existing buffer - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. - */ -asn_enc_rval_t uper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); - -asn_enc_rval_t aper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); -/* - * A variant of uper_encode_to_buffer() which allocates buffer itself. - * Returns the number of bytes in the buffer or -1 in case of failure. - * WARNING: This function produces a "Production of the complete encoding", - * with length of at least one octet. Contrast this to precise bit-packing - * encoding of uper_encode() and uper_encode_to_buffer(). - */ -ssize_t uper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void **buffer_r /* Buffer allocated and returned */ -); - -ssize_t -aper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *td, - const asn_per_constraints_t *constraints, - const void *sptr, - void **buffer_r -); - -/* - * Type of the generic PER encoder function. - */ -typedef asn_enc_rval_t(per_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, const void *struct_ptr, - asn_per_outp_t *per_output); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_ENCODER_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.c deleted file mode 100644 index 28f3cb6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * Copyright (c) 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -typedef struct uper_ugot_key { - asn_per_data_t oldpd; /* Old per data source */ - size_t unclaimed; - size_t ot_moved; /* Number of bits moved by OT processing */ - int repeat; -} uper_ugot_key; - -static int uper_ugot_refill(asn_per_data_t *pd); -static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); -static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -/* - * Encode an "open type field". - * #10.1, #10.2 - */ -int -uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, - size); - - bptr = buf; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE - " to %s and allowing to save %" ASN_PRI_SSIZE, - size, td->name, may_save); - if(may_save < 0) break; - if(per_put_many_bits(po, bptr, may_save * 8)) break; - bptr = (char *)bptr + may_save; - size -= may_save; - if(need_eom && uper_put_length(po, 0, 0)) { - FREEMEM(buf); - return -1; - } - } while(size); - - FREEMEM(buf); - if(size) return -1; - - return 0; -} - -static asn_dec_rval_t -uper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = uper_get_length(pd, -1, 0, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -static asn_dec_rval_t CC_NOTUSED -uper_open_type_get_complex(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - uper_ugot_key arg; - asn_dec_rval_t rv; - ssize_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s from %s", td->name, - asn_bit_data_string(pd)); - arg.oldpd = *pd; - arg.unclaimed = 0; - arg.ot_moved = 0; - arg.repeat = 1; - pd->refill = uper_ugot_refill; - pd->refill_key = &arg; - pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ - pd->moved = 0; /* This now counts the open type size in bits */ - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); - ASN_DEBUG_INDENT_ADD(-4); - -#define UPDRESTOREPD do { \ - /* buffer and nboff are valid, preserve them. */ \ - pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ - pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ - pd->refill = arg.oldpd.refill; \ - pd->refill_key = arg.oldpd.refill_key; \ - } while(0) - - if(rv.code != RC_OK) { - UPDRESTOREPD; - return rv; - } - - ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, - asn_bit_data_string(pd), - asn_bit_data_string(&arg.oldpd), - (int)arg.unclaimed, (int)arg.repeat); - - padding = pd->moved % 8; - if(padding) { - int32_t pvalue; - if(padding > 7) { - ASN_DEBUG("Too large padding %d in open type", - (int)padding); - rv.code = RC_FAIL; - UPDRESTOREPD; - return rv; - } - padding = 8 - padding; - ASN_DEBUG("Getting padding of %d bits", (int)padding); - pvalue = per_get_few_bits(pd, padding); - switch(pvalue) { - case -1: - ASN_DEBUG("Padding skip failed"); - UPDRESTOREPD; - ASN__DECODE_STARVED; - case 0: break; - default: - ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", - (int)padding, (int)pvalue); - UPDRESTOREPD; - ASN__DECODE_FAILED; - } - } - if(pd->nboff != pd->nbits) { - ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, - asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); - if(1) { - UPDRESTOREPD; - ASN__DECODE_FAILED; - } else { - arg.unclaimed += pd->nbits - pd->nboff; - } - } - - /* Adjust pd back so it points to original data */ - UPDRESTOREPD; - - /* Skip data not consumed by the decoder */ - if(arg.unclaimed) { - ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); - switch(per_skip_bits(pd, arg.unclaimed)) { - case -1: - ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); - ASN__DECODE_STARVED; - case 0: - ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); - break; - default: - /* Padding must be blank */ - ASN_DEBUG("Non-blank unconsumed padding"); - ASN__DECODE_FAILED; - } - arg.unclaimed = 0; - } - - if(arg.repeat) { - ASN_DEBUG("Not consumed the whole thing"); - rv.code = RC_FAIL; - return rv; - } - - return rv; -} - - -asn_dec_rval_t -uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_TYPE_operation_t s_op; - asn_dec_rval_t rv; - - s_td.name = ""; - s_td.op = &s_op; - s_op.uper_decoder = uper_sot_suck; - - rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - -/* - * Internal functions. - */ - -static asn_dec_rval_t -uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - - (void)ctx; - (void)td; - (void)constraints; - (void)sptr; - - while(per_get_few_bits(pd, 1) >= 0); - - rv.code = RC_OK; - rv.consumed = pd->moved; - - return rv; -} - -static int -uper_ugot_refill(asn_per_data_t *pd) { - uper_ugot_key *arg = pd->refill_key; - ssize_t next_chunk_bytes, next_chunk_bits; - ssize_t avail; - - asn_per_data_t *oldpd = &arg->oldpd; - - ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", - (long)pd->moved, (long)oldpd->moved); - - /* Advance our position to where pd is */ - oldpd->buffer = pd->buffer; - oldpd->nboff = pd->nboff; - oldpd->nbits -= pd->moved - arg->ot_moved; - oldpd->moved += pd->moved - arg->ot_moved; - arg->ot_moved = pd->moved; - - if(arg->unclaimed) { - /* Refill the container */ - if(per_get_few_bits(oldpd, 1)) - return -1; - if(oldpd->nboff == 0) { - assert(0); - return -1; - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff - 1; - pd->nbits = oldpd->nbits; - ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", - (long)pd->moved); - return 0; - } - - if(!arg->repeat) { - ASN_DEBUG("Want more but refill doesn't have it"); - return -1; - } - - next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); - ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", - (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); - if(next_chunk_bytes < 0) return -1; - if(next_chunk_bytes == 0) { - pd->refill = 0; /* No more refills, naturally */ - assert(!arg->repeat); /* Implementation guarantee */ - } - next_chunk_bits = next_chunk_bytes << 3; - avail = oldpd->nbits - oldpd->nboff; - if(avail >= next_chunk_bits) { - pd->nbits = oldpd->nboff + next_chunk_bits; - arg->unclaimed = 0; - ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", - (long)next_chunk_bits, (long)oldpd->moved, - (long)oldpd->nboff, (long)oldpd->nbits, - (long)(oldpd->nbits - oldpd->nboff)); - } else { - pd->nbits = oldpd->nbits; - arg->unclaimed = next_chunk_bits - avail; - ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", - (long)avail, (long)next_chunk_bits, - (long)arg->unclaimed); - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff; - ASN_DEBUG("Refilled pd%s old%s", - asn_bit_data_string(pd), asn_bit_data_string(oldpd)); - return 0; -} - -static int -per_skip_bits(asn_per_data_t *pd, int skip_nbits) { - int hasNonZeroBits = 0; - while(skip_nbits > 0) { - int skip; - - /* per_get_few_bits() is more efficient when nbits <= 24 */ - if(skip_nbits < 24) - skip = skip_nbits; - else - skip = 24; - skip_nbits -= skip; - - switch(per_get_few_bits(pd, skip)) { - case -1: return -1; /* Starving */ - case 0: continue; /* Skipped empty space */ - default: hasNonZeroBits = 1; continue; - } - } - return hasNonZeroBits; -} - -static asn_dec_rval_t -aper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = aper_get_length(pd, -1, -1, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -int -aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - size_t toGo; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - for(bptr = buf, toGo = size; toGo;) { - ssize_t maySave = aper_put_length(po, -1, toGo); - if(maySave < 0) break; - if(per_put_many_bits(po, bptr, maySave * 8)) break; - bptr = (char *)bptr + maySave; - toGo -= maySave; - } - - FREEMEM(buf); - if(toGo) return -1; - - ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", - td->name, size); - - return 0; -} - -asn_dec_rval_t -aper_open_type_get(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_dec_rval_t rv; - asn_TYPE_operation_t op_t; - - memset(&op_t, 0, sizeof(op_t)); - s_td.name = ""; - s_td.op = &op_t; - s_td.op->aper_decoder = uper_sot_suck; - - rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - - diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.h deleted file mode 100644 index 1493b2d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_opentype.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_OPENTYPE_H_ -#define _PER_OPENTYPE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, - asn_per_data_t *pd); - -/* - * X.691 (2015/08), #11.2 - * Returns -1 if error is encountered. 0 if all OK. - */ -int uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - - -int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); - -int aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_OPENTYPE_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.c deleted file mode 100644 index 2285677..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.c +++ /dev/null @@ -1,489 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * X.691-201508 #10.9 General rules for encoding a length determinant. - * Get the optionally constrained length "n" from the stream. - */ -ssize_t -uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, - int *repeat) { - ssize_t value; - - *repeat = 0; - - /* #11.9.4.1 Encoding if constrained (according to effective bits) */ - if(ebits >= 0 && ebits <= 16) { - value = per_get_few_bits(pd, ebits); - if(value >= 0) value += lower_bound; - return value; - } - - value = per_get_few_bits(pd, 8); - if((value & 0x80) == 0) { /* #11.9.3.6 */ - return (value & 0x7F); - } else if((value & 0x40) == 0) { /* #11.9.3.7 */ - /* bit 8 ... set to 1 and bit 7 ... set to zero */ - value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); - return value; /* potential -1 from per_get_few_bits passes through. */ - } else if(value < 0) { - ASN_DEBUG("END of stream reached for PER"); - return -1; - } - value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ - if(value < 1 || value > 4) { - return -1; /* Prohibited by #11.9.3.8 */ - } - *repeat = 1; - return (16384 * value); -} - -/* - * Get the normally small length "n". - * This procedure used to decode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -ssize_t -uper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%d", (int)length); - return length; - } else { - int repeat; - length = uper_get_length(pd, -1, 0, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -/* - * Get the normally small non-negative whole number. - * X.691, #10.6 - */ -ssize_t -uper_get_nsnnwn(asn_per_data_t *pd) { - ssize_t value; - - value = per_get_few_bits(pd, 7); - if(value & 64) { /* implicit (value < 0) */ - value &= 63; - value <<= 2; - value |= per_get_few_bits(pd, 2); - if(value & 128) /* implicit (value < 0) */ - return -1; - if(value == 0) - return 0; - if(value >= 3) - return -1; - value = per_get_few_bits(pd, 8 * value); - return value; - } - - return value; -} - -/* - * X.691-11/2008, #11.6 - * Encoding of a normally small non-negative whole number - */ -int -uper_put_nsnnwn(asn_per_outp_t *po, int n) { - int bytes; - - if(n <= 63) { - if(n < 0) return -1; - return per_put_few_bits(po, n, 7); - } - if(n < 256) - bytes = 1; - else if(n < 65536) - bytes = 2; - else if(n < 256 * 65536) - bytes = 3; - else - return -1; /* This is not a "normally small" value */ - if(per_put_few_bits(po, bytes, 8)) - return -1; - - return per_put_few_bits(po, n, 8 * bytes); -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { - unsigned long lhalf; /* Lower half of the number*/ - long half; - - if(nbits <= 31) { - half = per_get_few_bits(pd, nbits); - if(half < 0) return -1; - *out_value = half; - return 0; - } - - if((size_t)nbits > 8 * sizeof(*out_value)) - return -1; /* RANGE */ - - half = per_get_few_bits(pd, 31); - if(half < 0) return -1; - - if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) - return -1; - - *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; - return 0; -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int -uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, - int nbits) { - if(nbits <= 31) { - return per_put_few_bits(po, v, nbits); - } else { - /* Put higher portion first, followed by lower 31-bit */ - if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) - return -1; - return per_put_few_bits(po, v, 31); - } -} - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "n" (or part of it) into the stream. - */ -ssize_t -uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { - int dummy = 0; - if(!need_eom) need_eom = &dummy; - - if(length <= 127) { /* #11.9.3.6 */ - *need_eom = 0; - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } else if(length < 16384) { /* #10.9.3.7 */ - *need_eom = 0; - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - } - - *need_eom = 0 == (length & 16383); - length >>= 14; - if(length > 4) { - *need_eom = 0; - length = 4; - } - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); - -} - - -/* - * Put the normally small length "n" into the stream. - * This procedure used to encode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -int -uper_put_nslength(asn_per_outp_t *po, size_t length) { - if(length <= 64) { - /* #11.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length - 1, 7) ? -1 : 0; - } else { - int need_eom = 0; - if(uper_put_length(po, length, &need_eom) != (ssize_t)length - || need_eom) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -static int -per__long_range(long lb, long ub, unsigned long *range_r) { - unsigned long bounds_range; - if((ub < 0) == (lb < 0)) { - bounds_range = ub - lb; - } else if(lb < 0) { - assert(ub >= 0); - bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); - } else { - assert(!"Unreachable"); - return -1; - } - *range_r = bounds_range; - return 0; -} - -int -per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { - unsigned long range; - - assert(lb <= ub); - - if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { - /* Range error. */ - return -1; - } - - /* - * Fundamentally what we're doing is returning (v-lb). - * However, this triggers undefined behavior when the word width - * of signed (v) is the same as the size of unsigned (*output). - * In practice, it triggers the UndefinedSanitizer. Therefore we shall - * compute the ranges accurately to avoid C's undefined behavior. - */ - if((v < 0) == (lb < 0)) { - *output = v-lb; - return 0; - } else if(v < 0) { - unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else if(lb < 0) { - unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else { - assert(!"Unreachable"); - return -1; - } -} - -int -per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { - unsigned long range; - - if(per__long_range(lb, ub, &range) != 0) { - return -1; - } - - if(inp > range) { - /* - * We can encode something in the given number of bits that technically - * exceeds the range. This is an avenue for security errors, - * so we don't allow that. - */ - return -1; - } - - if(inp <= LONG_MAX) { - *outp = (long)inp + lb; - } else { - *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); - } - - return 0; -} - -int32_t -aper_get_align(asn_per_data_t *pd) { - - if(pd->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); - return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); - } - return 0; -} - -ssize_t -aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { - ssize_t value; - - *repeat = 0; - - if (range <= 65536 && range >= 0) - return aper_get_nsnnwn(pd, range); - - if (aper_get_align(pd) < 0) - return -1; - - if(ebits >= 0) return per_get_few_bits(pd, ebits); - - value = per_get_few_bits(pd, 8); - if(value < 0) return -1; - if((value & 128) == 0) /* #10.9.3.6 */ - return (value & 0x7F); - if((value & 64) == 0) { /* #10.9.3.7 */ - value = ((value & 63) << 8) | per_get_few_bits(pd, 8); - if(value < 0) return -1; - return value; - } - value &= 63; /* this is "m" from X.691, #10.9.3.8 */ - if(value < 1 || value > 4) - return -1; - *repeat = 1; - return (16384 * value); -} - -ssize_t -aper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%ld", length); - return length; - } else { - int repeat; - length = aper_get_length(pd, -1, -1, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -ssize_t -aper_get_nsnnwn(asn_per_data_t *pd, int range) { - ssize_t value; - int bytes = 0; - - ASN_DEBUG("getting nsnnwn with range %d", range); - - if(range <= 255) { - int i; - - if (range < 0) return -1; - /* 1 -> 8 bits */ - for (i = 1; i <= 8; i++) { - int upper = 1 << i; - if (upper >= range) - break; - } - value = per_get_few_bits(pd, i); - return value; - } else if (range == 256){ - /* 1 byte */ - bytes = 1; - } else if (range <= 65536) { - /* 2 bytes */ - bytes = 2; - } else { - return -1; - } - if (aper_get_align(pd) < 0) - return -1; - value = per_get_few_bits(pd, 8 * bytes); - return value; -} - -int aper_put_align(asn_per_outp_t *po) { - - if(po->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); - if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) - return -1; - } - return 0; -} - -ssize_t -aper_put_length(asn_per_outp_t *po, int range, size_t length) { - - ASN_DEBUG("APER put length %zu with range %d", length, range); - - /* 10.9 X.691 Note 2 */ - if (range <= 65536 && range >= 0) - return aper_put_nsnnwn(po, range, length); - - if (aper_put_align(po) < 0) - return -1; - - if(length <= 127) /* #10.9.3.6 */{ - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } - else if(length < 16384) /* #10.9.3.7 */ - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - - length >>= 14; - if(length > 4) length = 4; - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); -} - - -int -aper_put_nslength(asn_per_outp_t *po, size_t length) { - - if(length <= 64) { - /* #10.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length-1, 7) ? -1 : 0; - } else { - if(aper_put_length(po, -1, length) != (ssize_t)length) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -int -aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { - int bytes; - - ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); - /* 10.5.7.1 X.691 */ - if(range < 0) { - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (number <= bits) - break; - } - bytes = i; - assert(i <= 4); - } - if(range <= 255) { - int i; - for (i = 1; i <= 8; i++) { - int bits = 1 << i; - if (range <= bits) - break; - } - return per_put_few_bits(po, number, i); - } else if(range == 256) { - bytes = 1; - } else if(range <= 65536) { - bytes = 2; - } else { /* Ranges > 64K */ - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (range <= bits) - break; - } - assert(i <= 4); - bytes = i; - } - if(aper_put_align(po) < 0) /* Aligning on octet */ - return -1; -/* if(per_put_few_bits(po, bytes, 8)) - return -1; -*/ - return per_put_few_bits(po, number, 8 * bytes); -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.h deleted file mode 100644 index 23079c9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/per_support.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_SUPPORT_H_ -#define _PER_SUPPORT_H_ - -#include /* Platform-specific types */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Pre-computed PER constraints. - */ -typedef struct asn_per_constraint_s { - enum asn_per_constraint_flags { - APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ - APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ - APC_CONSTRAINED = 0x2, /* Fully constrained */ - APC_EXTENSIBLE = 0x4 /* May have extension */ - } flags; - int range_bits; /* Full number of bits in the range */ - int effective_bits; /* Effective bits */ - long lower_bound; /* "lb" value */ - long upper_bound; /* "ub" value */ -} asn_per_constraint_t; -typedef struct asn_per_constraints_s { - asn_per_constraint_t value; - asn_per_constraint_t size; - int (*value2code)(unsigned int value); - int (*code2value)(unsigned int code); -} asn_per_constraints_t; - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_data_s asn_per_data_t; -#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) -#define per_get_undo(data, bits) asn_get_undo(data, bits) -#define per_get_many_bits(data, dst, align, bits) \ - asn_get_many_bits(data, dst, align, bits) - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Get the length "n" from the Unaligned PER stream. - */ -ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, - size_t lower_bound, int *repeat); - -ssize_t aper_get_length(asn_per_data_t *pd, int range, - int effective_bound_bits, int *repeat); - -/* - * Get the normally small length "n". - */ -ssize_t uper_get_nslength(asn_per_data_t *pd); -ssize_t aper_get_nslength(asn_per_data_t *pd); - -/* - * Get the normally small non-negative whole number. - */ -ssize_t uper_get_nsnnwn(asn_per_data_t *pd); -ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); - -/* X.691-2008/11, #11.5.6 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); - - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_outp_s asn_per_outp_t; -#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) -#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) -#define per_put_aligned_flush(out) asn_put_aligned_flush(out) - - -/* - * Rebase the given value as an offset into the range specified by the - * lower bound (lb) and upper bound (ub). - * RETURN VALUES: - * -1: Conversion failed due to range problems. - * 0: Conversion was successful. - */ -int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); -/* The inverse operation: restores the value by the offset and its bounds. */ -int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); - -/* X.691-2008/11, #11.5 */ -int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "whole_length" to the Unaligned PER stream. - * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. - * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. - * This function returns the number of units which may be flushed - * in the next units saving iteration. - */ -ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, - int *opt_need_eom); - -ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); - -/* Align the current bit position to octet bundary */ -int aper_put_align(asn_per_outp_t *po); -int32_t aper_get_align(asn_per_data_t *pd); - -/* - * Put the normally small length "n" to the Unaligned PER stream. - * Returns 0 or -1. - */ -int uper_put_nslength(asn_per_outp_t *po, size_t length); - -int aper_put_nslength(asn_per_outp_t *po, size_t length); - -/* - * Put the normally small non-negative whole number. - */ -int uper_put_nsnnwn(asn_per_outp_t *po, int n); - -int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_SUPPORT_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_decoder.c b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_decoder.c deleted file mode 100644 index 5b87703..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_decoder.c +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* XER/XML parsing support */ - - -/* - * Decode the XER encoding of a given type. - */ -asn_dec_rval_t -xer_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *buffer, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); -} - - - -struct xer__cb_arg { - pxml_chunk_type_e chunk_type; - size_t chunk_size; - const void *chunk_buf; - int callback_not_invoked; -}; - -static int -xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { - struct xer__cb_arg *arg = (struct xer__cb_arg *)key; - arg->chunk_type = type; - arg->chunk_size = _chunk_size; - arg->chunk_buf = _chunk_data; - arg->callback_not_invoked = 0; - return -1; /* Terminate the XML parsing */ -} - -/* - * Fetch the next token from the XER/XML stream. - */ -ssize_t -xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { - struct xer__cb_arg arg; - int new_stateContext = *stateContext; - ssize_t ret; - - arg.callback_not_invoked = 1; - ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); - if(ret < 0) return -1; - if(arg.callback_not_invoked) { - assert(ret == 0); /* No data was consumed */ - *ch_type = PXER_WMORE; - return 0; /* Try again with more data */ - } else { - assert(arg.chunk_size); - assert(arg.chunk_buf == buffer); - } - - /* - * Translate the XML chunk types into more convenient ones. - */ - switch(arg.chunk_type) { - case PXML_TEXT: - *ch_type = PXER_TEXT; - break; - case PXML_TAG: - *ch_type = PXER_WMORE; - return 0; /* Want more */ - case PXML_TAG_END: - *ch_type = PXER_TAG; - break; - case PXML_COMMENT: - case PXML_COMMENT_END: - *ch_type = PXER_COMMENT; - break; - } - - *stateContext = new_stateContext; - return arg.chunk_size; -} - -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define RANGLE 0x3e /* '>' */ - -xer_check_tag_e -xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { - const char *buf = (const char *)buf_ptr; - const char *end; - xer_check_tag_e ct = XCT_OPENING; - - if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { - if(size >= 2) - ASN_DEBUG("Broken XML tag: \"%c...%c\"", - buf[0], buf[size - 1]); - return XCT_BROKEN; - } - - /* - * Determine the tag class. - */ - if(buf[1] == CSLASH) { - buf += 2; /* advance past "" */ - ct = XCT_CLOSING; - if(size > 0 && buf[size-1] == CSLASH) - return XCT_BROKEN; /* */ - } else { - buf++; /* advance past "<" */ - size -= 2; /* strip "<" and ">" */ - if(size > 0 && buf[size-1] == CSLASH) { - ct = XCT_BOTH; - size--; /* One more, for "/" */ - } - } - - /* Sometimes we don't care about the tag */ - if(!need_tag || !*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - /* - * Determine the tag name. - */ - for(end = buf + size; buf < end; buf++, need_tag++) { - int b = *buf, n = *need_tag; - if(b != n) { - if(n == 0) { - switch(b) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* "": whitespace is normal */ - return ct; - } - } - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - } - if(b == 0) - return XCT_BROKEN; /* Embedded 0 in buf?! */ - } - if(*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - return ct; -} - - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - if(rval.code != RC_OK) \ - ASN_DEBUG("Failed with %d", rval.code); \ - return rval; \ - } while(0) - -#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ - ssize_t converted_size = body_receiver \ - (struct_key, chunk_buf, chunk_size, \ - (size_t)chunk_size < size); \ - if(converted_size == -1) RETURN(RC_FAIL); \ - if(converted_size == 0 \ - && size == (size_t)chunk_size) \ - RETURN(RC_WMORE); \ - chunk_size = converted_size; \ - } while(0) -#define XER_GOT_EMPTY() do { \ - if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ - RETURN(RC_FAIL); \ - } while(0) - -/* - * Generalized function for decoding the primitive values. - */ -asn_dec_rval_t -xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, - const char *xml_tag, /* Expected XML tag */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder) - (void *struct_key, const void *chunk_buf, size_t chunk_size), - ssize_t (*body_receiver) - (void *struct_key, const void *chunk_buf, size_t chunk_size, - int have_more) - ) { - - asn_dec_rval_t rval; - ssize_t consumed_myself = 0; - - (void)opt_codec_ctx; - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - */ - if(ctx->phase > 1) RETURN(RC_FAIL); - for(;;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TEXT: - if(ctx->phase == 0) { - /* - * We have to ignore whitespace here, - * but in order to be forward compatible - * with EXTENDED-XER (EMBED-VALUES, #25) - * any text is just ignored here. - */ - } else { - XER_GOT_BODY(buf_ptr, ch_size, size); - } - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - assert(ch_type == PXER_TAG && size); - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - /* - * Phase 0: - * Expecting the opening tag - * for the type being processed. - * Phase 1: - * Waiting for the closing XML tag. - */ - switch(tcv) { - case XCT_BOTH: - if(ctx->phase) break; - /* Finished decoding of an empty element */ - XER_GOT_EMPTY(); - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - case XCT_CLOSING: - if(!ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_UNKNOWN_BO: - /* - * Certain tags in the body may be expected. - */ - if(opt_unexpected_tag_decoder - && opt_unexpected_tag_decoder(struct_key, - buf_ptr, ch_size) >= 0) { - /* Tag's processed fine */ - ADVANCE(ch_size); - if(!ctx->phase) { - /* We are not expecting - * the closing tag anymore. */ - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - } - continue; - } - /* Fall through */ - default: - break; /* Unexpected tag */ - } - - ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); - break; /* Dark and mysterious things have just happened */ - } - - RETURN(RC_FAIL); -} - - -size_t -xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - - for(; p < pend; p++) { - switch(*p) { - /* X.693, #8.1.4 - * HORISONTAL TAB (9) - * LINE FEED (10) - * CARRIAGE RETURN (13) - * SPACE (32) - */ - case 0x09: case 0x0a: case 0x0d: case 0x20: - continue; - default: - break; - } - break; - } - return (p - (const char *)chunk_buf); -} - -/* - * This is a vastly simplified, non-validating XML tree skipper. - */ -int -xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { - assert(*depth > 0); - switch(tcv) { - case XCT_BOTH: - case XCT_UNKNOWN_BO: - /* These negate each other. */ - return 0; - case XCT_OPENING: - case XCT_UNKNOWN_OP: - ++(*depth); - return 0; - case XCT_CLOSING: - case XCT_UNKNOWN_CL: - if(--(*depth) == 0) - return (tcv == XCT_CLOSING) ? 2 : 1; - return 0; - default: - return -1; - } -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_encoder.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_encoder.h deleted file mode 100644 index 9d75922..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_encoder.h +++ /dev/null @@ -1,83 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_ENCODER_H_ -#define _XER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ -enum xer_encoder_flags_e { - /* Mode of encoding */ - XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ - XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ -}; - -/* - * The XER encoder of any type. May be invoked by the application. - * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). - */ -asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* - * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) - * output into the chosen file pointer. - * RETURN VALUES: - * 0: The structure is printed. - * -1: Problem printing the structure. - * WARNING: No sensible errno value is returned. - */ -int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, - const void *struct_ptr); - -/* - * A helper function that uses XER encoding/decoding to verify that: - * - Both structures encode into the same BASIC XER. - * - Both resulting XER byte streams can be decoded back. - * - Both decoded structures encode into the same BASIC XER (round-trip). - * All of this verifies equivalence between structures and a round-trip. - * ARGUMENTS: - * (opt_debug_stream) - If specified, prints ongoing details. - */ -enum xer_equivalence_e { - XEQ_SUCCESS, /* The only completely positive return value */ - XEQ_FAILURE, /* General failure */ - XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ - XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ - XEQ_DIFFERENT, /* Structures encoded into different XER */ - XEQ_DECODE_FAILED, /* Decode of the XER data failed */ - XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ -}; -enum xer_equivalence_e xer_equivalent( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, - const void *struct2, FILE *opt_debug_stream); - -/* - * Type of the generic XER encoder. - */ -typedef asn_enc_rval_t(xer_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - int ilevel, /* Level of indentation */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_ENCODER_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_support.h b/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_support.h deleted file mode 100644 index c3a36e7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/ASN1c/xer_support.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_SUPPORT_H_ -#define _XER_SUPPORT_H_ - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Types of data transferred to the application. - */ -typedef enum { - PXML_TEXT, /* Plain text between XML tags. */ - PXML_TAG, /* A tag, starting with '<'. */ - PXML_COMMENT, /* An XML comment, including "". */ - /* - * The following chunk types are reported if the chunk - * terminates the specified XML element. - */ - PXML_TAG_END, /* Tag ended */ - PXML_COMMENT_END /* Comment ended */ -} pxml_chunk_type_e; - -/* - * Callback function that is called by the parser when parsed data is - * available. The _opaque is the pointer to a field containing opaque user - * data specified in pxml_create() call. The chunk type is _type and the text - * data is the piece of buffer identified by _bufid (as supplied to - * pxml_feed() call) starting at offset _offset and of _size bytes size. - * The chunk is NOT '\0'-terminated. - */ -typedef int (pxml_callback_f)(pxml_chunk_type_e _type, - const void *_chunk_data, size_t _chunk_size, void *_key); - -/* - * Parse the given buffer as it were a chunk of XML data. - * Invoke the specified callback each time the meaninful data is found. - * This function returns number of bytes consumed from the bufer. - * It will always be lesser than or equal to the specified _size. - * The next invocation of this function must account the difference. - */ -ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, - pxml_callback_f *cb, void *_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_SUPPORT_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/CMakeLists.txt b/e2sim/e2sm_examples/kpm_e2sm/CMakeLists.txt old mode 100644 new mode 100755 index 66fbf41..07562ff --- a/e2sim/e2sm_examples/kpm_e2sm/CMakeLists.txt +++ b/e2sim/e2sm_examples/kpm_e2sm/CMakeLists.txt @@ -81,7 +81,7 @@ endif() unset( GPROF CACHE ) # ensure this does not persist # each binary is built from a subset -add_subdirectory( src/ASN1c ) +add_subdirectory( asn1c ) add_subdirectory( src/kpm ) diff --git a/e2sim/e2sm_examples/kpm_e2sm/Dockerfile b/e2sim/e2sm_examples/kpm_e2sm/Dockerfile deleted file mode 100644 index 9735353..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/Dockerfile +++ /dev/null @@ -1,106 +0,0 @@ -# vim: ts=4 sw=4 noet: -#================================================================================== -# Copyright (c) 2018-2019 AT&T Intellectual Property. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#================================================================================== - - -# -------------------------------------------------------------------------------------- -# Mnemonic: Dockerfile -# Abstract: This dockerfile is used to create an image that can be used to -# run the traffic steering xAPP in a container. -# -# Building should be as simple as: -# -# docker build -f Dockerfile -t ric-app-ts:[version] -# -# Date: 27 April 2020 -# Author: E. Scott Daniels -# -------------------------------------------------------------------------------------- - -# the builder has: git, wget, cmake, gcc/g++, make, python2/3. v7 dropped nng support -# -ARG CONTAINER_PULL_REGISTRY=nexus3.o-ran-sc.org:10001 -FROM ${CONTAINER_PULL_REGISTRY}/o-ran-sc/bldr-ubuntu18-c-go:1.9.0 as buildenv - -# spaces to save things in the build image to copy to final image -RUN mkdir -p /playpen/assets /playpen/src /playpen/bin -ARG SRC=. - -WORKDIR /playpen - -# versions we snarf from package cloud -ARG E2SIM_VER=1.0.0 - -# package cloud urls for wget -#ARG PC_REL_URL=https://packagecloud.io/o-ran-sc/release/packages/debian/stretch -#ARG PC_STG_URL=https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch - - -# snarf up E2SIM dependencies, then pull E2SIM package and install -# Dependencies: sctp - -RUN apt-get update \ - && apt-get install -y \ - build-essential \ - git \ - cmake \ - libsctp-dev \ - lksctp-tools \ - autoconf \ - automake \ - libtool \ - bison \ - flex \ - libboost-all-dev \ - iputils-ping \ - net-tools \ - nano \ - vim \ - tcpdump \ - net-tools \ - nmap \ - && apt-get clean - - -#RUN wget -nv --content-disposition ${PC_STG_URL}/sdl_${SDL_VER}-1_amd64.deb/download.deb && \ -# wget -nv --content-disposition ${PC_STG_URL}/sdl-dev_${SDL_VER}-1_amd64.deb/download.deb &&\ -# dpkg -i sdl-dev_${SDL_VER}-1_amd64.deb sdl_${SDL_VER}-1_amd64.deb - -# -# build and install the application(s) -# - - -COPY e2sim_1.0.0_amd64.deb /playpen -COPY e2sim-dev_1.0.0_amd64.deb /playpen - -RUN dpkg -i e2sim_1.0.0_amd64.deb e2sim-dev_1.0.0_amd64.deb - - -RUN mkdir /usr/local/include/nlohmann -RUN git clone https://github.com/azadkuh/nlohmann_json_release.git -RUN cp nlohmann_json_release/json.hpp /usr/local/include/nlohmann - -COPY . /playpen/src/ -RUN wc -l /playpen/src/reports.json -RUN cd /playpen/src && \ - rm -fr .build &&\ - mkdir .build && \ - cd .build && \ - cmake .. && \ - make install - - -CMD kpm_sim 10.110.102.29 36422 diff --git a/e2sim/e2sm_examples/kpm_e2sm/e2sim-dev_1.0.0_amd64.deb b/e2sim/e2sm_examples/kpm_e2sm/e2sim-dev_1.0.0_amd64.deb old mode 100644 new mode 100755 index a793bf33a98bcfc5b161bb5a6f9df5b4f0747d0a..7abedad834bc1a841f2ec4a724b8f58ec69773d6 GIT binary patch literal 508242 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

gu`JM%bMr+l2ea|YLe&cPAf$;<2SRmCrj z54I&)`f)jK?Sxeh^Y%Sd{Gd&9l&Q zGflSQYnLv8z2o!&?ZGu%ck8pzK8J6YF&hqx(Os zO&C$t#p)ryk--ZfU`@q=63O@37_Ga@v^6 zbcTD%#JsB<#Oo$*ul8$mUay}0k`%Ch$LFH^jd+(HjqNLq3ND7qC(Wc#nYVBI3rOE^ ze?i~)Gee_&B6GMfIM43FakaTR+(oG!z<l}fn|?XxQcL)TGai#$KVI`)&mo;nZ8yFOsH}msb7u&;N zpzV+Rp3`+PG>@l($FzC}3{{vU-2oy?C$k2^KkK%Yk*E3n*_VBhIBa)ga3J$&4=^*q z7tzf%6~_~T!^H&cmMw2{+|u`}4G#W7?T zWs=!9`p8X?7Z+usFH0gYembgs7WsyKfv55|*n~(~NDekD4f8m87D5;N%e+Q4FCQwL zzP84XN`y;m zh*EEIo`2ov13l-uba=WW|9 zsNZ*ZeF>%g@Ja@^t&u~$g8%{)ryvDB-n%H{z34;YbBppoMYX!ZF8@hotU3E39yJ#5rkR!0pOOTu5 z+uU$rkG@N`YJ-%bUi&%3c@wL{QL@u%u@QgW?4ju!C*FgbIrHLLH$KKKTjh?(JF0dW z6DFUN5VRnUN(6Te19zJKSuZZX%0KX5Qu>`b zt_v9bdYz2REYyAF_iMlLGXHU@_Y&UvCP6FijMdySO}mIc!sqwIR#o3Pi{JIW>hne( zhX~2%$P>Y8bV@n}P_&gxBA$Xkd#9~$rh!6adT)jB>=#}*HwpWivaqD@P=&u3)|v_T z9WKllrKM#L#2(=thG8h`moBCcHLvL=rp))s z1?y6dwpfS-$5_Q6wyBn_=}71rrK&d?f~-0&Vsp^PNw?!FQ?T$%t|qA_=NjnBc*)30 z^hEMD7^^eEJD*&b;OG5Vd0mG!IB+^y7a}I>Ct_oAo?0K)~Ov z>j(no9-`n$47)DhiD@8{sTuY}bC=ScQGj1arilNpGOVd0w&zfFY2QNb&3TB_+BKCd z(&xixzxG>+U;b5H6wX|x-ObRg>mST(pSGNwIjek|t0lO=>Do7c93tHz=VpE1ydWH+ z(?}@{)-I>pRxST%6NYv)Q#BRxP;F9n1QE7Cb^JN`elY*toEjpp=2w2Q3++@H&iFsB z+?yl|@q`MBBhEKG+oGIt)i<~g;PFLStnb$&My5P8bZ~XgYR}ufw%K)^rmUpS4DNfs zgILWLqa8HyNZQ|-f6xysnY8iw6(56|y6wY^Bj93eeO&FlmhO}y=pQbEL-o8#K4QZd z{AjUEX4|Yh!z5D{A*BZ@e_31jjWR7m8>py7gSfOA^f~CAqm9b4_slDHr+_h(o$T0` z&wu@iryuG%2(s^vQsIjat6At5>i8UR3FqhysWe|3ZaePg`Urf%UOt)nuVpM4^+lvJ90KCm6N3Pn0l;^qoe_9j(XXlMmyB0uv$oerH1Fi@23~kzt9-$A8+E>>z1G=4&=&pRM>r-1t!-^}U)&nH1^&M0_*dk#p`E zyvTH~t?=*@t81M<37gOY(SSy~_U5FH{(&-hX7L5(n`UDuk|hCV%o@3>;|DLgvY^m? zxF{#9oGDsCo(byG)aK<~zP;po9nqBOowN!NCUpUa`1oW&Ueh_S2&6GHSblWXC5j~0 z#rv~2M{fJ)_C@`a$m}KXD`HmJ(LhRJg#kMzgts8(co@#qk2*!UCk85KJ{|6td3I1>IWpx$*V=2$}Hv2n~ub|j>}|_LaJQE(pl>Lydf8zL2u|HGjlc$I(`>;nZd zZ`_OS&-`&O=)w|9L$j3Ht$w}x_1=E<>-07{^!t6>A$vPt?WR5gV(sW2?`I2pJE^ay zz86l|wx9t=R@O#6@j!^@0@cdy{_a;hd%OF2z|KLO7vz~QKj>Q*q_Ug6s z<3r0z@;)`s#V6>+*B}I>Fldf(O}z2&Cf+>Z#4adFsoP4o)q={e3mNd&wg9!vluk;=JaH z;kJP>3S?}0K1T8Mue(3x47s&j-niGR?Ni_yPET9S84vcH^10`G?erM2YQD|JK3Swv z{`%{emC9aqe}CUPD0qq^nZK;RAJ)z?$0S`WZ%724Jv>8P>N$gLFF4O=&p`b1D&&s$ zTeT35r}sfGHE#!IUo5k-8O?L|EaNB{|aYGfD$&Ah&M<0-Jx+yMF>JAaZe4aOJCy5J0{k4>6 z-TM2Bdb8bt{pqTNqlwo>xCg|eJ)tX-wC8>5CX&4G^}x2s?xWiw&;nhwUUS`M3r>o5 zoifz9WIWOkV9}}=)08>^#^Joy<5t1oY?+BoW#QLrvEx6!DWE-OXB?P_Uvt~j#PqBi zx63pA$}L7hGvFQLb!_5`xDuorgy3+JH-%Mb7J72KuZndx~pgpUWC=RUPSc%i-_wo|^tN^MsKvqT8dO&1>a2>xr~t zf^C0*thlk5fmpWmV!a`Y5f?@e0+fwr(`8)kuL) zgm>nRX+$yB&N{i-`M&VyU_yq~{*c_4(IFIOaE!j_y(oPYQiF7uTx-BN@TVCD3bV(2 zy!FTa)|NO@7=qT1Z@+aabf95avB>%8VYI#v!d#S%?9q-G&twGy&eHb9(V<+zaGJgb zC|`g5b-8jP4yF9P%}07(jH423Nf@u7L@>3Dr5 zT-(qdkTObe?|NG3?9`%QM6vhSwLc|rp^p=y71rA7V{$1fXF2`l!3@jO`88F|`TMs{ z@4(UR=Zu@lB)%HWV?(~{0lJQiZ$gYNvnCAe{`rEPeZ6ka`8JIz7vL75$mV9zxfbz6 z!w61H*sbf1u=ra`exU~c{AX;kC?KUP7yc5y`b)R?&*6HBivT4$Zoon7mSEMKG@9_2 zsBLszPSxSpUn`$)Gh$Aq!NBMR_Y%aQ9KD2iNObSP#&TKcf-0#$<<3Y^ZBh`n`S7V=|n3OH98wF4be+D@5K zR0wLFwBv3akPK*5EK=bz6*Qx|uJVtn?0&KhYNS$h{?5o(izVw|=#PnzY^~`0@Bbz~ zskSq)-O0q3e(dm%onjK9seO=t?HIkWPxIq?mH`N#R3+7)nCavam`6g8?!pju2_-DC zCD+UC%#?*aFF1VY1RjiB&Y%M8n=!Md=$ixFkYGVqi%9Is^TA7l>&=HxCb;VYBUeo9 z&~;=goXSjSroi#g;SptwWO+86V{mZB6TBW*=0CrQVTxCO|9c91ti6uJ;vjt_DW1jc z#S4&`x*2*n$M_rLLNou@zrvv^$2M`Ar)%LOsQYGRN_$fWt(P3JbX$NWVuyd?*k#~n zJ4a^0GCdDMtA@U!!hKZw^h#e@BA#TdEBv>aY`!3aZ}iA|dwA$n;EbttyCB_!Z4X72 z|Dn8&9>rUl7$*GkiOe@_M@Y>fLO-N?6~!guIGR+0|08ZhkR)uh+&D%C~} z`ay2G-Jml;^#etge+59GzporLHVI#CZ{Kt}TQ|eWRxrNV4u*XcLW54Y-5HIx4}-w~ z*pjocFQn7WQxuWIt=nkO2RMg)Z+H_!>fq0S!U_@KQi2sB)U#!O9+cEOg`6gc+d+U1Gx&~{I2@7D@DsGnz5h{DSX znrNy`FUG)HAn_cZw0?3AzpEeqP?Qo2o;bh-H(M8%?fTIRhHR-&$S_uhe~N5q&jJkm z#vpKV&z28fh|ISOZg35cljswjdC{lM*QWb8mUuxLRxERR*``z>aYBYbM$3~?lh#Jj z81q)T9HEClAVt;rb?lt8>6q{SiU=K`tbSdHtG>n~O^39pevoVX%@~6TOh)VoLYQ`g z3GQ4icswapGzBFN-N&&v+VsZg2+xQc&3@x-7F17)83O}?yyipLriy$D{-xi=;J&x7x-Uu;xiT5SytTfCBPSD!u_ac%Kcx^d93mGe@(Uj ztd@6^@n84KJ1hI|r98~3D2>0oJVS+ZW5}8aRFJm#iVlct7z*!{pHI2#B?2Ca}SVOWzaOhmn3)A}XMh2f${57C@P=m1Ia`kc#T%*k`Q zeBXc=Qb{Ah!mo-I_pl+Cbm?>(p)x|oA4%<(e2FM0-vuLosD1eCPzNxOjTp9hLcQzb z$*MNO!=?BcI=HwmVp?cX>62nDjL&2kQZPLj)&N$zD}xNj)jl&`;eqIp>Y_f6)Xivm zpm>uW;(qz#kitLYlTZIS_o<5!k)P22e}5+#|8M{0-irP&<+0oUJU3d-sde!N@Wi0# z`ui95(0w6akuKB-8HrKaBM*GT&HROk zs}_t{=OCl`>FHX?1mOJbB^r8&yQ%_;LVbUD6WuDk)g~o+DNqW^Pi|bmCCN%;Z9)(8 zE4^DqtazGgloV6`Cz!=JK~wsA{{DcM;ONc8&`RLlJQ-=-8>b zDAQVnavBSr$r$^r=7z&YaSS98A-{)F9(y-EoNd%d_?fZYv~xF^6)?dZ2^>WzAPfOk z(!vXHMllgw;2$cUfL5{f1MyS*Zd+U7%=gpHsjuZa(yF$9Xq=rDCW)_gx8g8KmcfeR$N*U-3ds*J~A$IS;dQw4`h`HVm%%D$2*8;5t`8fQMjPKK`ja%E`E8RD3G?nuxsRSR<=E#|C7S;<9LiI_TS~* z{oSPgXRq>d#s4ki`6BGUPkSK>u-?$eEG@h!H@iLvx?}>UBBq#3qlmj>>VVWssTlsQ z_O6aT7{`sbWc;mVN~6#h>$)bH4a3zIX;Yce} zqY{jVjwx0|0+g<$e zF8->_eVq$=)dF+QZN{&OS+pZ3y;1)vyX?9mICoaG47uO2# z^o!0n-#FD>VEg~-ls{cx^XXe;>&pLiRFSWWT7ksp*RS!j`mTNL<2QuP--=pv#M3sJ zJg$*~^|bx2z18$1ZL=D>D2acMZhhes|DkR!)&9m{QSFN(r08t~+>T({QTAhn?X8EQ ztB~5JjF@#hSYeE}w$^Urb>;=%vkHuzZycmal9gOT%_iB!ex)&(YZS7JURUc_@bly~a0j1&yoF z$5~%sv_;&LdadaK*WsSRA6i2nL0k(yhNe@+bwBX9aXHE15coNl{!uS!VZ+Sxzv^`d zNECM6aphlX5_|pN=4#Ew|JO`_RljmaU`-zZ&UmQ+P#0BPx%guK?$gI${2|mmNodh+ z-+j6ehl>U#T~C0_IFr!mR%gR8XH>86iw%SOg-BMje$jycxs9eyw!Q)K46Q}L%K?67U)iHs_k!$gv+VEs`ARa$spw?XXZS(Swt($jr!vNUlXpMo!5OP)z58c|u z#d+h+VMJQRroe^4-j0+hk71U33SJ=f@;sqS#t#j7} zgm=l5A?|{+Yapvx?2-lToi{F;sPLUx;bu5-`HUA9?^v>!vhfhunHCn!qw`kdXwG(( z-LMOPa?5BeZ?t(;(&T3 z7l>ZCfSH6d7E-!g5}RS5Y;CxJHVTT0ANOu3L_9j5pscLBs)(Eyl(fO>uckR`@Pd^e zjSu>cIC{U{eyy(4O=nGAz5Mbn=6dN4eh<5fdGhl>Hlj z94cQx%QllvX^m#VD_sH7zdC$TNI@@M54~Lu;#XIWdj+qq$dd(*53l%5!M!T}1OIx3 ze-#g$&${1WR0=-y4{cV7ZA(|k+ z^ZIwbBY7XxuT#AH>&ck%c97mju|7tVMrQ;&S1g>H&70>HH`(fU9k%lmzAeIAD;_TK z;@tA)0b@GLAU&{Gb2%5m3GE^rXZ?RB>*+7zQ#bW#g6)cbli#}HTbI5W$E(?7KfB33 zHVOSWQBvV+B_LXHS?^n*b;TD1X2V0&%&gd5Paf)~icRVdelOSJ+4{dL-8cGCZA`iU z-Q6kgB=f)R?XC2GOL?;5zdsiRpbCP3vA$&p?C)ZgOY;4KV!uB$Nt`|77$^LgmRHW# z6LC=#?%_T0He2cB!6JVadnk5QZ1*@7vEFeJLIc2t*hI-W64$MVGD~qmf8$Y>7jcJ+ zlLM?7rHg~QbeW9sfPt^SaxTT~X&k;?50I{!(}cVPO+>ne z0jIm$Bl0GtysR=;PdYh(5}1q(0bZn~2q>n~kx}q)Jq$SyeOIgv$}n&rsZ8!F3$l^_ zeA~EMji;lKj{l!^qxux{l7AnY6Hc5RpS&A)fLWVp%<>;H9T2ACCqFwN#~xpvILDXG zL-M_${gMA{n;t?mZh3hRybZp|$k~zgoPTvcqC4$H; zi1rE;`k+S)wMV(`mA$_x8sF}+^}-01?!w0zK{^*F?@Eq{wxcS?H}ukZ8zHRwoE%UX zN~}8}ioU~+yaX1t@F1huHCGzMp27orxA~g7gHwe12o6p$-25MZ9Aq8~n4^X$OL`5fnN8TU9p@U*a`CyBKWaA9Lbtfezlg)XUHlrU|=xmr6A^H^RTvAd9`*7Mf<|q4+u$b z1T-FLiP*bX>@|Q*rW~XgWF#^$V3UntF8p;FBNza>%%R6-p1_1`R<^cIYwyvQ81Gd# zE0na7l3dF~mpleNk{^0Q!Nm9)VsSte9D5p4apa&v7cU2ek=#V2bu{_8G)Y`b(j-K_ zm@$_;yrCRe=DMYi1v+cq!FZkEoWX>$(P$)wCrp_p2A$4i)MJ(T3C;UEfCxgsEpqmu zP-7zyvhw)Q8=*rrvqN!yZfV8`^WDYp*49z8gt1vuH{eYAUzgFyatLgq6avkm#`fh% zTTu%Q9oBjGn_{89>55 zi^lpsOls}5|a8Sl^xniRJxX*O{4;b~Q)&K77zD((V_p2-Y?^2#G zj{m!;y|prb;{D8=pUUEla&HIynlU^9-JJuZ!;@OO?Orw;c%4=|SzALV2|PW^S8O7c zC|Ns0sk(*=AShaqMJtw~hpi??h(eH6QLbVGd3N4-SG%ZVxgAlglE`|fZbY@c3T!Ku zCLXl*R!~dtX7hx|%O>Zg(A3T#hI8*R_@0P;CYcryjuwhA8%I`_K==pJJ!CW)1GA)z zZ^fL@l*oP*pgLZC<3D5^7$@sc1&NC>3ZgM#q8!XIg-SoaJiMqMVKIvRS|}7YgrUF6 z!des`|62Z3Ef@b$d8Nlj5{5^^cCid3W@lD8SXAx3j$wR9HyJEz>_!$oXr2exBqgL|6wW5Gxz^d>>rbUu^J5qF!kkW(!V1p(T4O;4#_DO zPKy_7#7UX=y^g#EBJIl>ad@$Lf1C*Uz;==Ar>>8;OaQ2uVXH|Mm=JB+=#2!Cj9(@^ z%ndkrs3!oS2`Ktip#l0>!jgx7CJenRsm}Cbcm-s<*@8SCxf>$>3_ElN9x28gQkTi0 zOQfMj_KeF5(pdHT2O3WNMuu2+u^)Zu03_%wK$(hT5T`|#wWnWgJ~!Rv!K|T8AUU5&S)Brm^SAiE|!HP7kjFlI#aRqX2a5( z3Cnc0olG=Es0#h;F@iqG_O+MO+c$x#11Ok8gFsqRNWj`lI9dd!p~x8C^$=?!oc~*A z;{1lPilPXaQIKG_*Zovb@d>yOZca!h=36wcXI8K=g>k9R%vfv1l$O%GZ^aflibgrDOkHz`!-Wp9 zWn4?v#WbsApA;B=x3c{#&s6!pUH|d2-h7k>V2b?zvRd9t=6|fN?thl^d@=VwV%N&$ zXj1{`-=0nhpjuh58er|g3V=1MS;#PJIt^@X6$#zz&*tvgzp{G!zo5aSnRdHpdfN6!?nr z=ZHy=#F&bhRlQWzn!-A}z8aLHc!99jhdvxP<6tu4P7^*T%)%BNM!bn&iH8y8niBR_ zSN=_pQ%MGiAYml}LY7)ys5fDS1M7cF8gwz2A!=wU8PR>>8e9cXQzNm~LVZz_87nI+ zn<tlG|473azJVzf02(pzWp6 z_GU->skvzz;u;$*5!YTlF=Gv_J%qQuVDdK$XFUV|cku|;kDh7z|DC-`lK)%fe_PV? zrSN}=wH?QjOuV0!<74HcVD}z*A3#l;w*jmG<-5&kcLH39<0(AWK+u3OtBqjRO@XKY zgg;J)N2Y3e>(OnXj5u~1aGrP1L8U}LKJA5RweaO(!s+^bSJY!-seJd~tt~B-{z~Q2X7Xqf zy{ldnx*RzA0DUFd(Nm0QbH&1cP6`G?sA}Hse z%m*lA1Nk0><>UbT+>uzKNnVN2fo{1Ak?%FBHyP9IwdEVd`&e$MT%9E4*3s7kNtUB= zaMzQuOJyh`eLAlxf7F)%xpS=S@t;YEfBV@p2*CiXwbxTGB~6Z zLC)yb3w;hSd?c3>y<-zCDicQjh>O&j7sKU^FUj6aD~Uy88Y#n=vMR?ePO8vBY`QB4H`Lfv&rlSqL^4y$W*vns~7{ zUI?fs7%v%>c|*@7WP~?0A|js(UBZ=TGSY zJBlM#LnWv1{`92e;Ce}#GWi2M5QDSiDO z`}%#m)tu7Vw4!0=KFqFNFvaKp{ok4HcvM$M=@mi3OEl9S8l?xyUVF;sNsICst0FDT z&pe_J7$-6Crkw$2pccJtPp&wTcKnHgVFaA-aQ3?^L$$3b24q9$oQpOlKzcK_A+;n( zo^hZonuZy#YE>tK^r~ugqWooHR8B0asg*4QkXE#1tf{oFZRVj$DcG39IYyHWGsm-$ zQy!Bn8;R116~%D;n1CBjV#-xQv69?hkI(D%(s>=E;1UI&YF@P6R`cZN&(6T>j05y0 z17^Tu=KUxjYwtXdk*I)Kx;EWVq}1BSr!F?;*5B37f4=yx(R?eEDkSjh`O}g8 z#cVp`{yla{TE`3ZNDS$+c~n0?`PqatXH7~_Nc|UP>E>tW?+7IHqe8iu2(T4z1mg;! zSa`9Pj+i-1H1M^xl&hwbGqAA(p=Ckva>p^i8ZrzO=Xw`{2ZfQky2os&xMckPwP_`! ztr8p*>giGaxa80r{gXyizASD9qs`ZZ9OF>mccE~p|?jr}7)eA{6EAFH7f9vP1&DP~bqNL1dfH}81ecwaL(Tmu|s&MWj*Dgm= z0u{M709*7ok=~|>xd>yeB!VKSsL(^nVhjQ=9HcksD?1bwfyR}bdpMGCCrj3tQ*Yc4 zy+N(H!ZAG0P&$n#{UBnAGR->2jR4NCjX zlR$6f;V*9d>0Wd)@LiH2-D_t9m%|lJJj2IAAN>3Hcs=CXRww!x2;4(hdC^BqAWX`b z00m*gHTs(}=BW^v)^HuJhXV?Ow$4H4#HTkU=QR~wzZv_mO2@2&LIU_LzxV$$!Gs9G zItQPjgx@$sN{}w$vc;>GZkz-pxTY){vdK~motk(uX+ESQ7F5;U*Bg};$9V(b3bfAaMg^@@^gzs7-*juEYY4ZWvR+&)HnnJ3?s-olYXS^avm`3Y}JCeic8J3v5gFP;8JJ?s!$8V zpwpuWPiByZtyq6$#Wc?Mol~Ze{xr`SjJqC=?WsqxD3=k}LYSo|ta7d?nr6Z>hYmB? zqiSQHGIdwE%VaV$U@)|Ol|9Lc8*4eeX@j2)jaVKi-_$fitx=JLrOyWc5rY5#-%SP{ zrb_U-bTq>Tz!;@z7_nu~hWt~)*|rfL63sWX^g5=2!iJ`@JWxhmZ$)M=J%gNpVX@`e z&@`7ZjQA27qv~t2F@Cogl^M?-_&*5?+V6_I$q+1(0y^6toBi;2&iuApX&+4R! zjAo&zYwx1Ts4tGYYf@2M1>y*7i7boQ<5|dRNc0x-NE|g=IU!UCrOB4l3?h+iNa|E{ ztYgiqBY`dCNlgRCfT8r0Xu6zHz(q}|EM>|^n%MZ- zJjps^SuK8we2nX0g2#3n2C8|u!N|J;Kg8|M$4KU!b`Tk*ZDFN>3ZN8DvTg#eG)|hK zd<)G1$tDmFd2v1%q(NJU_A|n*?=byKGLA4h!34b50&Gf-w!@gNTWnBrIL0BB0?Xg;9*hC3nt|NBPU*$xOBBij7Li-sS5P}y}`im z;$kgI5{Jcf9gKdMA*(9Vux<~7ZIy%-tHS9kkxyweZ7~x`J!8T?)tqhO(mJ4oqCjXk zt967$>2@gz}XuW`JfuvP-Bs%7B#Sif~WR$=XXrK-U(^=hRk+&li-yaaMtb${H%w zG3Wcs<=wQvYI1v-OVU^DmbN4{y=m;fl{m27VPJ$qYfuPL$ka>uan11+L_GbD=lnf|G16;)9n9+tU0QZ#U)t zU0&sXS;~{;|GoQ68~~)TJDeXCv1w}!yeEfKv~g6sXq{`$;JJko7INWz82JMk>*ovz z3!c-Pzz6$uz0Ahgrd`=%BFW~P$xpX=f9LgkT_DhT_x7;@C!t-$OH_Y6zM5RqWWb+& z5D{<|ZtzZxE>Z8D@D`mRt^`rjU>c&?hIIG~N0`(a;i0{NNYH!bUkAbogDI6pg>k`< zMg(bi|Gp$lL+;V7tKX%Dfe+!-(#^}0lfQ*qh`265-|;Ar_~7;WY{W0Rlghv5!4QG4 zkW6b9c^{y($}Pv^LbwD%4^09g<%AocFUSqZM=C9Ic{9R=JM=g@E>yFVc9Z`Yr=r#4 zP^adKrexqp(m-Idf(8O)(g(QEz-om*V$y9K245JLNW#uKO0DSAm}bzWXg24hxNPFD zd6-M4+`=XRephASi#4HAGr^938)A+PX3i{HK<`R1u&ScFmbSNHJZxYjsX>s=Q*5zb}js_4kSW@c{l$Y7Gw z&F23M@0LgL7*qJa-Q7w#mH&C=|GAv!ONsx34*G7rdDy~#b!W%K`=xMeGdL*vh7kpY zb-x$aYU1ijyRk}GmTs|;CaU&&_oG=y*94?0LFPmI*IZ8-&OiL$W5Knl$!lqKdQ zwtTx3mb0<>NTC?>Ck4Y1u832?zbKn7drA^Mgl~K_6hsnYp%!$99XJ ztVmKVAmdM@l?>XGZ8B=S=v?I?Wf+x`wqtzN1G)k1f}#Y#CrzaOkZGnEua@0LT*6l`Vjt#(;Ofl#8(3QU&c9G})C(K?>YTv%^k(hjO^2^=7;+yG|{4Dr; zX=lx=LniRX6+j8m>27$TXPZn@%}au%>CD2Gr7*`T$N-4ycs7p;#;gebwOsmB8Ni{J ze95>I&4!d-Vp%00fApq|`DfMsnoPqVSNogC|NB*Mf^;U>i5n_H5c7K z3|=$%(DN39AB#@aveWhk;RHxZ9Z?*k>2Ce|Fd@f0=?)XA;5`1Pjz1#j7%8T7 z{Me39fZR&L`&qyXu1Il<%97E&UU%Nq+KqN8f!|M!i|^16_ov$Vd98WTsJETg zIYwqXYA`$3Iwm`$9~#Z0lH>O%;*9?ZO@%0BD&{-r@fIO?ZQ-{eF=E?7%}!M6qMe)I z4kUXDh=aO@P^3EpQCi2Z-y8HIp_fSYcgvaQd4l;}=<&R<{ohid;?%3PGxxOKZr9${ z-S2A6qZ8zX&d&Z@xu|BB`0rTDvQEqb@&)Uuw{F;pM&c9xN7uCcH}G`H;?Qomb-SMY z1Z)Vfij|Iw(olyAd`57@{n2OUPN+E-h2;XWvwsZ(j3eS+cVVI97a>N%7c5h9u7aTN zd>R0&-2ooC+U^aU4ML=NUykJ}v_ z5i>%`Utb{zCazx{!ty>0hS$BD%Msr67HpWX5cA&)lUMTif3dM2-Nv-||CK$8|5)9r z?!MgL*+u<-xw^9dSjw|l{(r&bFTt$?XZ31FGl0u9k4R5&_O7Sy02at2!GQLaE0r50L<6u!|N*FA9w8E^f)>7K^_zvuCM7z zRK8WFFziu9ef;S4B2;*5!b1_8c`=$?!ScfBBc?F$e=&&Fb9$_tje@8I+d^?X}isL=1AGc$V4)dkP_X11S3(Wil@T%XtO1%Rb zlzcZvvpKQ`6s^3gpSNL<4BmddvIR4}&Of%d(P$6Xx~d~wO5OJ1#hKeU6LqTlTV?o9 zWnGnfPgL`)aiqa6z+w0GSG!;BREq$*y6=4JRIW-6mBK&yTrAxBpNh`rYe$tXbp1}z zgiOt2tP+O2v$tEVs1oOmLoU!hKa_>AL{*hIt-a?GZ!V9IF&Pm&6>MCU_^EaN!%+jx zCEmqjBc`Qsz7F{N!@J%%;4lhg&<3j?qypjq(2>}M6Lv6?0g+#9Z#xq9N$aiKC~R$Q z6`fzniSN3w{>xv&f327FibY_z#8=mSS95FUZ`-aLzg++45Dt#dNx=1|0(`VEz%R^! z;6Mo_hrn~t&u-xSD*nVrcUYza@mt4r(SOr*4|0l8P?m4ewrJeB9T)Ib$@$y%-->#r z-nCOuh5z&|dEgX{*71=g{{DBp?q}_945Xb|4Y0sJv+8O?`sy#;e>oTtQ`9U$Pfr@n zI*nthh8(&-|JfYyG-w)n@%}R!TEZw6${49Td+p>-V$RaYpZtUiIBmnD+C`1rzT+gG zG>gc99|(3ken1+*fES8IC->(B*fcP{2m2+l_5YO*US6Kr8{o}O>d~>=8^xf+EA*AX zm)qMgJ`O4=hUDcn1k&htp$&FE;UG!sZ*rjqVRAHyT=6m?VmKSIh#}`;&>I%;cCY9Z z3SQCq#wlDCi_SkB{P7BZtRxZbna2O~74GBOn8N>8(dRee|FOHj%KyBSXT|@o`2XLQ z|KHyDlk-oWUG2oN$p%ENlCpt#$=B%{;(8t!prKDXK@k)tx+PkIL=tHQQV}9+xcSkz z0I5_#XPXo)!(gq_4U?+H6wLyu1A{n>9tjE6Zc*U!%|B5*{1dGRbmsxmO~y%5nYC6x z#(w9{MIUDym^1+Ro3y_SCGs&0%dmgXqspCPyatng)EmJNV;Of4-Vk6>;+h!z6?OfB zp4sUCHO)FUkJnvDV)UHvV4Of2{03X2ou0|FN?FnEqsN zyeT6P^*Uv7Elj9iyolM%cK!Ta{oFliv@hyS_s7fnW!-Hz{%_quRde~dGsD7EL1XCW z0mlrf$yv{8Aa1YeqSk%x>cEZry*q!dwwJ?3=kR}Q2*4&Ck75C*+5hhC?I-!a-D+jU z|1IO0>Wn?#voZjFRA*NV;KRp`o)rVQVgRR2#R8wFWB@5Vfs00W?@t{TO_X1wlJI^LtzY;%>f`~AR=r>mC8&8l-(@E9E~-3j|f+P3J-`^4Tx6{XDU z-c4o`zBGEaR>lZ;k#$#SN656wmYty0{=9gpFkAl9GU`2T{KuDj)k-4%_uhW_uOEHl#VgD=}S3 zNT0u_RU_Az3T4^34MGgXt|d}gOrjLIm@Ju6K*Vi=pz#XBLqp?X59M!vJRSxjXJ{`J z(c1N>>i>?js+j3gW?CuT)I4ORIf*lh-uitwA+@aBn57T4c^Gd8=-@U*X%*oML6q)Y z-&08%v`yy??s_e)un2FjCLqLp4e++K;+$U^L1II=l0*`i5Z1+zk}mqZMsbPgHRbym z8gvTd07UssAQB^vqK~wM788s=b)<*Y|1;^qtWc!JD?j?^`$HW%o?)I7Lt;SZZ!b^l z%?n;QP9XrMyz5_0Zd{q72k>oNOJxL}q%u3u@Fu{1cl`)+3v4A0x)>Lg&h7j9k8b<& z@UY(2H7X*_I%SiWk-y>3Q4n&%PhMVTiduw(p}#NB>n0?TDU;&-YeDs~Jd?c&)vF(g zym6e3Dc&afY7xl-(lDwfj5bW&Ge)nqFd4sT^x7Wfx6@G=OE|Iej7+Z#6V?>R|+m~5O$gP!Wie48)z z#UBH5lqaERDdM13kAl~^o#@kS>7I~*Xmuh#a_W-qo=^HfOAC}``2E)2*LzO+t8JL8 zmqo#Ojp?EV#Usk;-UwPvf?IINv)$}IMHk#vZ^VrdGy zD5R!-L-^mHAbpO z5J$*vFh!I6EtZzyy5S$1%{B(0Co=6tS`_=WG$EHnJSi;s9PFQRG{j7|#yZ=RznjBe z2qeiDOCp=(=S{)_cm%A0$e1}|H?*H6jr68+8zp8V{-6zfJhttRm_pzqjZ>WcxWK!l zAh$`$`SVU$B=7{m>27;C>Gv}PPI^$J#OD~+Kwo8;>hwmpKHfEnoM&6AJPN7!oMNUf z;#1?4>bEF6O|GFIGDle$S9~ohHWR7JNUcM97p`hXqsQS5ptmBq?}y%~kQg@N&8#DK z?t9&thAVG;9^Bt~2X+zT1AD&^FU@%MN7mJEe;z39ry$I_IqXk*%Otl;_Ple_w9U~N z$mpjy;f7KpAO*p2|17Ce4n!W*^ueMX@vf?Z`5k6tehm`-M~=b&TR!>x|8nww?Y!Je z@&DD8|Ho3EFN6PABC^5%$8UcCoj_v0`&*y+d3JfDA$j%%aqIH3!{pb6<{h<>P!?6* zWb9`Yl1WDuUoXXq(0W}GtgcJu&G8lZi_P&B!&`8UuUYw%-%&=e){HvU;E8mqj~#N$ zGkq4GnbtI!v+FVP35poHc%iN@WRfqIE>N;aN)J&c{zgZ z&*D!+Ez@#_h!Ni(O%*ZJ*3wTnUBs9}!ca`YO2V)``TW1ql|HJCY4Kmu`G5DJ!ixW2 z#`9(H|Lw~&3}2Vv|Kqm_{y)4ABYyy_KdENV`d)&vkc5#0CfhTM($wTpxSg==MO+%Kz{G{i?KEs+KB_I6{do39_rI zNP_~(OH=u%>Wn;w8^H*tJWA}y0 z^fZO9`oTTdH0F}Wp>-^fgYAo!DSQbr%;bv5lxvK$*aP-hTsA4DP8v_KggNwYJYn>L zW<}}VD6q0eaY!37AkSu1u1XdbWDd?i9Up&W&LErqkCt`+U)ia=Oxl0%?XT>=m-1xU zf4_Wg_TOjvZGmS0op?X1CBSIOmH-yb1Jc@^MB++{1H$7`M;F=pUPhP{NJxsSLgpSo~-kK?>V0THvgZq zdHjE#)%hGw zhXes2`_7@)pX-oMn6gfYSOl2XtMj3d$g+^)vrCo&$#Xa|uZ3nlepL<0R+GLb#Y}hS zJ%+RaT=CI=s3-sYU&{T@&dy%y{4ZBl{vS(uGS2^Jss2$4+r;s&y?^LMkXh}j7tvul z7tyd>5uMF=MP#1(bi=Ynj&GKav1>hfEi?ma{I19T z%^DKql|Xgd_0xu%tj>=4hq63$!i${s{?&S1Pp?9Cs#NEA(kFk{xTdO6e}7SLwi|Cw z>Re%$LIimC&aHRnb2^w%$VqFT9qQr1i#5t1GxmlUFs2ttuNi1XznXv#GVTEtB^XrG z2R{A(XYWk_WDZCmlbJ7>X0E2YCnQ1q=;`Un z^rok~>0^?pfk;4!5e%NFh{0=dRb*LQF$%_G1w3|9|GMnz`eRpASW)p@R961=UR8Zx zebwLB#~cx|8AyFyudY|GUcGvCy^6xtgOFO~Fq)9X9go1kok;BmJ2r4zlt#u{>z8zm zh(snz5%XfiLsqS3y|pHf_SmjgsriPQbs%o7(OR!rhcSJik*r;#?*_(`EQ_^zJc!|= zFmpUidbwpa=q?;wZ;p+VaRJZruoH#xL_BxUlZYIQWg0!##7QH;T^nvj!iMj8KO+@4 z>oCS^OaMcJU9tVxj%(;d5q_>^Q%<|!f;>orrEJp6K?P~YBgune2_xAYQM?j_Y&^5q z=yTw*;!ignanhZY=HO;J!aGVjp-2RZ$$C$URsfS0jZ%=CQA>=Q%|zFGlIGm(qZH(Z z)tyGEW>+**i!SaKD-k_UER;8cs(IMw30(CcmVBC!XP z9%j^VJ++Te8V|)-@;2`MLR06 zUJgb>s2LE`!DI9B=gMyT8aSC(b!{*F3Mpm!eTyd#dOAY` zjoymvS?Lyx!g_0GEYIz1^M^zDh9W&r#4ZuXBIAvoZ85MYT&mU2Ha1(|FKlceCcaE5 zHai%#G@sSO7XbFf(;8KycrM1FuY3{@d?iRL!6`8st*NoGP0WEt!aQtq0Fy<9IaIO` zICOSH{r}!y3H@(c4gi$8|LOC}_CMR2+RpC(pO(K@&Hn$8-2nhO;MJx7Np>x#stxGZ zMy)jhe*H^aHfv-+$ZRwoON{X0O*B*2=o!jVoBpFIu(ZMM@r>saIDC@Pbt0C*7R2F? z+H9mF;TF%DHM|VZrJlC6o{gUNwN^Ju1&MRI&NKYAuhgOb5l!J^CaH{B<(c-2b*8(h zBC(5KMvWaHof%aNRB}!u)0JS78MyR16?Sv z|21TL0IVQHI^}Dy@DxvgO|L02{#W)Pv2wB~_xPCoUl|9>a7D^Y5W)7`WGP}@7G+Pi z_zf%H8=KnUN~hP`=o2*(dKZ!2x{OnU(|K6_gFVwGyrxKab+ETlH|Q=^z&MUvc}q;0 z{HF2RM0ouqb*kdgwag=ZCFK9K8~`h|{?pdfQgHsa?d<*k)AILfIsY|ecK}QdnEDB@ z$*v2TWR+>7uEVp6oAJ+}L9kKLAWg*L8v829YDX+5-f~}+TxD$Jm{*b5woc((1dgJx zd)0*kmcGFyoRfkhO?0QiR!s8?6~No?8x=7)`crUd&5wro>+G@md=T_6TL zC8yD2eHpCk8h{`v*g?Eu!ILK*{dgL_Lbp!8Qp9tNLsV0adh&^)`5H~3=ed!Z@rz?s zVjg%}7=_klAmWHFz$`S=HepM$tWki#u*8Mr%{JQ9IiF-WnrjtLri-C!)ZDt>My`6Y z5;>adUWDOI><(wK?ATq)uPM}9L@HbJ`!ov7K;A4cDR$Ji%EP*ho#cc!Veqk-WQh>to5ddOfhDl@Y#HC6B9n4J zp(gS_>7S#ym}I6b0jpNSL^<1MVHnbSu{ECr7Nkpg%ycB4nWIasY>_TW#xE8#8<~L8 z;yK3W7LroH)~bD3RFT&9!v_u(CL-&6z#GqYz$n>(d@|5Pmmei%AF5F>xL8y~e~Yp> zUM0pFsaVrEBNmDsqGIKK`i?W&>;DH%m;H}6qG=Y||7|*}|DTS(SIzs6yKIjC?W*MT z-|4gjylXnndUdl`Aq+#kyG*Zd?6P@%!|1%H`}K#v{&6jRuqo$kp1nbqU6mSSIq=sp z$Wr_Tjp!JWZdlYfJlT#^?2nKYt|146#qk=XCSNw2Ri%uc6)|G>h_^N&-S5# zuCRY_AcW7E7XRC5%1WlWNEZx4?LF2e$n5bB| z<(DNBqR0*Tn00rhymnxmR3fsMJte4e>v_BS`$)gvTM^f-*H1vM!D{A{+!!B}!28+S zHHDaqIY-Cx$$j|dcp2;8f-Irwko(u0Oc}0OH=G(dNamW+7-7C?E5D#v_Mm!XBBlX1 zuU%_p0ugn2kX364h1U|^+6OPHO6Ps~m{el&KzH&}(P%zxEGAHdP&nd_yT0ekCKFn8 zOrt|uSnvVA;{%v5U0MSji7lWG(CIrPk~|Jo7~4!ol1aj8ulu(i4(&1B2HLkZO^Hn=s*!5zD$lJWW?0 zNz+=8#=1&8(Y8U7s7+2&SS{d1Q%eCSN&s^N*)|T9;dtyF1^C>#;@E(*ev-;!C07zc zkcu5UBmE|xfd_O+Aat|+V{sBA9f`&;*9fT$eWJo*CG(0cO_$9z&dOUR<$?@mEXloW z0mSHhMjDN{$u-uZ-D1!%Y_0B#r)deX47_TLvw>VZ8c*Y>s^5Rk8cPRIFy0#=xg}Hk zlWXKg$VDgCd(hZ!VggoOV2~e)rRl;&xoZi#&K~&xzy4Qz{pYmU|Jww{{$%@qXWxH1 zJ%6vN^&hL_|GO$V{eL>ve>~gKLII;EkV;HWMgx^Z|! z+N`xaG%hs2EBvi0+ZNYrczWM;spx`17Nf_!CSZa@ibMf1+EnMb}d?% zr%#sYTiwyIR2HVT@r1toV59WSh27||_+&0<^2qK?K+S~>?f~7v_V9jC_{y$vQhgvr zl(!@`rW4C#k||@-%ICvop}D9eYzy`;i#j!ewf_ z(UT2aP;x_)?ozMTLPK3$YA7UJ1YvVvTsPtO9mr4q&WCxugozQzX?v%?Z-_61@SOMt zI=gux#;4<@7t^WTY^82{Jd+jH=QSKTum&w+R&^Lh$+;I$iMFO*ht|BtP-;^!&DiFLk(JDMT}Um=Q5s< z_FPy?=|bMDPcvgX#@sa>$q)|49WDBMgx#FZ;^y%LQ8glD!oW7h*v={2Q%H;FA?OWg z_NEw4YiZm(WDj{^wgyp1yHo6OUv|w}#ETXaHSK}X-7;t^+_eE-(X-=-#A8v^6Zmys z7)kZR#IUwaMz}S2o)`EN*%k6Y1V&@A5mx+KgSR3%ek4{Cj>eKA=-p-ZoEZ7p=;5ZS~-ww;-p-`fbk_M#c!~O(eSF{{U4}jv4PcuX7BY!LcJGk+28eu#ZftDZ5C-l}C z1^u(g!B49#6SVN9@BUI$DK6{)E3*qW42NX1z+U*O9h|PcAx|a?e9on#i-ghlk8!gZ zR&c18(&t^qYvp-3q7cQ~SC|u5+M_Y^$x>`E>@;*sQ#0*pn$$(p{))!7l_U-jpM%pX ze1~Dzv>vE@mHmnOUm`xdaVE;ZL!O&9+3A1yo9KVOW?xI|CSM!T|9s7DEsAH;Oduow z{U6u=JCMDuGRFc6e`o)l{de}?*?+I>f7%{z6D)$j{C_+>p=f)2J}_CWp>bs`mB!Uy zEtMFF2Le&0`bhZAK8YpO%A29p*^d zE?;NBIwr+~-72ulv8&Gy%bFo|pj+!292y8KAvL&D4QhSd_BNAP8Z3Kh zu(6?rBL0w9Q&l5Dd_0}#_Nfz?QKU#xRgX30;=Gg2sB5}#=$Zl!deYVjOjr@#6{Imx zY|bZBnGrA(rHx0@{zSm*6YqqDaxG(#?3h2HhH~w=KuWp^_()EuWu2TT9{gb`258#8IqRFa}y)9A?&k~99sU)1VedHAOn&%69br*P9@^egEYG~17!_NJLIzdzTqa7{`0C(zZoIg zOk}!gIJP&QoPms+i9qDp>P?o6`R$t+=%=c~!QO$8=Izi1;7T90w7`2sSlbnDg3Lpm zAUp?pMQ&&@rzlYn7B&*&7}BT(F}u99KD1eby&;X@04P-2i#pPI!bGt84!L+Wi7t~t zKAoOaXC}orYn7&BtmkXTAp^&{m@i2%?n)&`<9mnFWYCJ?r~<=W*$)7AnrCyF)IoosNJb==3BsDqT9D*v^kuy-`n-a8j}50Z zdR)}s7jFVAKseDcOM?zjQl8NvLF5MW5LQ7>2H9p9S#Lo(-d3R;q`QAI*;`d%+OqbZ z;X1_`t}|`I>&Ity9Z7c;1uvQ1!5lJsW>;ELG0(_4T57x2N^A*9)<}c}-f5W!0@t{7pWJL;Nt@3iVU zBHAq)4J@x|NCN;#LPUXwUZkbKHcI-S3DNRv*aByZrm}=GPRjLFUar9k6(tj-P$=i~ zX<9xRr_X_ay&EKiMyOYUCwhw%q$5M938ez>s6@AJMm8c$Px@S!7TQJ?PcQ9ZlbTzU zIT@P#+`?)y)u8%WG_jxP?hjnX^l{$LRqu9A^Hh*FBaAx|2GoySF{Xn|AGlNZ~fX5>T7 z$cKuENh>Nb0F^cV_;CEe%qP3zM_4DM<+DHmCVDH^zB))2$y9DEliF`&Lx|f3hxzwr zNWG9Ckz~$4jQm{jpiTz1erD(;5lgD$f!=7PSc)W%+rE0qwua;vigOcEj~(6 zjvc`L<493#DUMJURjW2(_F=xRUb&LdHo_DM%#_bnCYxJxo2X&qJr#WGgs7Oh2#BYW zs;&S}$426mG6T^|@5g9hw>`2~A1WrZF==S_)1ponh_e>TM&9;99e##1cu{?yyxKk$ z722c*2M9Hc_F+n}7Rev*qa5vkfwQz?jGFPLnbVACZW$RAEm_&qb-goIiAH4)>{MuA zyDq`CJzHgOhKOHG=bR~((^o>}oa(Au$pVB9(h7?%Xi}e@&MBscwh~%#C3M<#JKrRi zZrb663DfdT#Y0@XX-Ym`v5G(x0&OH^rzMn75{U-k)3ou(zF48+pp&y0HNDL=ow(MA zx&$5ci!2aXq%F4M)(jiqZ189WVLRouA45|C9+==-N~x6~-@adWaL6it)i}t3YskfPjO{a#j2~pX^G>lEUDyte(g6SVNafS`TQCd>Al>n0- z`~^O3r5bg+p;1r&kmM`W2T<$^>pv~*5;?CP3|9gs1>+Xcxbze$HOQ4~n3xn#*X5l= z4G1q1!BBkHrBuQ4Qfaeh=!vCMTd8Z48cIto4^4I`1?G*6jASM`A=Sq`E0I#ZfHMZZ z@jx$KS|UPAAIPRSajjr%A#~>RY0HUF#UqtCOig8u!{t9|%F{R_o9RO_geU|B#VgjCuPxXn-1v3v1~RqT2d$x5(K$6QHJF8 zO;PgNH)`pk^=+V%g0|$b!kN!OT1{xyR}(6q2o%cI-pL78)1-t-)g(v>I_eY?UVMWO zdWtBDHE*%O!HX0Bj#v`qM10i0E1MyjAju(~g?Byo$BpH0Tu2CO6Y3`1ejp^%w*x?6 z;{WFJgcXT$pQ^9jRicSjDB=wzvt6SdpHg|;pz`#~YG|BJqj7K=g*ZoixV|w{qk|V# z-Sy$YBy=V()leL@&zSs|dSyG4mqdNhCM7bbAkIoIRhFqvawTA@+DM^1D339`y23@M zU4qw0pTO${w76yyvm&n+D-)Lx7}r@Ly+0F4mk?s8IO&qi)acW}vIU*J7&hJEXu=#l zni$EArnMF}*C=dII)++ybC?noQ;Ip^TKGwgQaf1{Pxnn*SwLGILqA_(C9=1bWHpi+ z$4iXatTFG&MfR%gJWbKzkdQmj3u=8kumN9=u7LFoL@R19VF)Z>+={7RNFncxQ3!98 zM6yY5R73l~T6!d}P(RqzL>P^PPi3Vr93K@0Yo!ug$c!2?m7(mVFbN9h?9!Q3G&YjY z#JWfX#kjX=RHeBY;&J0$T6{zU(_vaRKTM6c!j7JCZ_=E!iM~xnloBX*!i#rIT*R9TA&ZL>CsjdIgrz4DX!B00K#ug7d@F04r|4;OLq-Y6I;i;TlV!=SoM zrdoPQz7BIqJ`GG@=6FfvlG;d?O{bFCm|eQU;-YxBsj!7gwk)Mb@#30W3(^UERH~9K zn@Xgng=_3paUq*Pf^_(JJdvy$fC;HHvpAMLmWAovvLK{eu24(6T%mY!gxO6k z*=ZB-7Z{5J%T#_g2Tq^U-BCQDBV$}Thxh@TLkQN~A+l*n#+uA+zl3V;3MJUFWLJ@I z;U$XJw(z1|x#g61WiFAx^8j9X9&5QGkT9KQOI$_Rn4a-(vOD9?kg+<*Z?uWkY5hbw zXZ7i&WBsIlVRtIUjVu~xxnfLUX0#GaFsYN&iINAV69o%wgz$-iQ_;Lh73lP(`+@KZZ@Xvml1rwds;`y+%FHJrpL!FFSf+lI+1 zKMH7pndNCeqXh9tUxME32Ch@eKhT#T(P?&cZjYPerB3Z7gk|xBA!15)(lR=kdATJ~ z=7Fk&&5eR`Ib7IbFJw7+5!CK7y&b9AO%lOc#uc8u5Snv3PF^G|X1s|>AFoKjN^OF% zOpAVTyW|;)gqd#w`p8h}C~4Ch#C7iiaaVv#8QX@XxtF-#RK;U^MPS*O=WGkUrR4;U3)r^f+4#MPH6F2^TuDYIZL({@eN zs(A|6ffCcdJO|9j*MWSRA)hQTEVe>rYDlYvD64V`mq`agBE;*SS<4b27d!UO$4@27!!Tf4tGPYcmm!tz;81M=dYuRsyBfL56Yre!`^M zD7-GFM-(_?nwAb(X4AR4bk>028Ert2a!h+BpVShmR9a=GMyI#?oHb{s6|?nm)|{Pa zv&?pSebyG3f$Xc<7T6iAbGA^OQyu6XN(6c_m5D?x?7+3Ek(otkpg_J%)tb=s-%V&0 z)-Y)zxFHXh2k;cXV1?%lZBm~xjp&^T0^42wC}B@%(jqFGbou;HtU731 zi<*Y}t7j&|!GdQbn~m>H`bi~wG+m~Yk|?S=5$e@o(3Dz{Ga*s zKVubj)T;_?mhmGuXJ(xxtIMWUWp+?0$`2|Pt99W@&*ay3kOS$-YO0uw#ERI93G^~+ zNM~#tk%s7J>@|j7_v#-dUHLX6gR4!^-y?haC-ZYpQ2|LD% z*O$VJiP6GsjMhmtR=XX-?e>k;Zr@n#lar!BzN~!4RvB7&lvI{lza0-6>*$+u`E(-2 zF3*uk-ULlzaZsmH31KE!iM{)r&zp|NqA@(6uPeJ+PCyXXNPIi^sOf}@$|AB)`MFpDOOr|1%W_xBdH-$a&vyW&^?h&o2nsP5; z9`@`@J(ccto_(q3>`OgoU+S4$Zf9TWIn!V2nbJN9twh^2WaKk4nu$Gdn*R*$u@~-S z&di>-v?Dz&&#s&arojvBM@;*RG}DHvs64fy^3+yTd74@CxihvPZo8NGN?8;s+*sLGM@2Q-Bqzzc=KuFXZAir2VZy_j**#ptZ@C!yxrg{ z*lr-Rj4;GN{ny_&-lX!V7F!aPFG)}Cq?nvZ`3J=;_CP8)CuWs;8jgwCY|PBWDKYD! z#6x18lRqS8nK_&h+a{e6GuTcox)>x{Gqg-j4HuTVoFpAmvsn->mRs}W&!|Z(JDo?= ztlL!7X#L~x58 zAb3Y}7NfUNRy5%c+H*IWI0K98I5$(H3BBWmHFY!%Gm1egyBUAgx;LX~E*KsQl`}mPoSZ6s`sb(R z>C&(2nPF*V`ZOFfuY4cd@=W>}*+5enS!cY*Om=9MmjKHeTiah@Qmpjgx~a^;^;ONF zMMu|S=f)@doaf{ZEJ*9IKCMg(+r>8QCc^xA(y5+9cqKh4fA%%_v#-IQeGUHXYw&Cr z+u}9&8QC=U8k@$G-f1uLcznweNolp9^NilW!^JF?GLk=_j+Z)Y zUuJKSC9~8Oe6pbxd!8(^h23u25T{BE>EH!S&#hTDm zZibjvi`poGI@nrjYP6iy)L`M0zZLS4G{b4uURfvZODt}_iq?lVp{`eWsG7)0M1ysv z$yQ(-$pv?&xk3r|gVCyPrOQ#Ttji1*7lbShELyMq=<7OD+yb&*X_?#(kTj*0Hh|=N z3+kY;jBI~n!H6VTSrS5Q5a{xPLf@pRpv#w`{CB6rp!|1e_!C}=JCj#LCTE}X)m&xC zJm(o&%M#WK3FaD9Q{&nSk>2>bu>S^O5N1Rng2{NRU}`HmrOpk{fIKsFo{nkId2E(b zO)Af;eD!7$BYH(Ouo}|aH8jaw#%hs$sgo4>Z5ATmwwK7u9HwrvX-ZFev==TD6dT@) ztP_|9aPh%+`fhxYq}=cjeYxIPSA3I`6WUBb6e^)j`=udKpXSLyY4x4~w zhT=A?O{kmj-W5^J^($X6|HuEO_j)Q>neeH)Vo=G!q6$|mj59;+8lT_*mB$S#Pyf;b zG)||{ICv@!agO+~2hY@EhZnfoSnZg?N<_)?tz{pbnZo))!2!&I-cA%!Dllw2eQ#JZ z4xAX>-Zaad`~({3zwNB02`-bGIro}nZZrY2hYBCvHRVvoS&Qkja9QMV&t$HyZ7VU= zfXT`jnQB?>+L7=wZ@d=Yi7!24@lDT+rR0PNnfxj&CMahIjEBErK?;SMA7-l>i?l17 zX0K@XXw-)%I%j5otjH|o|Cst7pyxy^tw>ZXbnI?@2iXnJA_~^zIJ7{)Dy_g3XVKR3 zSaiF@qI_3is@oHV8dZ5it5@HFAyqChTC*t^MH{pgVYo-GDOM()sb}N171H}Nk#q?) z5aqkB3z`O@=@{6iIBZC_@$Fu-DgTs3N4cjgDqhRikCoaj=E-AEIRnIuNN}OvbkMTj zeicf@y!ZxeYuWo@MNfNM4+r9Q*qORYRm_-?)c`O<2U9AyWi%NfF&zWZ3=I_0WUiR3 z1pU(-J(?KF5zVuOop&xAZo+J~U@?t@^|4}m_*|^Fa0|hujGI<`JI7?*lum^hhJMbd zWaw`tS&gK|wMaBd8r)a|%tiL9?L1A<o#y#m zn=zk*hK2V*`K*Y_?W8uTV`?LVWTUyX0g0rwae{0F z$C~6wB9<|QMY2h66gMxUjZuUqaVHZ3C%imr&Bi7(9!&+msoUDpLh)?tXl-J6-lXLGNSF;`dnpT|FoN<$ppy{^ghT9c+da*ch8spGzWft>BTF1 z)_%F?=#xj)+aRHy=IED+_e9UpZ};531OSf)gd87J-x?;LV?&VUMCZ{bdyamI$Af^L z+qb~)hp{%8-R(|_N&dx=p5_+BHs{2kC%$6T<@v2g4}G)eX#P||m1y##>eG*@&#HF- z20x_v4*ig1dg_?^O+Ufn_BskgOc<`WsXsV;=m#(7Jw34qaO`sdwp7Xcr6F`ke19Ao$+4$r+Ae;XiL(oyxmKsrgp5tmn0ycgHq@Rrxg~#Z=`Nh{Zey zy@G%p`S}7?&;4BBoTKWKB*l}DZWI~&sCugB$e~k8Zcfh;^_1i1E{KBAW9q4s`!Px( zP7EO7XB6}lN&S>u(Bq__$7w;2(}JEt=rQ&2lLzby!YWz@S#y8|gX+CRQC9EXuzGyM z>JiWCp37GEU$#1=tj=Dxx~X|YiKi!8z-d*|sZ36ph-HRT*_h(>wKX=8|GY~4GXG`i z%M|+OPm;-9e8dBBJ<0s|a4h3lvwCE0qh}|=agLbvL^3hYa4fe!7E5}(9wIV5t(!JA zZ)&Vz*(hozlgeD?$tU+EQ~Q&icru;Oc~WUGGJct7bySbHaV#|++n7C=&Bewy?oVa* zWz&&pY-7x~0XOwVsfS4HjoD0eW4F3}qgkRW*FrrwY8K+3*{Sduo=~)k)&b zMI@T%Kncv#I`=+^MLliknNL0K=vhWR9q92;&t>RYLp_(Hr-^ztqoPDgDsUm778(rj zs_Rf_SU>TwXm2onzPXCU{Sc44h(JFBO%9NHZ2Y73pTmqhb;w%~LVq7Ke$QD^3kcWV zM*zPh|K>69IV*mwM_Gwc=_fPSAhx;Y`zRkUG4t(!)Z^7?7-MjJoZg(2L?{&Ww zzwdM3hu`LCa@ZlvkOkednMJrHuU5wZhA zjuOD%L&#AhWDAB|LTd622!S6gq#Z**Wc&m|;D^#M5}#09e~%&1Y6zu4%2I6O6%Kb! zZ}4-W!HH9k1bW;}3HFqm66(ipN~mYtlt4dmQv&_WO$qm`8wf><{2mqw=@CVWr&8@f zaP@o?w$-!f$2Cg;E_1mr$4J0z*x}rp=b~_1o{5bs?k(t%Bv}N<%U3wL1 zn(q1=j5I2GTrACY=Qn7Yew~yw&A=kWlBO9%kIN*r-2vyzP9}fn*ScK8JZWuB?Q!^0 zk9)!03QdY5!U{~frh4AQZ0z*JJqPM=9O$AuB;?)XbMAQ zCk};O0FCSpSJy);L3dsP1)#&Sd0kaKi~(sW_np=Appl@*3%p3f-dBxi-p7+*c`WRs z)$_pj1cW_djxfjdFLQvIu$^YZZ<^!-G`p89lB}Z4Q(Xs=Wyubuu!0w2j8s(}$Q)X) zixBir4$PJ2@R*|xWYChWicZu#HbBC~%Y$D8#ryOK4%*y1L71aj2`?T#G{t`Tk@U{o>G9cSS7@eRW%FapPwN zuDce8zB;uQhrYTUwK(+E_0-~!S9et{4taIGwK(L}_0{5#SJz*QLtfoLEe?5gfm$5$ z>aMPZA#d6IdUZY^UgKt>seU^uX3Vn#MJW@D_5SMrs$u%Tyo<2!(%(KqPng#x{Jy-F zriK=q?{nS8%b4FX4>^Q-+E8<%y6F6Nj5U8bnE@&DJ1}G!;ZCZm5a%8@(|sJYj0GR8 zzr)SSTX4cCd%?Zfhv@H*332Wh;(Qw8tj6C9X{WsyJdW46IZgQAx7n1!ardWd$$&s( ztwNps&QIRN{EfhY)pwq_X$|^cTL(E*-5FTRbK&!tLnIFxXTK9DQFZ55(OZ4z12-w_ zc%lRBOJf{h33^0t^_>sj#BpC+fcub+`<6P6``U{s?q6WIuk}&fA7Hp&%5kS&?=na_ zSD)@&Y9MsE8*-|;vu}M=acn^awd&4Z(p=j~2K{xcxvCj<%W=HB&p=N3royrNdL7U6 z9QS3j0h_}NoAc&SY+t;Q`p<&eP=C*t2w7)lgCQWDD?qApwH;1x^O17JC+noF$OiUu7U$n=~gtWM`b^Ph)B z=)tu3m9SKJz8GSl=F!1!Bf$kaqCzgK#0)6tLJ{<4$8rk2s8KQFKm6cBkG{Ymo>9Zu}xC;wkczjP8V>S}c=E z#Ire?EJ^|i(UjR3O(Qx4ffLpsI7Cy)(fD5CbzvBZ#qwZ>j^g7nGA8Op(D2zNl*a(! zy|G*>4TpX+FduCB{D&zW%cS6#T!Ip+#zZS{&# zr{jpTzIx1+bI!TSd7f*()BUf`)vs}$@A5bswm99JonEDCmg6et#qineteb%EY}YR5 zg4v{u4^!VKo%3dYkYt~|r+V(F(+R+foetNM{jA{X3Fp!==f$6Qo`17*`6r$8w>X`f zotM&#Jv8Gv1U=VJovwQ!rpvV$KF&X2_EncGB;TqWac12N&g`n@MTH^GxioCsB4^FL zq*`Qna5xBIW62361BYI4S{96)iP7nvLa@4&FXFMJG`r0W;nRMG`VhrWDp~6*!L#adm#k@S{=+p+zJU z9aAEiy-{Vyz>ufw(o4N9o{q+r#wO2(@mxL`+p;%CN{B~^7ou(<_O~8pALSYT*>GickV`pN?95(orHy42G2+xrgQZ^A10t0Fzk%Ni&-m#pL zdtEX@3IUo?t~AJ(&SjJv@^R9!Vh7?m@-szJ?(sGO(KS-H@$>{?jx2CTR_Gx}b%PJE zk8s|hjf~s&Ud3o*Y+2YXpckCn>_MEl|^Zk`QLZrw>Wk5pKvr<;1@o zU0s)X)(j2jles(RiZM`3Gm z3Z4DV67#6;b3i5#=P-+dvwJ=KaSSi^=fJxC`em!IYQEzY(AD@z{95a zvu*O3QvlnD`55rSrucJh^0D5ctyXGn;B_|ec{cF*Ht>Zu@I^N81{?TN8~8FC_!1j< z;mM%al79<@_T_6ANky@&)h#ygJ8j_aw}F4e2L34<_@fL@jvrqE`VaE&f+~ZaoXh`c zlMk5^Si);<;2*QeXMs)pq@Ht^Lp@MmnwZE;XKT)>))ui_2bh+2m5eY7)%&T6XNpqHU7Hvo0;I_^_ZE*YckQ&y)o!k0U4fJ)0lo}<2kpkzI6FH`C zkJ2B>bcT#7ILLusM+S<0+Gr%6C^fa{zNRrlrnp4AKX5=x6SY5;j3nZ@gW5zBpF9G( zy1oHp6UhfhH5~idghU%cy;BRuvUwze?HELGCTeU3a>*ij*Dx}JgoIxD(#!PkH3EFO z03T;?Xx7;R{B=V76$1QSQv7=6zgK|I65@YC$mbjZ{-90#uL<$b72v;?%H6>H%Nz!L zju8KRhdF*5i+{1h$p3sHeulwet=J>LZ?%CR7xKA4fIlFW+s(>7Da2nT#Q&-Qzfgex zvjD$HfPYWGXSD!-S}OOgtla;$Dff3a<^IK{+=eOxez5>QM}Uj%wY|!W4{xstA-+hr z_et?N-99437xBMefQ$G)EWkzle`tfx^Ah|a26t2&`K%T4X{P}F2on{yi$t) z7Z$%;h`&yVKOn%xdJReWa6JFU2G94{;CZhNo)1d#7c)Nif=&Fd+2Hx402k^1yZ{&Z zMB(&i<*s0Uj|4xT`L{}NuA5#j!TClJ*YH3S6E<>m4GiF*U4zg~bhO8Km3i8f2{4NPV2lHl)S{yqtQn8goC@J2>}JraBsgGVIz{j6R& z3H~sHAC%w=SU$H(@Gmp?of7=p49^cp@PACM*q)C@T*z;$0hhTnE!hc`~b`6 zza;p*tX{v8;2o@8UXtMVvwY?{%<%Uxd>SM;m%|rI@b5ADG)eGnEdCY={tZ^{RTBIe z=D$XQzm54vB>2Cx{BMxp6AYglCHT3F4#y<;F&6(W34SG`!$&3fKeG4_O7Iaz|1U~# zE(g9T!I!c8|4oAP@$9D({J&WI-%9X0J|(O&!(5$pR8&vAz(o)Q7Eq*?6s1#2x}~K% z1e6kx?p(T4y1P?CBo|mhK^jDIS-M$D7Fc%Q{@y?DoOjONIWu$TPJic~yWh`zM-;uF z0tdgjYf9PR1fsH(U3o@LnGnK2y6-A*d4SZ*flk^b_JL7jR5TM})L7CbZ9`K);w)>U zH-Wf{2|;5l1x?@J1{7iZw7cjG98lcOr5!%XDsw8|K_D<>=3@m8T6otb&nD{L7-gsi zrwTty+sLCr8el3K4$=y<7~3dH+qefJyGiq1=umQDNB-aE0BBR(BGv)Fpr))1u;uxU z8a%ST2h+?Z;F?Ru27|3{pMKaV)dQ4q06KO7HVumg7BXaPi~^DAI3T)9Y4!nh!Hr{H zU@+?dXdIp+v;wf0M0&M0TpF_uFnok3lJ=zC@@8#N^7;Q$hGzi4jQA+pc!so%qK{W- z8hq4a$Q}Xq^5@v)`LLr)S038nl^^F6-89SJ!n-%rwgbBCa;WCTt z-Phxw#lpezVNJGhP|8MDt2>xy06esbHVM1D&g$y4MFd9encz?ExfrU#$;Oq^Hq?Mf z7JQUS)YLr_!ix(v#e^WjxDLPJSw=`oCf~5j5*$#@&X#u`4E<}_tp-Q>Hv%n(e`mOS27}SzbRx;D9q1ZdyrKA#ijY z4uj1(S|JRbzk|lc52l3d*^wgS6NtfS8-WVQDN^J^ec!^D(&0U&zz0`_22s?@@TRm4 z7h8lG3#J(x!R#O&7YokeJ^$?=IN+S4UL7e}#g2}pZI5JiDU4)DCQKG(Y+%pV1!{9- zH3@*AQBu2*jpygwh!6_yt4CMqoZYMh-t+^=Pme z=JW2ABQB{5JCt38%Pz&45$aq;$;xn6U?E08vy5OCr10lH8AD#-)L4^?Z8k_lLt_Xz zBZ@f;3hC3=L7HRr>4abmZ|nt3rIR4j65kU%5PnU$skpYUt+3fc_pAyA!quy@BNnM_)@6ycWkg24L z|Kv|jv@Zkxed@fLr?R8A=FRoc@#kYbdo0LwDXU3-Adqr7@A4(upUg^K4Y_qBeUYl@ zS9L<0xrmV`N~;k(Ti_0MJUoc258}f&t}7+#7kN$bMfUc{xX}HsArP6qLI3Mazy6*~ zvq|;ISoee>+aE-crTd|4>;=rSmHff~&)nJdZ<4FLGO}40nQtRd2(@P+PSycsYsdgY zQ4{k0GJodQ<6r{>bQJDl_m~KdC(6173Rk}+I_@9HtBCvM=JHJijrDzJm1$t-$IHbA zILN&W4%=5h#bZ8Xnzu z+rK=xi>v&dNq!%SR<8f?xN@|p-^`))o8dbvsB#v~aHI};FR5RVvbh)Zk4#O-U+;mx zQlhrd_kAxR>9s`VI-U(mg7`@)*9VDl>T#~3diI|e;@MwqjUg>K5ukNTex}mJ%WVHe zm1nTz$M1x5-EUImeZcR>zo{ra>pt7h3P`#x5~*BY^SCN9o_)^ql&t+>sJ1SLZR78jrYa=dr=hsoa^s z2u_V>irwS{0(>LU)sf|@&KlS54NgXp`xC}THe9C`?Y=^^C>Km3+Fu2xw0RO-#b2EMr0)V`sdeX(@I z{x697n?8GLb6K$4Jsp?WKON^}{C$lH1TCHavgOW72%5>DPl$*~>f&i&x|#aaa~zT2 z)5;#z@MPHDw*1@t2R2LXh?)TBGtgHZY+y4o$*DLvzu3b}@!^reLrBsc7Txuh1cEA9 zBX}M6+Uo4E@*7naMcpvpwtR|ahecC|%WXzUJzGqnt}6bF2W8FA4=wwm@83;*g;W-I`QgVH(#_0!2DM$F~Wz;4=lYHYc5nm zoZygiC?3(;Tw6;<2uj=mZZ-zuBT<+U^QcxM~+nFOsYe?`4 zaMtX$G((xa9znKb%y8H3DrUYGq?xmSTX~82Ad$_#`-@?T6mS*#ss3RV3fzCi`rOkl z^eJjJFv?kNXO;{swF6X@>lmHc5TIWvmlV{p7f&(xcqQ?+!~@ z-s)Rr~50u)+5c!DJvG*3j+!{r=F$|TP!x~vo~wp@cgH=3Wd(+ z0z2eJ;QV@ghQylb{nU-TG|Gx-%p|AfJ z+x0%fGWApj;}AFh;hqgu!epUXFxIT>WA)#SB#wbsYe8`sU$1_cf|!U-J?2qQ%x%0M z2NVaWM%6ZDJXTVzSJV^-BX#|eAts+C`qes=DeGn@rhDfQw*wp$H`f1Ur1lqysbZIl z)kt?8Al?(&$j>!<0N$&weiGpb(^@=sFtXmoWN2n%R36T@`iidKjrni;^f#Qzjjh7S zBV?_gtCnBV5hI-^))Vf00YYClSxv9yisk@?eX;2ZVXNAig2=`fYfJl+vWtuEZ@7U9g< z<+T63Y$f#6X5T#N)OKJk?38@pJoePUQ+#GE%9*ljZNGNkS;+^lOLD(-39!TA88CAq z-@&kk<%u^#R2(4GCF?1_A2mZK=fm2ySlmsxwzhvNdt>5h5q|2m-$(I*Xzgewu~pXb&-im2;;TD@32$(eMGtjpfhMMgN>nPQE$%g>W_dM)`B%af$^ zUd+=X`IKf_GU7CGe?8*#qbD@xbYh=g_J+dKMd3z$zYn;!GA$W*YC0_$b!s}(OSdLI z9YoVLI@9}Nt)uLo*b^Fi+C3d4+;t{;yT|gx#Dwn`%G{WHN=KYV z&pbTsVoh+5Jf$N~ANGT(*YKtv0z4Vs-7riCJzbkBzE9o{ zrdY!~M%%?Y^B~b>A#?NG6O%#wexclr+I}!_t*Q84-xH0$)>Lv&)g`TT{Kw zAn)QWzIXHlg`c|2JkWK4m2OD(Q6ycwIHCUYn}*L=*RYU%)9@!lH#bDm4WVZY)TB>A-(YW%sBbW( z|J0O{|EVd<5J5Gtfze>>TriDo_ zSI3x+3zJIJ=^lhNx?kc-Q&Q)P_`D9K_t6cL+^LMX`<6#~2oz?X*8ERZ>7hF)d4wxB z^QwkUOF5ZMM`HXNwtr(?(lXY`UewOv+bM;N3yJ0_f5W}o45JTTeH{BI->D|$oRQ6S;1EYi_Su4&$ zQo0#Fb_Rvq9TMaF#Rg8^SRQMUpV&vhvcl!%V2GtBKOzlAj|1cq3?y+)%Io7Nu<1jR z+G#0+*gXLrG?~Ts6f#~U`&uS~t!MZ_)BVn()tU1HR(_PSTMLnON1=Dq>RIww`^{g> z4I?kM?{!Ya>-MnDOIQgd6fr7Dbp>@gwXmIUZ)~9+uOplUm9n>%_3ZxML_h_9;eGao zP^cK_R#rD+$9@Zp)-jS@b*xv@UkK$YxgM-Y>jJr3HVQ_M(t5o#&2-WCEZzNv)mN4k z-Ld<58e91cnjQA}k6^yZKb#V#=sALkDsmH37Z&!`V?Xkc(CzVa%GVRN1++J_^Z1g~ zT5*vlHRkvqo^>@$6R{f{#P@q7o3lkqtv{Mp;&!coLB-H+q^Q^bt9m56x9WY8<7@^f zbvc*Nou0i@b8w@o0k_ddr{0bDligfTw2Q3Hcg%0P>OxKKe`3f&R$tl2kekJ0!dddZ zx}_V{e@`&G6_kH=(W};WOl^tC!;kg`IvObOn(qFY(DodPJGjAX!S(-zFwYiJkAUhrAiv^0Qzhz~dJHNiL!NhY+v4+9+Bp4EYCDe%7Ct((ve9p3*J zK5H75tq(5#FA}4F{B&)&IQa5AE)7GKczo7G@CuTEMNH`UE-8Mg*m~A=z4M1y$cx+C zO9sy%8>x(GBV@^RKY${c~pPSI~S3xwItllGPao;v!WCQqBFNd1q`&6 z2$B7&xL{j8rUN^v2j6`=&Iejsa(8&VO6wJkYAb?-1pO`Jk2kDE!SW;&W!`5b+zECa z-Yi4jlx7e@+e5Ui|CC;SNanSCXXH816X3S_i=+3mlb3VJNrXqHOn`}(SWbDGqL^s; z3u&>5vNU10uPhqB_sJqPH1_o(G(<_m<6>ofD?XBIz4Y(6jjz;<1@P2$>ih~$fU2zM^4ayF5C>dsa)iNkiK@o>wzM0Z? z2#o{5P!6^BJpQ)KWEvne4oILr_#o^6$i4R@^qS(qpI)mo&Of*nq06*rJb!twkTO&; zKlqjMeV@^}?m95oHW8ZK%_DcI4sK38I_EkGA zdgxUkI8ul{;5MOf_gFaI_#~-}{NKK;J+PyA5IL}W`|!Jjf%4&ZMG^I#+ngphI-9^p zZ|Zh*m>DPRFJ2b;)zDGH-D{xZy0isfhUaMg64>m^C*+_`U3y|Xul?URvDp^pdLXqJ zWxq=WK9{!87t=@lz9{Clhd*B*@w(44r`ywX)s~Pk>^83wb)QF_7@BEzdE+}?G>jdu zGk?+le4siS=jb(cJ3p7OzaZjzEK*JdTEz|DIyELbR%DFz=JBmPJ%*wFP+z$W2T6`T z#%mnVU%SmUC{+I%WFJ9J%nEST_eoMg9g$Z|Jh5Lf(^~TeJOp9stj;HHotEJGAEynO zsJKyEt$WAKUK8|5ZTU97Omn<`FV$#wvFe`ti)YuVG6yGRB&n#?f!U}qnSA^9nY3~6 zO|6Z@)aW0Xwc4{lgyQa5L}qQ@WeJUaBh(1z7~3GI2AvoGC-m2>ID;JwYU25H3zT+? zo_OLHKJjT6Jl~P9Y_WUu^(x-vwjx22R#Q)xsjzqE7<8fd@HXwj{@+7p;bAoAckVLW z*y|{Xu|C1UHW&j{TaWpKN1s6OoXWq*zTUAtR}^c{7uNYF=keM`IFE*1I$C&e_b1yq zk3{)aH;7M}{3Y`>L;u3(VytVhGy6-cwzHB7tN70W+Gr&+LC5v=B6D0=xd05co;E&g z-q5iyaU3w=o-`uAVB6w`o|7YlPJ;bwr&^7oT`*Pc)n?!C797c{n^2#8;7!@Bc_4*Q znQoEVynRMBQ7`s~ToBTI-6yBgcPeL&wQHvi7dK$!bqwoR_hc3f^cjMmTY1*qn<0Q`2kfhMz zQX!^4op02hC%W;bCb$X5jQq%o!(7HRTjm;xZcWYnBSA?^R5zV1e5aSzR;!$y*C&@B zd5*rd^aWu7TI%W>Tr57@1l_;lJX)zE#00+B2i<>_J6dtHO*Q#7{~><9K%I;UDckkC zLXGa#i~1%3xA`csl8NHO#7Z;Z@LSS2QH40695zMO^H)tN3{p#_KCSOxrzyZGs#J2R#)-nW@)WSQ;#!`(Ip=jSE;J%uGW(d9 zSZc`!mmKH)eH=_r3MNsydQCQ%^v~`S!d)e>=+zgT{0#e zytOFQ{95!{u(^K{QT`>5#``zS5}#J$!Jg!)*|ZPSnOWdqXL$dIvdN5~$%TLdPT*=#lgH^^ z!T6b%xnfwYhlUR?!m;+~%+2}HPqy&+^`k4vt@`!ho`svz$cve!#wxD&8H;apcjEEa zw-+;)rhc!V-IaTsPI&>O*)0(?dtvJsAQn{c5}|@6OW+L(hjlD?tr`aOvx+vFQi|TgD5r`0 zde#>hT9kE_=B{|$-+s)sD;H#aGjU!zWN$aLG#;b-@PfKyiEaOWl3DO{XWX7+(Zya? zpOV|X>kLQkchI2m{YRbFiAi!7A0Fw=dhpVL=gD^&zuV(lI<@@qxS?uBqVGcof7O<& z$J>XOT$4T4Z0#WW8sPD*`o6(~_4ow0rnzs!YKXF3VU5w#!(7GLLPL=~^PPIH4;yCJ zF3-Stf1`#N!V!%xH1_ZbU%est&g;$-ZIN82A0*e`)yFI1cq8uErx90E%g?py5%9MQ z_8Ii@87+Xs;h~^g+45y|6r{WTL>~LYNA$*{zkS4B_T9MHharEePWO+O6GL1zwN8#% zzCDCfGZ}UdmNT%J4pbw8dpsSP2qRTiQP2Kaa=(Zl*?h73qpiXILF;94q*%9q_d=hB z$)<)7)vKqlvrs9gN7IpR3P-dAH`Ul5L58fa>Q9;Ie+f!Al}cNFpVe$3Ks@Av{xb!) zG2uF-*JwGd`IPkVP`f+&4v8(!hRX!u5h9}oM70fs_F*y8l<0rj6;MYw9zHU9u-^Cf z!5t*iN6QF9a&aSZ+u)}mwN6KX8dcEe=t|shLy{W#S{}`eu-2FuB9@JIAmFyWalrK{ z)jUH(G`P!oB`kIl>{x@28pUgrgv`)AoFS~17M{S7B)C5@sDA*?PP-qDCOsWp(P8p zMKz_N1D32MZHg9+LcobX3@VmyJG?ZOW*Cb7aKyXyoMM}6>NgR zS$|H>7S9jQ060%mW$=n?0;yx=jS|l_Jh|S6K{yhF+M|Nft868|M|(d8YgrV14@#N; zX1d1yZk7D6tcql_5)pAOw#oDgITgYE{X$ru;!3^x5nciVq@Nq*?@MreapqNkEr-W2Y46~I%DU>x6Nue5HI>u9;EKNF2)>hY`je+@quwQ*r!o-$U(VML z&S9JiL__RA0*Ea7d&!#@^#wg^c+qkqY_bv|Km%h|M!$XOAA6G@5q!YXT9$5h{zbli)>SAP9puC zgi?O38~D;Q4f?;mDC`)PxG?%GYRuAY|KR;3jGCQ=Yq2qT|IvG>RxDZB7%t;((#D2X z$N^CRuGoD|f}FtVU+ypm>6tOva9RMt;B!ICxfKaT4|`cL;>YaXxc=TReyw%NFET18 zOiGbcu>9?JI;|QBm$FWJK2`p8H#+F4tQc3+Cz>^qg~wmHr|8HX#h9i?%ER6ry?*Lg zQX=z+EN!FQd~YCweOjRXl!w0(-(^D!HY-4OO5bBEqqXs#njoX8ANvI0Lq_JA-5hKi zFZBh-ov51divkl@(z94S4x&x4Ou-ZCmzdfAfsrMm*eat0*UMa>_~#g78pnIFRGtOk zJ`m7iz-*Jf|K2qB@_Xlp5ae1oHq24%;W3@bJ9Tyc^jID89U;nVvmjE2o7oCy!WV~B zhW@iEfzMSAAD6>AD?`iQ(2EL4VrSTd7q3%_1$-7#-lK?qt+#+=RA01{?^ZdZ0%YG+ zfa|0!t0SYjWOwP1=WOyUUh(yh;f1oZ6W2VZKga5&Jlz%Ab*0*Jnpk2VM-X-P9y+Vy zQ486Bz6<0hW08oUPUAzqm`zPu6P>3Vv5l(rA;R5n3y7J*dKm$5{sOqU@p_%!YdUIh zBom1F0C1a3Vj`I}e(cC!U>AGLycT&-7Z!Lza7r9;9$Rg|J!Mp`U(J=1LW4sFJt*D$ zlEQ}lML$f{KCpM(?$4eiSXqwA?ae7I06>fKE zNS32W82sm-Y5I>rt(?(wut7 zoTZOBd1pO|h`%h>Py9#=Oo|m%`>O}4E@3NY}pBZ;XTXfeHBfV!PZYP zRNdv$^LJ#$&Xw&;ZJh;Kh5z%Q@b}^e>jxxQ7Wa7HNpiE|A7MY(NNmrYADj2dl{V?Y z@ul|v&X&{QV5e3s;(Y846?&X?Qw|AxJQ!=mhu@N|$M@07Afb+J#kRTlbN{O1HQv>| z#2I}2-7Biw->B7oO&-f{cY>+gPvMa*kKUD)(5-vv$koSqmJ5=rYT38*M-4S@>Uf+_ z0gtvT>5_Eug*bwUSZFuo4A@h8+QL4`8ewMx;a5zZSNx2zUK5thG*(!mVI|E!M2fHD zlPTqJ_^IIDL?7g{n&2w(Ry?X~xO5qfO)Zqfw-JvrpJbC+C6mPQ(tR4B;2fGIjOls1 zqBlF)b`o`E|Ax+J*8a~&_GtGHF||93mI^YLugnBQiVxQ{vY#KH-_}=cdk)t4OqO6t zTanS)R7dDRB6530o@}1+xqs=#RaYxce}1iP$S{T5C59dKwq~3>rL>u%%;}7#r?SZ- zZ<#fYLA!I&FXJkVPWBt6vWwj2yc-^nWvHZxH}=4VqclT|&3qtWEl)ARDgz z?ueOIAWK?Z(m?Ucx1omF4sy6=(y0ee&ORRo{v0(3SPYykKcS=P?`?r$UaeDdRiv;ndd{HVEUH;z&*;QmQ7DjGw zcVkoNEP{*U+uf~z4^t8!sg9548nqw9{Rc>*Xk3e%DM?W_qvXzJ&(jl8l{C_^jHf9# zEA2XuduCzxEcF>~twDjCYbB4?qM*5rmv$p(z`Ni~f0_(}<ZpcD4 zgkpN?9F-T@Is6s9#MZTjUqs#AS9TZ<+*dvufw~Na7yBdnj3x5H;F}co2iB`A7fYCL zm=UNY?rgS z()-Kd1Ic}dVZ)TZI+Ui)z@Xrold@7;WCW~L%qm^6TxJAL?VS8b1Zq(Kk4urF@g2cM zVX(J}xA3yJ@U6FSpQZk@@1f`dBBU%0!jMeWPQxOY?OyuJrnDpWf3eJ&AR>Y6Db3v? zt2y(!FB=%x&78(Jj|fRX*H$IdY6J_*39$EjN`*DF>c{=c91>z_ZGwN zc~X>DGjFq~vLjE`ZC=Dibe%ntdo&oUPdUWmbw4E`+zqSmT?oUsP$+jl4Gv-t2cd(7 z;><&|6CWW~Gx?gD#%5heH{)Fn&Dk-eSR~F5#Gljbbo2rj+AR-xv$73}enbh~eJD;x z^JJoxzFdHzENCT6D%-P;awG8d{X*hpw-w z{`Tdp7SH#4L!2Lfd4rjDrtXK6oi5Ok>L?_) zBElEPcZUC3n~Otqrj#|lsgMp7(SQfD=(?KC8&g&vD=>{LK z4i)K0omt>WhP@swAP^D&)pVFp2$OWcOqM3&GJW-T1T|pLcXrid8xwq%& zm8i+qT`E`Y#_v<#Mx>cAa383ftY{0=@yr5a6;cPe2SgRM#G;L{cs9{=Siz}}&>#S@ zyG-EygP~3*;a`#SuPMn0+kl2~S`c|WxZh@o^46*15%^t5)ANm249*lAjyMP@ES^67 z!c;iygJ{QZRRtJ@=KC(1ajh}=I!@GG&!7eq5F2J1Ggvk^|Lg@O<0%;Or!O>4AwCj#tzq%x(7?`TLOX!L@XN|yB z+oe+_M3?~Hp|X>7akrcvkgVQWlzD+EUH`w*!I}S+-ij&RBV&bDdK6yoWjgBeY~xe6 z8C(A_YT?xmNO&A9AHzE<8`!F0#{B}?6l=JQ{FV0{5Y zHcWLW!_W8wPrqW=t#fSBKxxR{7AcbX`%h#H4k#+)J{zaWmgwRGelWIazaIub>*xV7 z4(Qegp_v923*{d?Xl)S<2_OnJ_*2un9+|KyE8n-Ot|;5h9e3nqHCQQZ$`*y;=pJ+W z7=?ji5<%?vC<@GEAkF7xX2^ggpw2QkOo7rMqp+gUT~-YIg+U(aQ#V$X`xk8_jKK&) zd=&8^X232#-u_3w-ELbjA#A_HV2%8cBAbU#IXHV4PVE>REk0BVAH|9b)(PvT0$;1Z zm+IGUl;Mf>7740w5g?;rUQ2M0To^ii2Ifc_$WXSYOBzW0qHRjqb-l?v zWdj63Xaye8Z=Bh}6-bd)3DQ$p8*0X&9=)(L>nr=LjqdE1XBis-z#v6t1nCGGAHOfW z-AXYGlySa?g&+JP9#n>d=1B{{^eC2M(|`T?E!f8_3_P?Ccg9C4y#;lfhS>p;@}v?& z%Qu+%a@8$9koFYK>|r`cGzzWK`N8PE@ax9&%&A2t5sNcKC8lBFhd$f?KAj*i1Y^_; zT8XqL^Zb_pDbnUU^FJsCv`d)eRfZEKIAbuuy_SFeDi~z&q01o?SorbUT?PK+w*~J2 zI_iKmo*A)MV`$7cfCl|r$L^~AbdN2y$0FRhnpP?ERMPX=(-NPj%&rGmfUuDCXHTgg zf5nkikcpwjj(dXj?WNH(?XV}$6|gdFAxVFm!x4c-g(RHNb%B7%oTbjJ&44p--*p48 zz!#*p_md)`)m=pz}{8thHLw_6-uR11kIKFzbc(M8KfBV7|zs z5?@{$-vHG`t|;LWZ^3AoQw?pCEkcpn;=?$6eIC8q@8)m5Is~`a@AMFdENb7b|AHs8 zqZj#m=oiNEfWb6Nov|?K7bubBtmU(}QFXyczbI*?lTGHRy=Ul0kh6+^?kTYNnuoqo z_`9*9WUBSJE6^mo<0q;Nz+196d;~7*tM}3t(j`AiOAP<&!oVh%Wxw1iW*;DT=Cb z_f{U*7k6d$6Ylt{FdkSaf5*y?q_36M1)i4q7f!(y=9?yMeOX&PcpwY+H;zmP>}|K0?0?Lg`PpxlcS?kH)^o!}T)0sFcpRq*TUXp0N)su8rrhx92{-}{Qa zL0$kjXL*JJpjmpi6))uG6%`l)^U>*6vqT7v6>$K-DR*_$08nNjZw&yQgTPE<#vOUW zsJe3lnkbOwRJR6Ts@(J1(l?44Er7&TU6hGJV@!ThKrAXf6F(uOs9ln+d_6dtegTr1 zCH(;4!n>TuQ6$B8xxQWWSRYHw1blG0r_(WNp^JUpoY@RlNb@?k~VL3vZ~8a=2guu$<9 z9Cmqd+Y$@YbE?nc%t3hiI|q-s3Z0@eU`r8(#JLEZK~w&~XRrq#iU5{|nLpfyd}a*{ zymp9+`Q)_;*NpWupj6&+Je2QT{whDw3eiB;#}8T2MJ-w)JZlZFsZg}--Go$yGS{8l zkS12~X#POvg*`Q@;FLpj+f)BW8$`!EJ!Y+Ve3%oc-t?6C_X(IaR7v&2q19_nR=&6s_v^L@ z5suL!s`VH|#*6nzySSUjQOQh_5MZ!?&@m8TIMu2X#qe74h94PxXlHKe8*+G31z>pZ zAB<^lEl5r9ylYAEPb6?z$q}H>ik_k zq~9Rro4{9zoX(cMh7P>rK&epb(GLJa=&eGvzp8w$banu6_7~0 zODh7de_g(I0e}>Prrio-Nh$+lJ|edCq_?Qn!^h48qomc(E8if=IiOtt=zHV{;7rB4 z!x~|eUUWi*qPR}`&>1|ow+;Y>-ZfzX(6Lw6d`Qt25CCFP?w<1-u4s+60l28&C;+6D zZx-JmKh<^!^9Pb9PGLmdxjpF@+y@_&ut(E=Y3JvsEg4t@1CN^?Sw-D2N?O1Ji-S>A zi}EM?MF4Q<*o_6?Om!*}3T)iP|98uRqE7Vq1Vph#CfgxcIBv!OP=%9HF~~wdS{ER> zG`Q(GL|j+We$rKcy#YwCcDs}cyS29SiLy|+ZY6<4>wqOgVB$4Usu6hQ(3C9#C(efp z!cgL#KjeBHbSoHDRE*3YaE<%JVT*8?M{|Ah7j)Mke|l(_NY)I z?ND9JAktK|#5PrWn*0l)=?<5O-@|B1J{p7|LcGJqq?3II0kb+JZRj_rX2%p_ef z!pvMtg5qEa2DZpAcmie@sT6<&l4v zlT6hZTy-uwh3D@~Z-e+ahAzUa?MrA@$btwetd^xv!(Z%85B0TG(9_W`i=YYV*z+5m zZZ=DV;e1l#C&a7S)@<0~Y+&pAcuK}=@oldJ>7?0f5lF|Jh^sKfROcZu{s8*!4s02C z{qb58;G*=f?e~iX#am0l4glvKtEj)-(g$~+{zPzmc%W*W6^euL>IBhG!N;pX<2L8D z&}a)f#`Tt`=a`o%Np;~DYu}g)KSBt!3bhBcO}_i^AUlGNIJ|rwrKIbZzj0eHW!YrA z8CfnJ3p)%l2V5G-H}K?uZx z+2wks6k=|?D)*QUZqv^>wR_OkNHK?_#B}&M3!mArcmhmvUsNg%wxcMwOnTO$b}U zk8Exb-ALDedkt?PWeV$hm#XfJTAhjVZQ!m#1()&Qd5&G{5-fkZ)5Tk7fl zGHlE6l<4`O@XxQ#gi)994kOr{G#4j;Dk`9e`QFAH)XEmf0r7hX8X>Si+i4@@?Vh5` z$)(Wa?C7jH$z8Oc!7!49QWzEaxs2rc9y`C0B@#c`i(|FXV`pi0ZHhl(59;@P&~BA| zjS@HsIa)EPnD~;BTX^_T;kZbAvW(y16|Hel5aII4Rd#nHSZd{u=gm`7%3SYDB+yg+ zd##By^PgL8alJeJ&*whClG)pP)p(0sQjU1%2yh)qhHc@OUXOERR=pz!cP^%bbThrw zFH>mSBgg7njx?ioRyr2Dka5l&a#= zOUlx^C+T(>@tBT_^j5+o__YRD~?!A(Hm3hoX0HJyO$7I+`etbyab3jzHHjBxYLk|CT zg_iNZK35=iYUEf{emw-XO%kpCZXh_P|<<|^UGxmfh8Rn8SK6KJz{5`XXGsX1I_8=M7 z+O~}o(_!WEnT*DMtR+_a&h~Rowx9%vgQJI-oL{d?yzQ9%-I(gMx8yY=SN-KxIfJ;T z7$*k@Y5vb;XTfpLC4!H}*%4q%PUxpp9aEMcbw8JeDm0N#1`@hp5e+nhZyH{W9L?@% z{ra~4F7JATAFaju4}eXu`+lrQikaL;UW1#hkWbXd+hI;oH@Bi9iBv>6-h)t=bz)Mz zAm7we!P!~X;b>mviLQ=#n+x=Nkja}>`cT9T1O5DllY5a#Q-DL)-zri4Pc@&^23FZ? z1PFC#$i3|a6@Kg7O-qG7nbV24<=8EM^-Eb@P0hoH%2U(+Yi=|VfrHXlvWaqR-uhJ6 z_+{H|3JQ(f%sc`UTa97I=|Rb@0oD#;GMb0P^z(_yf(+>{^M!E1 zwz`j78lwyUkh=2v6{)cCMPsVf}{soLhb3Gzrp>=!Wk((})3$ECY zflV_%f$hNGeUTTopI=R0HD(Ay9=FP_eDV{Jcy93r`qE`&$mNk;XAjWS38-xFE6;7g zaA3m3Pry98Rd(G>2V?ha=fYO5nOVd=FLyt7@O#09t@{T3)61`1OrS57y%S2SqhuW|tG&XNf*-r5qawLeX`Z}# zuql-Ou1ISFyrFr7zJg^k@L9yAbf+L%)#{9~D>frliyL|Qmo|E3x@+)8G57g1 z!&^S%+8?$tM{@SD+;l~r`*db9Vk)yL85&WZ6goOz+Eabny32gpF3LGHqu$$@soJdS z8{gF#cCKD8R_oLv&%Gu`Egr@9#3VJ*AYSEuWw7AYM$Kn^rGauC+DbDE>y%oxm5;_A z`EBNMHMS487yfwrVo}h|iMi2fsJ-Dw(u+m4A+MGnV-};^@kgX?8DLI!@DD@`}Vs@v$HW#&~ za(;&6DlL)ok-@;^b*&3v_Fa1tx`jBd0?i4la)sg%thutbsZyflU+uPNt|N_}fF$X- zT~PX+S`o>RDy&ljrA+&i*XQ4|yRGIaln8fde8m?A&I6czlGtYa0pu=z$NV?k%X@;! zt!IM_j~3ErD@#+?FAmAu;Q*ch<3~2y9kiWtJyy*waTyoMjn!rI)oVD8>K(^BNn{LN zVg8j^&$@V69*?Bf$U!Plx0yG>V>)lYxH|o4`|i8E#@|@@1~&U=t2uG~t3C#!f#^ENne<$kTqg*P`?o=1t;Gpz&ByfBmtgnMd65u7;>-?6n(1iF z{?V3Gd`MxL!79(-JJ|xeVM{@xcRz5W7}d<=t;>nBpJRTM*^1>wlTXK`rkvBYmSR<_ zb6g99g1LA|?!GouNAPGER<(wMTVfnOi)xTq%IK@%@LrWfgw$q_Y-Uk?W0TP=ZlTNA z5aAd6_b6ji$fn?>>+~E?-`hCV{-V;MrGFt~Ka-pA2uwrSN(v~N?Yx+nH*t$qBJL%T z5`n+`g9V3HA+iEJe>sJp@HlK5)R;>&2& zj%{Jxy!jZekveGKsUR@Ce$eWn!b&H*xwb=5^Vc#{cb+u)B}d9nPfsf{HCm*SUYmqw zkL>k|0rQQzwH~&3%I*zlNAr8&%s)NQF*horUlTQUghchv+oOKiJ!l^xy|As2*Oj+N zr&YyXKJXH@8Q`7mMqs$%iM&=R&o|9B+8K(i@KE!wg4`!KgO72h=x|j3qwX-)Q0D z8DR?E&raA^?>=}ZOB1~2h*QNc4^trOFAYNd<(s-YxtnHK{w}8eQv_>V#6DBwmb?lJ z22ql3QKn;4QF?b&m3~k)t{}nNFA+K-Nu(~`z_sf6SHwQ5VB3biY^U(aCN=%hSf5KabWhfBS{rb0n3>YmAGPFkY-@dBGmXs6-&{(;x*ZlE zcvX0`Pp4T^w4vxcEa2N)Hk=@!z1I3W(Q5YUwODUi%9?IuLO!1+hrpzozFoCENkp{7 zzFpLzl0)a-I#4OQ6AwC;_LX-?cPJnh@@}G)7LuQ~L#N!odEhoEQh0qE{dt)TzNme}A~N6prA-IucQtl6WVe~e!H z;feX<$+x~nuFggDw*I`b8d@#eg%n}sWfa)ZXMLvktYR>$D8fFXV|2)W@0kDlm|pg_ zg9Kt5Jr_qiLsHa;_%|Wxrq*`-{Pnx&8oK8!8jUV%=VtOR(?P98<5*5tByy*Q1v9x3@Bj;;bIj%ABNa0?ck zAi;uLfZ*=#?(XjHZVLo=C%8KVhsE7tad+3h?^ktA?d-JOmYG}Ube%hEclZ-O&rzY- z5xJaaX1QuXGgurSZaOo(_%GSi(NU_1fx@pcziJri=b*RJQIyPhv>leL^ zukkg}z5c(y=n+9~;X`iWLHcuk`LKe1bAWzprMQ*dPxT7EGl%Zx7vkH-lPxpnmtC5V zuAYZ~6B|(XKB!1__Wf}MC*CVA)+;XF%NQAu*>J$L`_$<6U8^OY#A1$ee4TV>plm0P z991Cbws4)`}0{NqIrobp-cq@uzUv{-A#{jkwpG8i;<2*+Att6 zSg+1VGc7lhTUtB4Nd9mj9rtDBOBX!O)}WSN2ay!R=BYXHzIChL!{maDJmm)C?9&U; z+oNTx-_T4Fesyl(EgoW^Tq|8_~XT=*b!X#PFRJkx7FU3%2bgBORX zdzHHjs(+!OfxCZU#kPy>{RQuv6{?h891bgQd_s<822mGb&CFFhez$7>{mn-I-QOEu z3L!qiC5JAb&sp#V(}$=!wPsa2yR;>Js_{^@zBIT*T>jDkrKS{Am`(7I0^Pjs4!zVH^k5>Kh9*I7Q z4U9&#KLlH7JFAQjqHA)+uU<+rPtTDnI%JEj$z8Zj1X~%L1&&tV^U2?9jyFqZ-CR_OX&RQ4l|L z-=L`=&)ma=?!(3KNECV0AEpQRZ$oA=B=w8 zPOSar3E3UEAB>*XT|-wFMTbyfODZ)=1u}1P_55+5lQz{<(23`I76@hDo&m30_C6Q+ zGvkb4(qW-mj1_zoqm;>qb&xxJP51@O6OoVQTH}3Cf;gCT-q}wm!*WSJ&XLv4#nwk1 zn$+L4!cc$kqOx`-T(mHCQeL|=`TPRG;dW=8dFFzqF!*U!2l(^v)Qmi6R&qzK9!}cE zuTqLiDf>A9IbL8C_e2siOkK@e6^z~J+u~JkPP-bmt^(U|`s0=OLcn9c!XE=VsRSt^ z_hgT=^(4Oo(#|uARCpb^RJg4 zQzxnE-PbT;s@F&Gv~pe(^)Kj6^WS)hz9k|1XWoDq_3Wwj-fd83P|FSx`|VY{Ntt}8 zkLAr;rOfHW^u=Gma|?Z)$>IaEl0I~04R1f}u)yeI_(VJ~W$<)q;?E!UDIBYgSN-5d z^v}Wd&$~s~RI!V0-&OEHZr>Gii2m4Z?pgYvgR1=jlg>G>Gh6=x(eVPu8H2_2sYaK*z;STmQgx#d9p^Wc;hETSlL^!pFQp>xnx)n8{nR=)dwA3(xs) zz@`ks^yOcMnS8!om$LYv4|arrtaQBL`UwCz-ncn(Z{qO7+P+x3l3;wWXSw+Lz9|DL zhClmaYyQci9erf_DKbo*e&kQyi<#em@wyPq?6kk?~<4)Yd##v>1Javf`~m+5P*l zqPu%~dq+2<{vdDCTJMkDpPTQ2!}RuT#a|ivRh{{Dfh+%`TS)&tx{+#tkDDh)syZG7 zW+nE2gHgZ_I+NClsn1U$R6RapY_ZkdK>ztM^(?aUYo@wDmjyiP!}ej}8hGNlnr;evf3S&d>xD z88I~hJI>eMfVI(h=MwIbo>_otq~E&VuG~!xDbAASCFLjYl|SS2l2(0OK5-ATru@e% z=o9jWAN~_Hk=TFqndzBB%V`7aJ(I32m-2;}%)No4M_BL^`^i7+O+F#o^_2Q%*PU8E ziP&Gi`sCcrDVO4rQ@Yz){PT9N+hFukeLDUU!7Ygx_&@>9N9R2ff4TRV=+FN~O!7(l zM@L=s)B5U@>v^kokLT;Vecz|{-tfEj7U^flUN_w5Wzr{F8?nYs2kxD}#D)0PC-bvo z+z0h@yoM7B#CvZ4C(hm{V7+Gh)B48WcrOp9e9kn$B-g3`u5i-z^Y|Z{T+$1l-45IDmfweNU3mCz?|@fE$@XbC39ID*7I=Q(+1b|f586vgS_%JCq>{zTE7NqxnA=4FcVc>T6%7wzQ;Q9+W7*&-#%{ZFw8O~K1 z@Fzxeo#f%{>27D-5Y~1W>Eh!GkahCL>Vb$sQLAkwwS4`+kX%FfD%Ma*$itD$^Qa!` zt3Li+&>=|CP(0x<@!XaHgNB~7z@7q-_>BfBWDGijzYXUBQ0sD8&M|?z(>GY#viBXH z@LMGo_k^!h-}#l2T2N7asHE&R<)KKKO*(v|4a}+nWiraocSC{WZUt%)Mzvk($Ik6A z#tj%xeXc$Dyh!{lW!B4mDIX9o0zoEeO3R1Q7UZXvbaf-7@Qi&aV8nF&GMl#yE2g1WEHcm_v#fx9 zj#O13>n!x}kEk?`ZZpuT5F^#Vz1YsqZ?&r~dNP$re+STnc7p3yUsTDUP5SrPdvo)* ziY*JO;0FJl53TeXM``2U&w89ofngfNFl?k=z6%odNMJ~VFVli>&gvZbCoUf+57O75 z#o+ZI%-JB!Y8WaVq^~rN=?=~2?a`p`_bu3-xy9@5%th6hRR6;Lo--dHW7R8b zB|y#=cod~bnRPCDn4`7GDDa1Iz9aE06x3eCOJQ$Z5z<;&l*KkN3m|7Q1I4w7PMlgj z=sz)=rhQ1W-I6Dkb(L;%vHv^J)xUKRjCY-1EAYS#Zq_ucXAw0sjmk`+wo{t~Xr}*w zDr|T!ah@78&ZOH&<|(IVjG-={O;%a@FY#DPRUpSqK4^c6edp^~eD-ZrbJsp{eaxwS zzqwBv8x%WiLBZc(&*?5<@s-`UV{;`qVh7th`QZI2#;0$fq3~4;*amYv8|1R|Uvm2Y zvwQ#kAQUf2b32GCf>xO9BA9F)B(64W8-*Pfkd6P5{Wk|z&EB<{FxF%zk}-PV0Kgjs zxD>=@-L{W6dxO06Uuu%l0S}9OcE`S+HqN`)3d^&JI~=uCew2|$qq z*r%ib(pRYdzX|*I;RQnXJMBq&TzY!kb1kOTCWAJNR0Q)^?@vLwp&VwaI^gS3jIQ2O zTZE}5;viJsB-D_&emB$K&sDUzGtuxxl*@gPYxG_&t{1A-nOYbTjLlh2exnc zU#$E=N0h36+59vgRO4T64Tzcz8`8q7uqLBaGbf&x6xSbbI3XN=C_84j!VA;WqQ7jQ zJ4uSQS(yK2Z^&=>*1KoZkoCo8G53>#yT9O71evyoj5BA9f*UiHF0sNL|DW6L!5<#4 z-8RNzit>G@Uo@8)I~$t-7l#6o1T3Lyj4~?G_{-&G<)9QplVI$PdMvfJq3OHI1WyW9 z78$*BUS(O=ehg>((bdQO&7$p%yiTB6asKvV&Oz*Bi1=7^M zi3|0+u4LPFM0SmLv%+K2nmivxOV<&8=H{(_<}>ban9O%^a{GqtE8lg9${W&uTFE>* zfMfOaHCQpgI@?ROE$K9SPM99zWk~;7(y2FbrcRwOHS%mdP@)7-(0v!B~_%ow&sYZ`fJm^w^!%l6l8Vv5{xb?Th z^x!SnwdUWpBfk8)R0e41Q5Bt8+=L2A%nZ+G}pd$IoJdw6Kc)? zL*y4@E5Xu_cId9cSN)5zt?;f;{lXiqit{M>XELtB2_~hjqKmOvh_1pVb7P#D?K6^q znR2Gr@x+EHLidOC!jmv~(HQWKBYxDcCSZI@sWFl?8}VSh1I+7*RVFxnSb@!^Z-KXN z6a7sqZoi3#9?fKQi!Iu!JP%PWW8b#Vkx>lA+nX+p$5l!&l@Bk>!XacBRa;KiS7L|G z?i$TR9$j1h-@Bvjvt@!?h3nGDlPaHfm0105VyfqgH#ptQ`IPPWE=nm7UGu9Gy?! z)`KiXJzI&{XO$h1E>_w?2cJdzxVsFbF4pIdLw8D;><_S7V;|PnSE7g;kL+#CGW9ff zl^c-E0u$Smm9Cpj)wa$U%9TXjr>B3oE}o@xwkb!MA3mgWQm7k9{cE$W7a{PR%F&GJ z2x-BfriyVgaMPNs)Lhi4GktneG2M(<&sslr?(IxW$1yW+B247u;db5&&3MOxCu;~p z`JTSwWa5^~mrf?0leko~6!33_j72wR6`*_0!@yGLO}0KeJW+tiC8&K6+U{t0M!=kh zio4)#l8X*i?+_22x>?gIV8{GRz{cr9j4rx%s_4y!u8+{c5sVs?i>U7>L=up=NPg#H zbrq?}FR!krEfM}sJqAS&^-^*$nXRXxg3F`bVX~NI%e77zGfvFZ$aqeEU^gj1P!(|9EwWFn`M5nK=d`kmdWO;@^~O0KReT$u6L48)lVlA zLpe%XVd4I3UxU=t?)k@uEIbl*AAFRj==ixcSCytIZ@!$>Jd?heyX0>D!{L*wF43Rp z*P^9oc>@(z1Xt-^5~VP~knKmESX9>s>9A6?D0a~S_O_m9d$w=h94*GmkdkR+Hn&na zM}Gwaqbe+pyl+pxx zafWSCu@G114hL|fw)zJ(z&Gm{-(r!9jQF0Y(x@4Cc5Xjf&ZRKrx!Tlw`7ZQw?3Z5J zQ(uUKaW#%E}FuYsvl?H=!dTD(_u?fsNV{wxo;7o2~w zXypvko`aJAtN|b_t9-6C-xr;K{%h`TAV4#hCF>AdiUtiW-R@evdVGsP9(%vvywlcy zdZ$ssv(Jm}Np-E8&z{Cy=kZUs-H6x!Wlbzb9;sq9JAdZ+8U1PPnTE_q&H5zLip-bY z{266xs%Zxrix+UqzT5q&VgOmbbKiqm_?P^f0=kIGUC;P!Po{Bc%LyGKi{s!VYpQ;T z#uy!A!CdpGQWR5k6b)^yk58IQ+XFhPzO4JE?))lU{uyRx#2Cw$d{fPGsmJRVGlWYF z!*Q;HL+hF|J)AgbvWy*c4TAwW-yC0f{ztqXd4@7;MrYQoCH*-3SzV=eZIMUn2}U%> z(ThZNC@FpH7E|i>D9B>Q$B|6mJI>7sU-}Z!!!Ar^ zrHKGU`*G}^c^8`+$F8Ap+FXfyrO`b#^jTVdX{w&5$ljZ4F6?p{SL|!tvdR?}v9jYU6TCD7LwsG_S41xIR<$6A6;1&%vi- zNMFNK2#RHuJxy3^ucHS@-xHp?pVz&QM!ZDz9qgjW9vYrzYP{exztaIX_Dg-? z!&?%dS6T}wc|QKaVuCi(ceSZeTbl4>H- zl;QJQc~1AnOy3`U%LCq4V)(K2n|N11`q1PCYR3dar> z<-U3P_~{rl=P-4s@|u&@p391#P7jqx<>>6owN*O}cDa@S_q8)oT!`puG)lUbix4>u z26DcL{>FKfLXUWV~tb8x@A|CQ8f%Z`dOH}Ay+pI41=A+1w zGS{)Uq}OLS zqE}vNex*C`?*o>b)bzx}b$;Ru*Ya|=26~g$otr?0&GfIa&mueL+?XvF$SG&PHodb% zw~8h%HA_iL)N?an8e~n91Daf|J5@{YiF<$D41L3=9v495PIIu=D#L5|!86<>c z>s$=z8k8cme(GAKI#A%*+FR?NR~V#9wa)h`bYF$T`@pqY+MbtZw*6{q_&)q$UzwX`H|O|0P^s>#jP|g~TgMCoU4{``%ZFo^sjP6GR@8mYP9?7Al;O>dmhN$F+^5UYW zxtefY%k>Z>bIr1%%Mb+Tkm33uQeLySD$vS6Oh@Rp`Dm+h*d;X)tCV9+6l`^)(Ree~ zz`246w6He5+SzpFa+T&aojm`Q)OHW@?us_)dq8!|e%zW8O{Iq#_(}0r$wX7d^BH~w zjQcJ-qR>p7)b;Ex^lnnIt9S4}JU(Cs!?v$esuE8D8~TT@ucJBv^(vz%imwxrCFzZ* z=M9un+?qG4vXeK-7*OQ9lpn>01eS3;G+A!MV&r&6 zu?waApQc3;-!Gy&QCufPb%hw3C*?+l_ONEl?4l&Y%<3g_uANJoQV)E2$>9k-%|wmxX-srDxvxoiZs>1rG77Y@nT zbVwH_MjMgx$)V*Y^XmLLhoI;}RkHeFSmN+Z>A?vK3~y+%c4@Ij-5!}Qy7t6~>sHC>4ID;ULUyb{j7J8o6E_SHFYjKWS z?5(Nz>ya_u%ezA@$R8)}_N$bYk4eSX=a~E!qHooGNxZ=J%KBo*t?5?lxyV<>LHhpe zygzGEl@YOF7}qbPB036FPED|IaHj(bdT?+YI2vp`UGJ>vOBU93S18u;BHE$el)n+| z=4u7CTOuTa*Ft|12>X{ddGa9Z!B%WiUbN%3-DVv1hERyh+I;+-4P$L4=q8PCxjRmwv$tRT^o|^I2%}U zNT5v+GTMdIp%Pd+5gWn1$vMg4(j^Du0{>7Lw7H-4?P5c&zv*am*96|Z$~nkxO3*hKZ+i5 zfV%hQTZuPPv#a|yc4IIv^bV~+7tVH=7k-D5AR>oNtP9#n#y;PL@&}0a8qTVa*LK#3 zb?MO8FlDI=SP+rR1K_pEVaw$WRjMW5Vaw?yfg5H0PAe{3hmyz9?MAo{)1K-QGbh9C zO9@4n+IMb9R_-n}UT#Qd&Mq}!Zo~GgUrm@MS7vTO$bNy@0so+yv^n*8L+sjbgB`TF z{SjMYl`Wy#&$D9tY%guF?BL8>9Jsk^kXjm86EFNDieyU)`!PFVGIvKwn)i z(Cz*tQSRVfkQZu~cFl>le$NUem^nYH6l}TpQVJwHVsJqW@y@ z1!gVwb&Vb~u4iUn_jL`n3AVOyqryLaJ>&#cyM0A?lshyBRXbMjMS&+54pi+bhUDIr z#JCQZ<=N*utx2;Uo+TdI@y}DX6_xuF?Sf41&iKgA2_NB6Y~?jgD7 zG-$Lg{RW11ENe2ZQ%th<(K~LUU))b}^mYB?q*!Muo!LDSdWL^AEB)L(Nr>@!oG)Wx zk28b5UtBC>fn_AEBj6ruA1L>0_RBP|B;>U^X|W`)wT8UXy>Io9lZh-8mwk7uO0dv& zhAI6wpJs5y0AYuT&Yp%fcOpoN4K*szekkgPwe_vB{HED_LMmD zZ)8I3{-vL2YC-++PqxcajDNj;IACr)^#4G2U(1JYdDeuIz z_8RC@`R|$`c?9*&=S2c`kR*Eh(+evZ!$TzM@{5P=7m5TCeW{r_h)cB}1os*((N^eB zL)Evia(@Q=&I66zvPN({AFCQk4Pev<|DND36R6`1SriaOt(f5ER!Q-(a(#V-wTnps zMq%(1A%zs||Mnt*uixI{Kx^sy1~n`2C)pIz2`}PIG3Q8#8Xs=N^=C#*K{saDWNpDZ zGm2Ot9=eDyuk92(po>+9$5PSN#x{5H;)zIV!Dyv8+(l&+&Vuji_ zwT7eYjnK4=EqfSfGJ*bEu2^)Mh$CNOE*260RDRi$`?g`Mv4i=?;8#0^ZIX_3cT8L+ zBGmp+nyi}2Zg_DpG_90cUv8l?6Gc77hxU*gvKBk^u!*t3N;i2|l$bw`iGJH%mG?L0)f;ga=PdcBAc@4$a>-H205_#WAFL}* zEY!LajKANRUNS1H^cH`SEDrXL@amgR*fAPTyxSFC(L)GDDv93w>RDs)c?>#(EDqVL zdbd-3=z^$E)qHaEYvFt4gIQ6h^AYdShV(5JIH<7+yWDZN&aYt@!B6$z>7q&o+l*t4|rf(=tuzFEe80&y~EBffv(YnlDZ2eLa`fHH-5UAg5jqTFq8i)1HeI z6*4^d*sJq!fn0;$%XP}2mWOzW)T&RFnBXSOO^v!Z^-pbZd@|L1@`{ROc`s(y1n8Kx zC2aWYze+OXmvsASmfeXY1ck{8HdID{y3LVHVk4#6pZgQ?%uQX10gQ{1GHM*mb#g$f z6H46EMn`)L3o9I`9haJOgp^88sI+?% z&^nNx)(V1{YZDoPZf{fSv=_feMJE}awoaXjJqo_HK<>dubi17=?^r6uaQY&C1TQ3) z7X*b{T6q=rE3{TsxaDW)pG0RS7mRlSarhynD1O&wM7c(vy%pwj;y|^c8KYbby5o9p zSUHt45?RYR9)0^qi%kSoVa}S$=2cjM9v2-WO;1Cu!2j9sJ|tIYqjXup4JxvygY>V6m9D< zV@~mmI{?|1iuKDlTn`X|j zRjDu{*ZdG1Y*=c&f1(Z3HV$>V?iAUZPzWAL)+t8DnX~m2N8NRrqu{qOuE$j5S&ZMO zkUqRQyN43oXXRtGT-`vIOZ1~T=6b$(xUnz2Q=lsMG=Y#8xi)9RL$4NM|1Dp$F zB%R{gP+wB*PY5plOO`(U#3RUUli%1nZd{ia0^c3GXMf;^#F?R0I1Y z`e@V#S+#yNF-1zMy^gQcMC??^kj9Op`1_`@8JO4*#(EWF8KbXN4$ggR0kvA?h^$mT zUreTcQWzeD*ax3MVe92$en8jjYkK&~Y2dLGc=57!@=@6!)lc55cr-NVb3UyfhS)DM zAB1=dx~^jD9IzdP@C%s42OS~AaGnGdiS>mz zYoPRU)2_6Q4~Pln@gQq#tI2dWMKgVMrwnr)$&U1FlA9P%6O6dGJ5%?f$e$W;g8+$Q zDW|0`50kw1$?83&pjdxC2}7}idKH=kJd?s`=KFD_ zaveyDsUqOme|VI^N9l|5zjtNMMxdngdiSn=+k#ix4a)6 zzMTTvYC)=Up(5nPze0cmwDze}DDG5!^S)B8D5jd6FJ zVbG^o1)1x>^R?)^T>{eZJ9t-TI@nmr%tdz)B$`*;%tOhqzM_2EOR42Ld}Bjk1$hu4 zze9ZZ))>m+W5!)Veqf2(U!rn@Bm{hAlX=ENc6%~f1jm)^`xJXD(-4NWY7fvGkDwZl zlxz0;LZGZ2(Lz5t&MoyYef#PVDs9)1+PV2axR60JSC@aoQK^ml6tNQeN`Bwni~ItW zA&kiWw2J(}UfyfrBAxMTfeLG7;;G2!!HKWD3=+?sQ0P4%OgBXFC@Bh?qzYOK1GL4l znKULTYMj6hDG4+))8H((fSQ#_Kz8bH4>f?fX1>`?=Gi+-iS^&E#7~Mc+RlQ$V&srAR&vB5S?HZ#y}HzP=`~7< zVux_=5g2sm9ovu`>=1q~GWx;9$htCAWJEeLCey}UuHm-rk`%Qj@WKH%yZi~- zWUJ$5?JI7qmdfV#;KX`McDdVn)&ULM{kexv4^aYbILdj2pHJY=CXPSC^>zXmsGodr z`b1VYNJTz`Bb2nBPwG!kM)y|eC57kB&rC8Mx=`AB78@+o9!wW;*b2Fe+ob7=MvmN1 zIbusfWP17*9KBM;Nt(TU+V)zBUC< zmAb;x8+8D;?Gn`=zA9Y(pjin36(5OGb3tF>NRd-TD188ubD=d=qycO3hEI_~AN64Q zQOGicogqpJJE3M4X6^I{7=f*Y7br)ZmLjf9Ld-JCo28_Q8PgxutW>fLjrekyFlzS< zK&`LH1ia*<*Z^3Acd_KWaPs~TXnqwR1Pad_lZ1rrhV!I9C!|yq@1fBA8a$DJ7G6nr z(sG#IXRs`+R!&h8I7cyz)PTBMx^l@>-H9DK#v8yq0kFI&?xVraEx^C>R7d3XUfC@6 zH`o8XT!G&nR@J?)2NkTP`P3J-Fy(~CcZ#vO3OuFihV+8l%Wcm>;PreLnUqWrZ&J$o z>vaQ`XQ+p*CKMidi9|rV$Bb8^kYV{L)b%Hp?gMqhvC2{WVTAJEoIumujLbge>!3~0I-*pA3Gn!#$^c%apz2cD$ zK{u8-c;)>K3GQd=gyLwOzrV(SY`9WdWNX_H2wUqY?prEq?aRA+!9LA93D>W??ubNzVQzHXAE;l*l$&pvmI=8IJLpJQWZDP zqI9F@bbmd$`;#%2EHoXwcbD!J^0|Nt!K4F4O!*=-1DT~#+QsF~yf_|9KdXHnm5+VX zw;s*|E-gw^FYuJeg8iwSNBjta{B~d&Z{Zo0_xOXak`1ZQ@yA@2RYB=6hVgQb_hlO$4bB!_#x)woynj^Tp2-!;^6xQ6|LB{gl2H z&?tkiFHH^k@gq6t%1ymrss{7aD0)zflczfQ2bpNeJE4x-Uy^|ft7tYYqa}b1`N~$` zz6jg`kM<$9OdUC3V{>33PSXMqG$W=|wpKk5-PX3zHI z=-GC36JUC0_S8Agc`OO7`Hh@X-1!n8M18Q#rtI7&{fHcsCnNPRjVTSun|*9b{@;cI-Eau2icckOSTl zrwog^RS~Cy=C`i3*|E)m7s3KQvKzFCeuvY_o>cMr2h`Ov z0}axmHzE4304lv9Y$`f&0x1#+|t?=gUxF6kS)` z_~Q6GMj3zRU3k}-2j>vIjlK{E&}wzUpdb;e@lzOSj^GKW%@FbN*f65|*J2e+H!!e$ zqK~_^(Fyezx*mwayBgW7?2Dvf6>m1JbU14=lw)S)YFLiL-1kja{imM zzjMX?*85L5bNQXr{JxMU!AXps2Pq2&`3I>ZlH~^?%5BLk8~mD(IH>y4I~}7%0yiji*ERp%X}HlO7@}qM>HYP6jcsO0;ay5QX`^i)736gkur5&? z!_xO&z7+lb@Z$b@IQ?VxDf8UpZBe5$GJcBzcnw`vmL0eft(vDARy@M7dPA17YIo&* z=HZh~6MT6aB+nAGmc;Y@@7a@Ug8B|!S2`4N>2ej zW5JSR5A)8CG87M}r^ojIMu*rX z;%tbELXijJpG*4wPd)+Q^VwK9;5CTL`u>K)%;z{QJkFBg z`2jyYy7}~NkcL%qL`_Q5hdAx{ku))u&ztJyVS8WIoe968EaeDqf8y-m2?>LHxjG&L zr(_h;l^=)NiZ<-%-;8fEn|vZ05+t>Ap^tU0^#%Knb+|rR22g_eEfSy>$)u*;$*`!* znEAEnjWyxjKqN0|6Ht`atq}Thl6X|aNM6o~2HQ@~Jb|1l$};YVXZGdF{DI9$h3s7! z@CU-sbt`J+qvDl3=6XiOopo9d(KuKP1?`?`+Aq$edRrd*jePVI+K`(W^TeP;kr1FN zYTg7VCRU-S^k1Z@$<8xl<_;jXx}sOfQNyc@>^mB|y18Yj{d z(u9%KQ(g9hdZgQFzn*1M9Fr)6?0(A*mxy+e+4tGt}s zcYT|%N{MqNjS#}K$-|~A=XarhSFOd&xd8g)oSz3K90Ni)x4g!IYzNQ=6Ti}_IxE_< zD2*t3H8%NWRLhC>%U9t;N|9AXDhd-fA^HqcL(menL_Je>%t^AGBzrtGSsN(iYR*Xz zO>6ZsE)Ga>XG3Ee;b~2@U?od<32||#u}6mzY+$#Yby0FXG@B(bYLS}kVfrc(G;5cn zIo--0c1hNT_WrW5g8jE)QZiS7i+i%V_eX39WRVCJZ^6DYJ;^TwaW6%{Ku8k~8Z0V2 z=7ydm2IgY9K^N9xmgxK@*sQQC4@9Mrj?>Rv&0e~%`7~cL70plrfeJTM)Pg@;%>Db;c?nSS{fqFO&f7Bmo7PR= zJJuqAA6mLw%=&7Vn4o9Q(0bH=J6uWl8|mCTnphRZZa9BAiT#BWU|8FR9*@&kkZ*jy zQ82FV4-bq9t1f4lf%T|GC)R*`*gCajOMagB0!t@r3Hg4WIqk_wh+z!%C@n-!sfZhD z@~JYQJ7Se8;HpECrG#7(&3+=EJihVIy0q^;O$!?0PPke1zJA{RM<%U?AN6*Fg7Xff zohL#sFlA(@W&jy@y~eb*30`qB0K;d*=x4w41SrJ=%cH{ds2WLsPD#KmFVhzxp{KPEsCk4?F+K4$~(9KYiLr>agj+$J}FB z`-mi#=>Rq_q0IfURoBg!}3kQLBxwuQJc zi`r#a(_4?BU*m(A%@^oEE06ccuvo!%or0Lrp=h4ba$a%68@X`X|BDy-$CenbkDcRd zlTEa!4a1rpcR2)~_ zz$@e@pv}gcz8AF}M8@E9@!P-?*u1=bMiK@ttq-;BJeQ24Tewhvp5|z?!j8DAH5L(- z-$%dJ{6)`u&=lAl48e$>|DU62%m5xiLG{*ukKWKtHm~sTE%tRic-ZOJevEdbGN9^~Wt7(0&^De20rk`~!N2nbuax|i zW$n!S$$qRQw@mNd3oM3=TCS)it1%|rn>+cgxM7TxFmuwc8ND{)1fF?OUX~p9pqilm z|F4vK_dpxQr0~Y8+`uyeO5)1VbH#)Y#S$Lrq$Ma#B#KnsGIHIr#1}}zR_T}NzwcHn z*r6Bow!$?8W~jc31co69 zG$3jS;8Z4Sf)*+TgJ}4c&}c*9WXHf}bqK=`QM2k(U^A_tTMI2ms%%&2uK-+PldSIpnmvl{@hxf59&j^kI$cw3uOH1Ci>P)#kvnQG1B~Klq{WbE zjvH-ghhW$OGl(MXzzYm&wTyYF-ymAu!D@w_7&n@x{*H@9o7EjfftdL?*K*j#Yw zi>HyBA@i#~=)vE@&=1D1Z;)pE50n?K^NQM@hjN~q)3MQt8ts2RBD{gDTRQm0c(%TZ z31nrk;p7+!eL@KiK>I)@uyHb5_azh990b-GC2lVgBm$cxO841EzdICGUPWvb5b> zY9!IXYDS_5$`!Dca|hPWM2Jw$WXvN8JPlApGP|_Wu`Cw(ees)zCKG4FsFEy($lni% zTJamRJ-EnFAeomDRKE9mm53?KLrF&54$Ne~jHH|)p(&AXc|<8y zu5S#q{dlt)WVV4oXUb8HBn-zMxYVifR`B@dAG@~>$e>{AhKWhR2;Dl6`^wT_!UvaR za8}kx?gyQ*sM}Rb(tq(eRx!0oV=H$h@o}k0#CDcF5k>2^!&pzO@=%R0?D&XK(Q)mo ztHvVyy{YZm7x-5PDx!m@ngDt20^?NMaWI9h_^C>n#Fa5B=NG9R)%03anKKRbPLSod z|IzdoP;oR(+b{%ocXtS`f#49_-GT>qcL?t89^BnMID|z4!F6$2+*#z?`+5KWoa

=76e(A#Esy|FfOK&H6xD({Tl7JP-wm~Xtxxzwo2LWux))!srum>oxE0#>pKo_52S&F(Tawx7=EBYBN?B zMpDrL^};B5AKcJzep`?Wkiu5yC&CV8Qnz8j-PHU^E&0QbBn<2 zSoE~eNvM#OJH@=TeZ)z)pY1x>JuM9Vno$Tpk0o?Aa7N9TJwEKI3U*_-Seurg`%nHI zzLtFU=-%Y@4;*ToVqsRIWkD0bos=j#;GDamwI$w{GNz^lLj@SfLDulSt1yFLiYW}Q z`Bi$qN10R3+_GuxP8K|QQaQpFKSbzOcdi@0T$Ge*f-U~A)qZ{R6yiGI()YY6WMI}I z$2@}Wgp$P5wKZ1{(qfW6(+NH%$DMU!&K4b1#*YV*>lk|wK?T2EeMFFmvABcn7Fze1 ze<$|1M1MgD%)#IJl#{CR--a|N>VqmuyNf@4WcaVFr9v=2^di20PKKXr9V|eOn=)LA zH)1)b1Aa}~-2KDgccaYH4Zo^Q)9d(on!pHpC{kMeE(?DCXj1ISF!_gRwDOGTMtw74 zZZtr5Z4y6MCcs*Y)hcWfI!E9ReiczCfr?g6sPvU5;OYRnWbPkzfzrx+UpeWBBbQ8j zn4QBBx3&1maTQOf5NkTZ0;P~{WSCX)OEK;to8Dz5NB^e!@s zZ<~8!<@DroSdU<7Wq=d>lour#Hyq_Xz z+VNPXFU*rZqz|FgsXLA#iArluKIIJ!@x!4q$z>{ML#27wQct^2uNz-{-bnt%Mt==j zH*|=j#|JNnbW{k*I#Z_zuaa6)qfDGY;b5av z$ZLt7wB@r!K)O8a2?6CwCdo6M+@)P=Hwp(h?#E_fzYdFd6$>PHsDWe zcbq`~QT}OZv2RVznD<`MyF{^RiGJK~^vS|?uWU7WQpszZYmceYIwPlBk z?|YKpd4ir1X3hikf)Q$FZW^?&$XvNYKUlnTl@>BD7sSrG72xc%9;f3hZHpCvkQtQg zTPbZDGs7IwU%vvFImt;`qCC^Jx3o&e59FUoWX#29+kFC)`@(@B9Z zCYQI5#eYb$vYfm0_*xR2ZpDS+4agzB)i>F+<&t7x%0A~gq&GR|$~G$b)n4^i6!vr( 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�X2DfkFL(|JVb4<)k`+oOz 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

#7oI z7g^*uR4je9Y46=kS^HFPpZnTbhnVb8m-`7x7|m54=it%hk)}xe|VbI zNTzEtgX#^+%p`0w69CxcyL5cet48-Kl$hL z=OJVnQm*lRUU|MLq7lc^TcP5cmDnK4C_Ix z7BfqL!lCCJcx^%X96vrRG2sx)ne51k9FORk!Bk{x_sdD1g4Ym=!t~XlKbGE+zUjsF zKa4E3CbM~*67~x`!8L6Rw$f$GVG!RQk{A?^}aIqhNeoFX_`oG>x*}>0a|6uPVF|XZrTO;)pZl z^OEM9Q+G$wr?(W?hjAnveRKl&`vo_Y@tKxjy2^#t7JQa_k@O}1hMTFMMd_(g0#Q8v z!e2q}^WEw~)mM7n`00>l2uqs2lJTCRLVi+;j3$i>uQlYaZ!>Veu5`k!X8W!c`XN_Y z*}j4jk2&gqODk8JIjzu;|0AG=gH{r|)V}?P`agoIJ9$8^vUQnu#&lV!Aupkuf^e7U zzT;7dZ>5n{rnFEeQ`uui8$hv`e4m0`ms0yWpPoZCmx&YcvRhe}sUU~+=lE29{3J&N z(-+97#rrtT5>F^XPG=Ai;F=;%Y9NqKpi%4Pysqpfv;WXKQpa6oz5YH^z)g+tck<*i zrObyr%zjX$?cx=;$J$Hzla(86ThthA-iYhAr>xhqC*8@kU>QF4tyML- z;`1NNh#jQ2$5qTUF?c7VUfwp;_vuG0H+4~Pvqywr8f1tLj@3G*I>1uV5m(rYi=Av- zEcj6m<@sIZ1Ued-WBJM1eXZ$IPC=rGwN;|NgsOwETf@%gMU@MMlg{LISi?lk+7RP6 znO403$+p`TTPy7fMZ3AlnSAQGo`wztX4&4&mKK21o$;TyQlQXVmM)=qlU(!9>hj_< z1}6p*E^^SsxxIYnx6hY}QP2FxWBfmWxVxxc11h4qGwfw znxeM$C(emE+NabJyWLSZ*E-*PW;iY68HfrAF_ZCqJIVJC;yXcyZPuOsT-PLpigg{e zmJoRQ^75YGn)j`$r+R~GVfXyW9|%n=C4^DZ5?M!hn6tHW ziq;G{q=8G8kG6<%SUg9uRc(KEhS^>LGEgkt&=nWwK81yU^T=5*?&mYAY!*kp;?n(D zS6I^DOaCL;zp1;CwpPV3JH_a6hqG5LNMW?N$8GM!y+yKgrJ#i&l(Ct=q%hQxboxp( z{5DY)Ydq}fbVdkVN#$q~>2?(7pHoa#_}YYO5>WY0WKt5!_-;_QxbSam%UZ~8LA7kP z8tK#Y*ujg#no-4a<>(HL*VoXuwkoe|2Y*7x@un`Eq1WVhyr~>M2IC^cIbHb$?>nWY zIsa690{@fx_JjU8_Ls$$86ta%bh3wtn9HO%$&c2N+rs`x*Z|H`n}K5T{A^{DwQ}jo zxaYT0t7d%*iT*yf=^RYM62h-1y!76it)3KsMgdBw01p(GnL1T~o@RzwefYp234QRQq^b)A}xGM1u$dLFY*!l=t$=G9(u zN!r%28Xp_l{W+KQN%0QB)zM5Mz~utaRD_ypg!1rAQFv%N-X`&gxU(}rf`mV~*x`Jz ze_Et_$CFL$8r-JeA)r>+yi4pYqyMW+U@fLQJ;SMa`0CPW?1bJ`V|esF*0N%;HN6MT ze5PNu{!%aXzcv?V%ydkA2*3mzXWy?_%#a6mf0*%3^5iY-_JHM9Ip*q%ZI#8$bF90V z+=W&i3DS|KhyaGre0PP3T7xwPn1g% zwGA*=7uXfX&cDDF`)Z$8^R#6_FtH`Pfj9h{KbNVRGOohkhbSqSQuZXvm1Q!i{97S= zSM6BVyta&20{*t!q0Qy-!EZ%%9fb(mHa@9|9GNY@8_%VhFl)uX92tyFY0UM%yzYK| zsLmijM8HZ%yf0Mj{E0z z-a07-&yV-_!;V4^zUMJJFHUW;e6V#QpW)_8xTNx&F)Z+tNahJQAVwq-;QP4Etw+TY zcUOL!7s_FEo>GiAm^Vs&w;WwdR~^jH&dms(l^|@yZz=ztp-inJNLbG#_U=+&B=&8U zd9ibwzR>h3?;E(Xc(o1J+Fu>@wmNTmmR_dL&A%||J`pcf<3icC{e>k+ zYQgsQl9V-_eCX@OpJx|F@3|zPHWhCr4^q-Zi#Qs?RgAdPLcCsbDqi*RuK0-KDTxd7 zD!5HbTdCD4CW=EB_DVPNTCdvLaSyk7D$g0mC=1cXO~3kcI~0`#JQNR`&6}R5j}}`L zNJ}y?`lbIEF-VodM)d!wG6CNuek5w!uPRgpe=mN0xJ)-mIPmKJ{bM8Vn52-92ZL-t z9v`Vs+-!SBIEj&QD;arkuI38xD5!GQYPWA!WXg{FqXw9=IJbQTf8vtbN@cF@$-j?2yR)CS~vM_ zzzqlx3RvF%E|YuTVCN7vMndo1JPuyL22NuGH?YyO*qyEV{;SyNYC=>YA*z+o%cUMC zfFVjMi*5<$BdO=5ZtLKcCwxswR!z|~VsOrrsqMnV{ zS@Sr$hY&?E*BwO`Tj#9?WI@UdEmhY?7tZ~LLk*uD9VDrDf`3Rs&s3K4MPHwU9bNs= zndrdsYzi-5=WF=}FsHKwxF{QnMC+40(^PBUReNtpsjaEVq-VfahnuckzRZ#0nR-`c zjWwBwSNQ_=f=`{jj_BsV(M}yTYEuxS$$jETTc;?}&KZGh zUMf`?Er)OJ?m#_>TL)L3Hyb=_G~33IN1API2)9UIFUZC%dZ!N7(@ohcv98R$jW9M{bEOk`bwSBNK`4CMdkf*sa@Yn{gp>c_JKFm&&tt~6Qefts>FJQJ==Gj` z*#aY`{750ZSnuLEyybDCx(Rz9H=E6TJ+a|}N8+7W| zI|D*t)81onBk%T7uqxyxQg-%jC^&rVL|Wm7Vc|Gw_A)3gQKwq9AS)&RaHOOQm%bn9 z;*OxEiEJc%#K%+ullk|#xx2ok14iY$rp3$CJv}Py&XmM+7^)&KrRvsE03GO0`OH|X|O{c(i<<`L42&; z4ZFx$<8?v+qxQoEF94i9<+w8qKR;&K4FaGGBtCLN&P#mZZy=hr{SVZU(pG;XMtz(h z$G8w#cA?ENsz^So*L6oSF<|YBMgU(0>XIKx@^wQEgj37NDTFlc`B^j$ccw{F2H2=v z^4JAaCYTEKky@3a5?~X{o9-YqD6^=^rK?56UkpO)>L)b;7f?c*fyOeBHg*Vi_my6N zDb%W15UKCJLIOHxdWRl{TYVXmY(Q{-xwS>e4B-eMrH2-%wiWi^JfN|(a6hWXf6B5D z(*-0xKhonXbOaD&*su9NkOo~%jUt=wr3autE!Rr}cI0jbM&PMVi}oHQ@Q2!MZ|XCB zf`-Y2>e-&m|9oyN*Nb7^q>n;Ws82nzhXJmA+74aj3s+Q)Mb9bukq+iS%+}1^5}iH; z$4&NK2CX~8a7E$s<%@p?ND2^fdElNHpjZwe4KVGvWU%dOp}yyW#LgbT4FTY<_r5p~ zm-K=l!SEIuQvf<`bjbrioJO~8AN+a_gUpNwy032v9*JC_-$A0;iXi}S%C3!2xY*JI z{g|6HG9E^}@N}5mVWcyyU_(eM=aN%Es`&V$17d8k5wmzu=>i2nM;)%{f%wX9{MjHl zvpvGuFuwUOxx?_IT1KdIuodQVxUG&>+ z>$+PR5IS)b8V%58K?;DNl^-8dU_x%;GGp+l08~gi?5`^lJOt;%1xCZpU&@~IBj3@O z0-X`|L$c1nqRCf$RFTx5`(M{Nb_iLA?Qy+qF|Kin?x6=N+jC0%Lt!irWs%=8V7Vl zSeoAkSWG;*sk&es^9e+q{Ra{ehU|=@*|zrSLUe( za@IwnU;>M%S^zk2*9^d@aV4A&yAf`@q#lSmrW8W*4nbWI?@qeE!I;g(C}2yJIfSt+@HY(zoxZ%` z4D#j(+5QQ)UOev<2**AEC&K>Xfm2~iZD-Oy;f2F!2LQSVfux7{yGmnFIBD1Zh;&$e z9EuwN&iHqLA>C>u&_dx{4Guu(VEk!FD)n~i{RIJt+X4=B38tUU@uq5=>D>_ue=&X} z4gr=0iY$K^$(ifZv=!H;EGLDi8usBp#7K)Hs8QrM=W?L>uoD;nob!fZ1kQ7^;|l;5 z?u*92Y!(nxj)=Wss1~SKji?(?taut-3}ba=n05$O#XOH-+0X%8K_o{WC8oxo(Qsmj zJeiZ7O27_#`KTYL{vjp{fc|o9357Q=rgr+@8HSxZAd1zzB&lTbFVP+S{URRQF?GTA8DV@)A7pviPE3MRQ2k_w}B zrCVN~#S=nef4$=Evud01Y%6Vzh8^jJSy0JDAwrU2if%}BI_xCk%ohY!x$4yYOwOos zhqL}`kD8(CPB0NxtcSvopgEUf{K!PW_hD`Nh>^yLi7cl1NDb_h%NobqV$rm~1? z97xvmMJ>QaEqula)4cTNaZ|L45-OB zwBv+epfP3S567BAe}MtZBH#UltI&Ac2!!K~|Fr?2<7a4P`NIX+$L&7`XiLm<0q@y7r(RC^(#a1=1~v>@I-S z$D^94&)6jDsZks^4}pEw<}S-Z;R!8|GjK@T%q9fh6bIcAM82UGVQ@fX2%mQd^wEzW zVS#cMdYUnqX;_>XRpj#va50Rah7r?`@{Ys20cg%b7t{zmF&?_t*Z*aV)8c}=7ThDy zSG3Gd452qV$AFkh0nYqL>>+=uBGpIZpYSy{bT>d&;p$#thI5Y3A((OZiUow0+bhk6 z>82H6tcid8uOA2lqBc>>^4R(T4 za!TD8DbW)TyHG;gfq<%aKq&m>954rVa!v|rVwSKG=#w6Yse-&&BR2~h5ZZ01AQyz9 zk_#1t*ig0#qoy$at`J5!-<3B7KXpYq@>_1XOxp%aH)y^C5Pwa>r$#+%;Pj`qR>ugY zfp!#vsUflzH>FW9udf^A02?{K;7?cTe!*X1=V^52xUpXIKtd$*Bsk^%!W&Sm6^_b> z5zqHLl0r0HALIYNs-;Y+IN7e#rSw2a#?9b@R%XR>r{F=gHqJufgyTogKs#D{bx9ZH z+mq-CQ1K5!*-k;Ecsp7LRPPUQHfic%1kO}#%dRdy$Uqn?W~6??!Rd4Z_L$cX14?X9 zwO{w|>{1?D^M-B$&SK7}!jCjN$r%UiXy0Hik2{w;34eByqYOA#3+MaoegJ$j-Wq=Z zE%gn8=>s&P4r90Q>*VUXOL))<(3p_subpB3F3GcKfF z;Wf8W&D;0JUumB8zpt$+VGFd2=$G?wd|^2GnSho8OHT|xMw8<0cY?RgY&nZrMtu0o z7C-7HPDbQ`Hey zdUtk7KVlCgx$(6ThUa%D81}G;l806~!-n8dPB0|%T0U}C)iUyEbrBr#={iRM6|#LN zdN2k^N4bKo`u=kkM%`LD@Dd}V)!w0VFp<(uih<8i^`0kUCKjhr_oQWu-~!jnj{|bD zeRp-H*Y{cA^(rJ}p%N$o3AqbYx&8+hlg6iFKX+!mM{MaH+zJ(Vbgf~KSsVOuZ{894 z$Z-{qJLP&>RL4AVuj%YN{1o}ZvdmZk5^c%ZWB&@E1nbPk&Uh7)Vi(8_2??>9R&$@` zg1YMNd$%2?=<2Gzuo5n&qJeRbM>0@`YhoRyJ8t@c6 zCg+?`tk3AsBY_$K7PyJ&S6wit$pJfB&Y|iK_~!wL?5tz=AhhScU&80~B0D(;~ zR1{A9xs@=o>SIl-t?h#bNd$v<$Y8AjWSf{K2k6sR+S?TJhWnC4&;1|6D$(PE)ZEDR zrS$f5o$~PqgZXoFGO~Y>yB?Qk#%4p?(D3PQoV-3pTVESQpoXhdXkV#j{REMiXDn&- zPlm`G!A5sHZe_5b_B(ccXiLJ6eI=Ibm>{p9TG3N89k&1GUaSHvHffi?e8*lM1niSyV@tt2XY{s$uW)dd~D|dMg(paIjP%dDS4+ z6Hb=tIiJTFNio9Xz`}g;O>VU9>8iZ06*sn6QV!K=u)ueq9H~k4pA&X=<18lzy~Cqg zulIfY?~kZOyF7#ITts(S+L_;}uXK*eiF_`wT`~ za@q~6#8jh=psvpagV_${w=@R@b+y}Fd@vdkP8TW^ZiaQ%`*=$=p6txIfBwg1-tgyw z1liV*W*2!0Fg-%EHv&i&{6z|!(^E|fEa}f0+V8qBEG8QzbFCTP4bz=dMBw0hohE0Z z1eUC^$W2*Sjd)R}xEb2KKD|?$^PrsEtI|vzB_ooa#V-qvlHKese3&cy(H3~__v_!e z-^6=B)ZeMi#z7Z{P|p|C_}GmO_V)6V&VK|+8Hy4e+mk#R#iFNQdLE_t%Tkvz64-r@ z1Wt8Q>x8-|--)d=X2BQ-8G0;0sq*4xAmC@81OOUfcjxocpKj<9@|6nmG<{BR_rIS? z)V}s?iYoT}yBX>4lgNImNhVEYk#s)4{>PJ+9y~_QV!+HA@A{uuwXm=<8Hdr9r<94^C|S|BFG1dW5dht<;(Pe%6&^P26^<-N`=$TcV|>0#7KyZZ zyWkbBl~np?^foPg_ezm-OL$L^)|aR~(tWif*9TQ_ov0s7xgoF#Jlo z6C#p*t{lrKVR*JxUv%9c;4oImL|E;2}6JBp2$zCJ7m8>X2 zAqd0OL6W_4f(zjq2j?Rb zMzNI2y(?kwxeagmDxGj5>rb9Cj67|Y%?7J=x?8!{obZX&gVksxz_w48BS~C&{TsQd zp7fm1Qzj1!7duvJ(Y|fzY3rb& zZ|-WCQVlXaED!TJ-F)36{ksU`tV0WJMZ1HB2QFueC?uyNzH<~lm{0Q-JB#pb>6-cd z<9b+l3>=zzasBB%K|@r};E}xO0U(S3de3Zteojw?*)aA3m=ojTRJrE2bS>-YwYDAH zlH9$&%60ga7nFi?0!jgQZ}dBiZJmWAZd##E20X?LZokuO2Ih~xELuNn{irGXF!add zgv|H%q5MfZF81=Oko}U^Kh=D9pwxbBzP8b;_G|{Yg)nt7Hw`NHSHc`~=#P3$C2#`Q zm<1)FII1SU0<6M0=keS9E4!p^!CmN-r}i;E;+gSOTV8cbRZM0dM3QUYPbH*P1q)hz z-#A=q;8{Om>BwsnX>XDJzAmnaS8rL54!8nvKHQWCf+93O5ykOc8pg zr<$DyWoDa8AA(f0aDM;W|LOgq^qsAMs2$CLu(rIp=Qxt{pHV=o2}x^5m2?UhMP{b< zE2p^3HLqtGaXr5|7Mwdq7L|sneEVBi$pq3#rrToN?s2|(@9YuaOB~^=U$fbIpF2XA?RHq572&=hT;SGH zKs#Y)QpcmBY;L7wHZ_y0lEiwrIQ4Eq`%{N?$Z;cPY<+~#xOBpN(1`0jBR)@~jpO_E zM2hdv@@fSZFlub;6uB1(RAsR2mhYq54WjP?GcG6=lsP-}U7H1}HuPF)oD4-Jvh1qj z8t&uR9T!q+or!eBXy^p?Hr%faOlU+h9NXoc_DwqdD%Q;ORTgDjq^8QW> zbpoBRI@>HxRIELdz*^wtbn3-o^w!$o0{i)F@aAS;3(;?WB#=Soc9{8TZ}3cfoQ%!B zJV!UR_0P|xbr>y{Geih}xfg!A^V3KD2yIQvO^q!B&+}!kRTy%hifp!PA1~W~u|uI$ zf1^T+{7BnZ4Hp3!=e^gs2umR2?CTla?+ZKYA0RSrIs@D|+YfVgE^o z)u$PqP)mKvw+#8n=+{8XJere8u1OAH3gKDj;L-Xo%JpB%oDeRYKa1DRzcV~vjV7o1 zC3HrJyY(-qh}jHjeM+l*)#AX?kW<3`(lSza&`jh4(h5%Ai*RIC$5bAQp;{Se0 zlw6*QzKSe|^`xL0Xc|wMyykqi4hJ7F-c5ADg<|nOHLw*n_B-xZ4{tIN5jVY)VQDL? zL?JT|`hbiP;?u6GV~?=e{sph6>%+ z0d3mSA=NaEx94Dy%`%5|>cJb7_D2{`WW^OvrZ9VOcT)$G~H;seXGKmebR4QzF;#6R>Ul>ebj*9xFeuRkzr-$ z^Pb+ve&0?LW?aZyVRJdhmUVM;4+q$^7O#l~B}n5_ygZavmQZz|Q;F+93)avuu+z0r z9Ew==CsZ|~Z)_ppZRh9`Gr|X92@^6H{{-elE%L0*0#>eU%JX zIvT4Pu5`t%;yBfN1H<=Fy|*x2{oT#*5Yhh~!_SDKYaZ~W)Q_(*{4=WeeTJ*&*3TKP z_N}iOu5`Tp#PEIen+LVdDLh$?ABN8$J_j)TC89fu;fE=HCc_^h`q>P>kocL+@Y{(0 zQii*ze`^`upZHnM@S7-pEyLCNcniao4X%3`{vE|1WBAp?&+`l)M*RGN;h#{w`x&lu zy?@T|$4L(VWcV|LA7^+A;fYQwu5{q_WccfZ4`KKb;&Uv+f291G3|~Ow#K-W*DPF|z zYNE4%;X|q3Du&M?{6U6yrt!0t;fci0vkX@{P4_bVNf|XhV)%BY`+(u<9P%y0W7Kbo zTvq%viuY!?vVk##;p!Xui431ecoxHz4(vRJ&nG$0WB4KByPV-!)UL%0SM%yph9{Cd zuVuK4=&xn?aBA<(48ND~4Ge#d=-kclrzrmxhF?o^c!c5i5uZ;o{4S+Sn&B-Jf0^N* zDBUp(_YglHF#I9n=ODwcr~I8`toX;&-V}x_UB9O>d?e8w#PIvod79zx6P?ivFQayi zXLv2;Ka=6={6CH1>ZUK7;U7@`0){_Ka+t$#WjpOcPG9L(WB9AYXBET0qIT6YTt%jkQ~}ETs=P~GW-@b&KX`vcnZUn4&c)m-izXc7=DSm7ht&3 z?LC^|>Nm0DdAkTdli~lS@ivX&iR!tA;mRgk9>b5QeURZRNe<_6{)wLj48Mu`shr^l zD1Q~h=Mi4V@C%8bWegue@hcdvZ0@aO_&e0zYZD;%AY3dNcfD;&TYY&mg&_F+834pUQA$DH}5SN!c~xU&8EiN+5MS@oXH;kM>~jK;Il<;tJyPhiOp! zhQCDo&1Jaaf1$x|G0^tBvc&fSplrF|kSR&7Brwbs1HiciR3t-|TYxz^v1yD=%4`Us}^H$l^ zUopvA&#CGHP`ZvXc zehVmms=5H?(#JIF9;u5>c{^PIK9BUvPB4D$bO9V7{!gR}U=;nb-}?K1dtCtOW5$jd zlYVNt04DZ`tgad4E^{o!l4|_GefAm(Hy7>PFh4&fq zo&dss6#w6%@Y~}5I~0Cb{C|(a`^kTweE2rz&lLVZ{QnDuKNSBzqVNIoKNkN#q41}M zv^5Li&&mI*`2Pik;TPA3DEv1=erp5aFU9}AQ}`?L|6xe`v=D}O2mhq-H{$=lDEzG< z-`hg?JMxc;|KC&i2SeUBK=>H>@V?<^3gbs>4jG2Q?xe7b{1}J4N5%68`Ed^UJ7Wm9 zCm-}kCQuljyE{<0qi~WaoGhG96ozjUx=^?)`Q6CxE}R||P9Y!eWO`A!w{ZGU7~bKY zM&W+K@ld$GL%t7z@Ic`VqA+}8G=#!Kg)@x8!yWQD4ZF z3eO}TY}kSA%lcSX|h+_g!=i#H|>pT9L}c(5gD_~Ly@!y67H4PSm_t*INs z;|ni8=xg#G^sQlzMFqk<^68IZ<6=u z@&PIy-c6boq)LY=f+eXzBNhR(=2}tn7GJnwBT&v=yV|>f>C&)jd4MxQD=iPtL+*&e z2vIIlDkB+6Hs!W#cVg1(zNQW`(;LV4S!pLmqrJ!bWISdm-l*%Xh@z>Z$-A*>MeWoP30eguc_c@3?)-a%rB>BGILcwe+pvD^EE1JjzkYjxR%y?a+I zf5HfjvkseH_QM9W2EBKD-=P()#@dKzh5l!|sM%q5(NO53v!RRTv_*75TZvh1B@Pi4 zZHM-rfG0STAWx2l^b_@AQ}J4{qHNLTo~)+biL1H6Fq<9+P49Pj@_*K}xD(b1J@RbZ zS)we@7`HCZOh3=4!^3=yKR80}$gnhr=YBDANyU)=r{l*p%};*cRbS36fK1PAdla|M zt>~@a@~BmB(?QVN^r`@14R5ujtU3UtnpYWHHBCy*t1=+kgtRPckxU4$ItU3((lfbT zwJ$2VA8S}IJ((v$a%D@>%9WDzzDJodr&ULI_4;h2)Kwm2b=6TB8wRmGt40gYg+V(U>fbcVeQ5Nrg z<9pB-{vqu2HSUTLt%D}Xtj)4@Si+>UTMa{VLz6;^GIj-*STssf6Al{OvSdq|pW3${ zYH7w=8ozWG(iuP=0K`!MwaZx*X*IqiW&)NEuUd;tlDyj92ZQ}u4EJFJrdChNh-WX(D3^@U$#oqM=P6wD;u%|J9 z)SgbX>1ik*UbXRB>}e!+qMpV~vZo)zo?ctZdwQ*Gr>FG4+tX;RIQmI@l}}db(?zQt zGuF#=estWk>P%CnXPPptl`=gbXOGWTrgpQZ7G>IkT_TC0xDLpPvGrQ3xSH12o>=V7 z>#^8>U#2J2J?DpaC!VUx#g!q?;HolDU9hCIB3LHhM^#pPf@4Z*0~ICJWmQ4^O%DEg zaoF&9qbyijQ>GNEl{ZvXc@{R5mj~`K61_#x9|PhO3uFf-3%5?fj+`Yu!< zsANy~1eaCThw9@`mMaX#YW1o?hR|ACsp=4-?vZn~&Qo4fXPp^S zf%B951N{%ExUr(HreRTqr>>+L$Bs%bSyC0MU;4kSsv|7NBm4H}DP-mlPhNM=ehV=RH1O53Pf3P|fg&d_8SED3Q?PPV7 zY9R%Fs2!C*eTKKL&XU?zeR@W-KG`0vIcl7+YNAbbEnk%SqLeUeU4qIGCQlCJ!msbE zs%lCDmDTXGM0wvAUVhXUZa5+~iX-#I#&G|uwo%RvZO11^ib#$jv#gf9M)v3+6_G!Kw;!izLpBqu}bVRN3etG*qC563{l{1@Ax zVp{_o2au}IEq!*I)ryr_+$q(g$NBl{$_f9~IuQ4w{6t`XdKn`yb9e#gnC1X&enm1d^jjvK#y~BW)DEi<#VrBD4bj{^$(iB8^O9Yu>Ak#If0`zEe-4t4K z8&W^HezZ2RDc5ecwk4xxA>fl04$gd>_XUF7Ho?eN!N?YNr69bFljzd-*E=acC zA0@4XPf89o>OI!De6P_kkjqz5F#85~4r}9b_sY)V+=&s8tHY`v?3UL8vAoXLc1N|o zL|Gx{TVJh)8xBMp?l3R~5QR@LCG?Eslqte$Gt>UA++h1iX zb6b1!%9e(nHbOk?XtigWXTjnlQTF%9Zp6=!fHtO$a zr}>&(z9zq*=J18j6)RAdSdsiGzHp|f?A(;KG_>0|^D4>vIIFrv8CK?(B}VJj zvh~;r=kBx44Yu;_q1WL1Vbg<0fe)jsgD04}Cy~pC4`WegjV(QWB{(td6E9sSMaeuR z`pieoqqLnLm1m42zMY@M%FXyFZs%=2MXt4MC1$Ve_8xagn>@KRR$jNR0d3tIv|hZT zty1ikVQpl5OpNyQC}(wxbqUqyCLHEJvVD?_lB$*62_ta3JeBVDh2M}cmLO&=XQEJl zxkGCiqMT7CMp?^XH61M$f+I;cwIn^=;#<{X-VmI`ns!R9hohkAJcPAZQ~z0;d{Ntk z(_b4(r*MB_lLINsA!B}zz;pgrR>fa%Hi-;a9zTWAA9W4k&v8di;z9i6Z>>~so!kw? zDJ`t0GT%?44Zn!fljI@Fp46u7c%MW@F3jRv;QSC98E5!7)aqH?Zl0Xlk{j*VWxs9i zlw0O5eB6A)cFSzzav|z@H_E90Z;W2MTH2->;ba@BLW=u^lQ1$Et-{ZI1zmpF$qwFV|sY}EA{@axw4 zP?>SMvE_2Zz}KBUeyZ*96MS)j--bB4d*L@VvmxAl=8e~ZB^?O*)?6olF==#%-whh) z8B!_nuf>1ot?+XrnV7E<;TJ@AnTd&kqFMt;WCQ|BFd$A_@mX4}@GFNC)(StLfuEbe zPf472vRWY#e$xTJ*N}-(YIPX#@S7k>{yd$5$0H0p7-8UED+BO51o(aNrBKIK#sDOO zLg<^#L}cJz#Q+4{W=F)sZ!S=0S$9vo^sD2$OJ?E{vYqsU`|fVkt#(jk{tD=JfuD8B zl=hh76gfLMDaHBab!KurCWF?;GgPvpCzQSlUm12!!1SrsG$S6=mr0ql&$&b-mP5FG z4k8yp=6*6?o>Tq=(`cU$*&M3SGmnYbL{x(IYpkd}9^vkTqNi*1G&)s1j@j?4dK{>9 z!tqDQ?3ekT7U4!D>VS#Ql`KX8_V~06FA>(^y@`o{IGHR-G9Ck^aA~LxeN)N!~CE$ht>?q3g zjImT8vs`9oNsEyhc{D1rlB=*1P_lErN|vKZCa=Wgni#3~MwSMG#wsajwET=y>_(A( zTa1znT8T`7)xfw6$~j)%4}{;5GNW0le!*p?Cc(^wus%Z{4lv-S7;0H@=PDO-ImMpLip9 zHxEGXmQ?g^Ekf_MOVPW1J$iSvpts@A=-v4>dK)|61m31p^zP0^@7@~p?!O+r-#&@n zLvN$^$Uo5A8owUA$3~;~_&Ml3QHI`=SD^RQt>``dIC{UUzZtx3tI>Pre)P8QMsLUG z=slZ!3wY0+j@}FZhqvzli|Xk5-@B}^tQ`w$1ysO>C>Bsa1q;|wP{EFhz4zX0VvQP& z-DvE_8q_5A-V)PekH!`?8hh9OIcMr!*7tq?@AG}%KF`jbdw#z;bEe*zJNMqHM~4HQ z=x}f%9S(g#hr>tcaO652j=rM9vHT10aJ&i~PPCxI$zgOjHJc8n*V5t4Q968goetky zKf}XWe>lYCw;MI+=xwy2qr(_QN2h`I#N;nvVCKZ+FKq0fV}S91j)6Q}5Dynj;aCm0 zg@)4ay&Z9%raymqB zphL9;qExR!hu9Pn*62!yngi%iYcw6=vJoXdA06rxqeI#`&c6J74pdjr*c}W474Sys1GePy7>}3jG0V_Nss9;HRn=1Oe;l)>DB2l zqbVI`cB8}WxpbJjnGT;Gp~Gi?&|%?gIxH%%3=c~p>9D*N9ai?H!xzKpuzETj)@-7~ z+S7Dccb5(ujOBRP7(j=Ac9LaJ+mFP*?^S2OVC2Ooumz@ld$^+u3;N z@c9Znq-Fjb51oqAp>qTsx-_Ii*N$}PHk1zCXVRg^7CQ7iONYL9=+H0wN<0iGLx+J4 z=`g4_9fnM#!_Y-^7`28D<9E|x!gq9-c$*HBU(sPo&Q*B$xDp+v$IxMBvsI$F{leaP z^Y3k7Lm&^<9s$qC4P_&);EVB7sMP)F8>HA?iUDGsyb3$i8PtQKrl~~ocjQlW@S%u* zmi(Rlv*wS*2d_H&XU<>IA(RJ{8Rg&?=>Yn|t1%c=PN%x#XzAdCfq=3|Gc5gyQY69C zfjh*qPiPit;rSVXbourwJGQvR@-eHOUhN&bL{xUK8@V#`i@Db=s+@FD_QDsGEf0bA z9AhS68U^>dOKxT^HCTmaV=1qlMz_rT;~QSPjX%VWlU`qI{%^=Xohf7Ac*OqNHF>99|T zjjve-kIXD8o!77LvapX(^ErcCuOW&$$~FPQ`O%ib9`q2o7yG!S5e)JW_*;A9mjdVm z7hZ7$4Fo|PAjWWo)FWgp2vQN5j7asi4SQN}JVY4lKphs76%I63nvy*mnDWj$gDKlU zbwk!5C63}Fh!V=`rGR?U=!XbM(a7gM4^UIYHtFI-L8 z0D{(l7+YOU*$INdi0m<&Vil%fJSJ0eXOpH}uvN;5xk8^&^g|orfVjnjHG{i0Oi3~F zKeAyRv$B)NwnzwRb)3&8YTbP@=K${KnH?$({H=%3B$}ysJtx#^_=7wMu@i{V<}F?? z85RlRrUEjs9vD~x2BzKk9_jQ(g4cVZpTT_U1@xgJCZnk0ux|^Ky`KQS#>6o&ENd`~ z?WNfJfq7Q4fB8xfnWfo?XuSc1r;>C*sN^K}eMGARaxi}m6X_R~=Dds)3WO>-M4GRv z1h9`LVkTG<0Z$Q%I2@2kv z*}WPVS0D=`e#2c7X0c0V6XQCZ*?AeZFs}C#dEDA~*H2t?+Y-4T1TF%9>u>mZnAuDL z`zm@kh+_q0T)Ql*d}o5+K)PB0+zu(X722K9e*hf<$S4=IH=&O~@F^gRWy}m6L@3sq z9f0hUk<&c}cP+})xG)@U`k^_zg0Hap<2V34Grx6f7nQ7Ikk)S<$O4Mz&pz3i*_2wyTjj_j+W^c?JXdf2#9e&A?%`k3Lz;Oxz!yZjHk@<;nQ`P$`e%B&P*M_#$L1ToUYbgW8L} z;#~qRQ2Bx74}WW6{2&?w=_UM70K)-@Mz92etT;TVgRTf@Q$SkEpbYgQG!oGMfDDyk zW${=XICA27dB&?WR6sv8+v3rZ6#VFQs+64W{^W&8bgauSD#tmmKO%+yq8BEP`7e2e z?iBtjUXP-{K=QMX-5T#fK_u9b%s{~td_)UtCZd&ygmq8 z1KdGsXXrnKHUYtKK*l1Pj3{ewezd+b52VYb>NW~4Meq)Q_L*U(JDlK-Aova7Ym!1O zmT9O#lxF~W78Gzt$&uB}7r-KdU{#k`s@#q#`L!9@@xuS@jOxO&kNmeqct{ z1eon5yZ0`)GqS-zm@G*HcX5^G8QEeWY&4U4t2FZ&*#RJ&E+o=Ce3!+|jO+&BcZH&i zGcp^LgQKv>(F`-Pq5zdBY!0o>$YKGCcL}Y{$Wj67>=Ig=k&OXpk_>I`v`5AL7c;VQ z1@#$OZa?Vi_5@nYGqQIO*Gq`>Jw|NXZPDU0>B0&sr$J}^K^1EMSJNO=;cgm)g)62( zJqoI6&@cXK8g$-YO@prZt7*`6e>DwCspC2gIshp=27l{VRWp{+dPAsDD`cQUA}79P3aBI~xAh^C}P7s6P>;^Wp!wK#e~Xg^l_v1N1fg zPfAMdB7&!n`Y(g@FUfh<^nW!Q)u?|DWLremBL7E)rj7c?7Rxy5zXr_P@VDMnxx+^N zZ;E0^kJtBI?neCu01A?@n^FJ&Xy!RE)8wc>Bv6g|vEn)A6w5g3{}yD&(7;D%;EVsm zMlz|GHtOF6w)*`9F}RHSTY@|l{?-b3h0#a-Wk4`I5XX=TVWa-)Aee_pZA9FR>@gmb zDPe)y$i8)u%gFxd1ecM02;|Ze2=WRI>w}SKBm43I<^&bK@V5>^P#@V>1~e3qia{c% zKC-U{XahhJWms7RP_}{E$o|J*$S*WojqGp6Ya@G1qGNoJ`_cS}-7X{e13)~6agM_{ zO(Xb=AigCaV~WE02>wkFj${NrL#2p~;OBzC58yySF^%9Cf*=}@8i+1OR3E`N2Wfk$ zdbNVt2!0SiW6iKWg5L;&&j4N}DH%ray8t>a;f=dZEtD#wqkWLP5g2OJFAh^O3SZ8^ z8_jmMhFIP>dRc0&NCoKw%tG+Dp2oXt8qD@hE(cJ!fZg7AvpDdEBkh{$Rof79cT6L% z!5zL}m&5yP#}bh1U2$(vwhylNugGPqx!%9gBXCrR-fa6v;{e!l8tu7^D}X<)5{2wt zmf=?cyC?DAk`J-@t9nc46MwYfsg>_AZb(rb=`N4tq0C7J*?;ty6szf3+gtAkV zTwzF>--60o$XOC14D|N)An@l0&;K4ooyFxy(JbV>;t-*Diw|ZOc5K zfVv<~KuyW0gdy}fT%#jMdke(qpkUfb)))`a3<0z9Z9?!=g4c*URC%7(k%{W(I!3iYW6C zqX_`iA!Z&b@2%18oH>%h;d+rAW{+1m@LmF2rY|}OFURI|joU@H|@C^(!%JDawnp4|~eRfw9PX>=B~sG5Xo`faPbg?Rcw^GP2kXtN}*# zwr#tz2XMvra!4$@8?6?&G_NXb2#8_b2uDh2fSHmF(UBx3ClD4i68Ux z$2siPjX`)PheplzvPMl@cw$J5F*O8xaXLAERECH(R$?01Nev=7*-1?U$1eWtq`uJ? zkg{FqWFK|@Ow~a&gc4~#jTvM(UW!!P&tS?}RkDAF1#39+mJ#6hn30AfxQs}~d3^H1 z5h2h2!euj-lJW+w2N>+6f-yjyR5He>lL%uPo=~CM8_7al1}fLX-#P;CQ4Nx}y6lOP zauDF-g2K_}>=73b`~k>KM5imX1)-?yT^a0-I7%7FItP0vq7(usM8bnyIBdBp2JpC0 za|EAJpSJ)6Z2{>PD(t7gj55R!lyLx05frX^2o3lagLI>eeknS%2NvTjAkKck&zd>Z zy)sT`;#>#(jx>=W?D?*DAT3f>gm!atfZa7%h2iM7gPpAc8b$-9E#JP{ry8(5oq~i*d+c0FH{TyXwI!Zr> zFq_JmGK6tX83Em`cH39+F$$40{nwL)Bn_LR{d?1Y@sg)CQ=&3!GgkPXnmC z3!Ix^>_UwR0Da^F7f_*B0<_Kr_EYddfR4MsMHPG%pnC#lJrLsrD^8{ga2cr}INvHg zrHIoLjVu9pg$kywl9f=H;xqs}+00>jDiLQGa{2;3qJqgDrYBl)<^jIEf*YG-6=yf# zhuv}ND9$CoZ@c3(AP(N~FpP>g^D$>%GQkHikUu~{5@rpe6~RU%h-+6AsXeHIvkgh9 zO1A~Po8)LYyD*cind1SUQPEBAug@e)Xbs@o+;L8_g@%sIQAp$fHbg@UIZD~qe(5sW1Rua zl^yH?fba#IxN5u~4lQ zfK?~j|mu$S;>!mbN5qAUWge1})J{qyHmyG`! zke+8umL7k!WE(jmAQK`4yPYbfM^?$H0C+XYNmQI?s!K@*yhDVW%D6|xH3INyrnp#y ztPI&r7-Izx)(8@ZUNh)h5Fd-sQ^p53#pxEw1%U3FV14-1m^kkN&tBQY(S}bsiBlBt z@@CF=Xv_cRBM>G)NuO^geB5VL+&CX-j}>qBu_X zz*_5gAs(T~I>o^IAJaA)ab`&z*}4ukc0|E?MEdNM$O}Ty;KLGOI&TtkJ4$xFj%3`f?gLeSfRU9_XH z6!gL8A`M5V6!gW%=?zD9Dd3#)yMfMKWHUuOn4+xJEEZ=qL4T<5 zoeU2FEJEVXRc!SAPNP0R%_U6gsr}mM+f7DyfQFm2>zp5mGZXM-rWkb2RpM+1{71>5 ziKM%fu^{x$lW`O1&#Ia7LF4>Q97lENuBvCutGn{LYh&MvHYxzCPW6liXiQJWYy+$z zZkS4OTcT$p`dgG5p8$VJbyFcQl8;8(350{yO(j9Y3!A?pT>$*1DRRy!P8_U)#(Tgs z#Q?`cKAd0+mA96R!T=R>fh!P9$%qE1h6`L-!L0yl?*i8#xIe zg#ayg37w$e-2m;AFioLsDN6b809}^K8Qflleh$!E7v-H4oHrJRK(S_+&AsqWsZkN2 z>aikcy%i^3aZ&*9C^^{`r>j*OITG;cl0z|T%6co}Y9OVXiP`1DD7G1FK6VNSzs9;L zZ(k3o=mFrbOo}+CpyK4J0pp(;Jsou zsaWJ8t3m+arE78(I%l2Ajaq;wxZ|V~hi0c;0UzKluCIwhv(xE-FL0;lG;s=`bSvQB zy3=!3aee{(56KCj29i3!V!Na$F97zaWl}?wt3(M#N&$d_YPqrIFO~9YfY+*J&fxnB zZUaz97x=k?M*=iO#;{V=G`8SRoE3m?bZ3QwI3FYD2;gUBVl+K@h%+BKe*yl)U0nGT zCu?oE{?#^dSkF;R#Z?aQsM@Bu7$;QeX$p9|+HT@1uQ)>ipWu!YDW6<1mH@u8wmJJ^ z6#Okf2PMp#6}wCP8;Gw-E9ub|h9@!nIbw09R4}|P!+ilOV#XJUg&*ku0I4oe?djN; zGx!t)XGpbCf-^qy;2e-VH1>4di57#e3OLmhOQ@;wa1DNqk14rZLj7!)>k{f-FyaIn zf{%3=_y~r13H35ye@VQJe9nL`q2d!A21J=9UQkvyvzV7qkx~rcP)XU36nzP`20#rZ zi~(GhP|L7Ypp=^l}m8AmGL!gv_rX|KP z0L_x{HWval0q|XEzrMuy9;Dgpi|EgylVORm zDB$JIoD55haey}v9MckGDo7{F&>vg~{1wBQmlzkp=?baSw8WSW;w$y_O#L^SO-qbV zAmn=)`l7=55@T+d^!YW=6Kq~$tN>We26}is628Qk0)(z6C5&WRVjKm8sgk7Oe2H-> zV7nS*Oy@P1IQbIe8KB;ibbQ>^Z5Vxt@is~`HH0?a(3Bzi5+iX+0A8V?DO2<%M&dL8 zJh`DBzj=wVCtyPa?q-Q`I$#TA_}eNDw#1kYjo;V`_)ftwEioQK_$)xbHWXD|Ut*-t z4*+^9L+eY76gpcYizRm>5n5kjBsc`1@-Fau1=k0ti3`k@7^xJx1Ju_A)|MDQ0%(>C z%$69jS2WfEwAlsDu9P1K=sOpfEiqyjYTN?oZx^_L3hkKy7n=k#?5E&BfJ(W*MHO5V zphf~_J&?Y{NSrQ!_m`aeN)KCNJc~w71AKmhsjJkN7>Tn5@NdiCE+4c0+`kCmL0iZe)Y76QKBq{rA$R}$G0;}h&h4gu-+CVCNMV6!Dg zjK}&An4XCrV4Id03jnKBqN(#esY-}1F;)jc(~Km&CNx#1_5$W8Gy923JX>PKLbc8Z z(nd284b-#hd&NEi%=40ca<>~cTVkY)eGE*GB*CU7My-@4Dq=w(m6k+WV$_IiiIL*3 z1*8^98Iq;PA1&ENe_)Q1>_e)Q*b*ag<^%q@nZnwke1e2LKy#3h^RDKjlGRt2b`3C_60*dFkHW=@7B#z}yGYUaE`TmCoS zx4`L#X^C-eGxHK-0XPqUzqLM^qAxL41Zj1FWL#oQ0;sKkjV2gcTVhOx^Fe@)H8adh zjBLt?Ghw-qxV_njmKe`8b6H}{xY!ZhPA+!Dwv&q;f8tb@FLvO(#BjW7CKo$;k|1+) zx!8fPgBgy3QqULQR5ctSQqYeswT`M%(4Vf{jz&^2f+{6n>^P+Sqs}V-=u65!hN^;T zv12PJ+X;WG1wV_bFLs;)=?#Gxvzp^|9er8Q@jmNq+RE*#f}kxPcy}!bJ$|Xa=`aV4h?DDrA%M!_zCELCY$m> zXlRg|rkoTUK%66{j}fjU}g&;;_XIGO`=s!z71d)|B;D z#5q7(X(m=um5ncU>;l4}mTt9KSHQ2jiz}bvyaGH^TN6iL?4Y;`174!7DK34ngY?7#-k`0UxXLR|C&2r<<7kT= z9|1nAtvUO&#g26VZI-ZUvEwj^zn4~KT zde!i^W^y?Lhn4IRFGt^Dp!75LSjs?)(7NFgVA2uf9BuCdxeEGobP%*}+VL=R`s;!5 zj5(xXp5B#9t@w%N5Of(8#QV;)Zxb&Yr{NqfuSX#p0 zIDqk%1)u5RAB0DnV51mv^oM_zNgUa_4tAdl1-lVBcFAIX_y>*uNg~X|)s!y%(I}7h z{Lv^(AB%``g>lXkCsOA$L`f--G`fpC6~v%(%4Up2uDEQ16Tj<|@I+r_=>g(?@V92g zS4Z_#mPsI;EfC`zYSmX+RtQL}vS4gfZ=9ZWho?z@I|L z#DN0fX`<%i*(m=c;cajPypCxdg#D}cwwJU%R9Dw_;EzLk(&vOLg0k;H^b2Z^#Ml@( z7+tjd9srLJtgXP|=%OO;j?f8o6d+3lzT;>q0>a`Qg-QmDr8)w_+5#{dD|7<7DS&j8 zD7~A^&?)E+24u1c)fM2Dv6h7Ze<3Ma-qKD1y8t;P(dG)Bi|((0+%%!O`W5KD1lX3w zDXa`wj;uo$>qh}VgVNljU<ne`qRRf^j728)}A*V zr|0hvdP61k{2eWWLl8SG?m&lM*a3^s55rijG)wfnO%2(Rp2nw{o_~=!%zrm{}C0Eqd+GS$rCi*aFp)EuO^=CD*;9m5G2Fj+8T45 zmNPurl*i}^;voVux+uH=!>0qbMB*3~BQgEKjI<5J$IPT&m(5J}*12&Juv?NjK;g*@ ze*>6TXMqn>cq@h%1gvytJ-i+Xn?V>cKxk}IqLW55QYRn`lB9RN&7`f2^f3@V6(m+8 z@e?AJY}?TtgCV~Jc(=(SHc;?nR}SL*2>2y)su<^*;ymk&7U=eHQ=T$Y@&XprB|{!_ zQW5_C3lM6Xm9U7)6Mh$}qtO=dG{NC;6v59C9tF?@geM_PLo3f(D)bV7R?5%}Zm2?k z3(!FsnkjEiaCWr#0zg+?;%>(tP(%0?u2y$7hwiFE=j)2!AuxyTr$R>nRMjQ)2xVGx zfLgo26BRrNpb;+c45fS?K#N@9`3l|v(AO^TQi7?Zegf#63%pXnj{tfhVO|4SiDvBv zeNZ>O*g1ZL;UR!Ucl%JaxWPzGfRNnHoN@P6^nC#u+|6v=bF~UK3!qOWOr2@A7}C2Q zq+gkhW1$Ps_3vsaMw2=KQe20f9Lh-3BXZm|^VZo+Z00PExd{;H6s8Y*WH{`1C)wI0Ile5&Z*HV^w$9GcM1KG3VjZsD=wiI z5KJSt7XZC;3B8!Tbc(QV56FZb=1Q`G&D6s{9Nj}CUMv6I3~vHhYl+WR`1cI&2iOpS z^B#^i`JpC13y|e9G&Po9%0eHTB<=>%2{UoFA{JG|Ye0HrCTe|Elp<#C3B$dfCZek1 zjJ-&)D+9BpiOo6biqjhKo@R|iWchK1&A!F~VY(!ZQTcU+;hzJxR^S|pq^PWWKzyd> zhuUK;M!E)szfC0Gtmsat)#zoh2Yt(9!!)&YPI>t(8Y+1Q;#)NGvt(8^vPD%syNN#eIaI{iW7Wjde*)*C>2+DmVY zMz&96KHX#a5-kdy>~+nFegN2@)a?%l0JYe_Dh?2Hc}1!rOdeUJ4?cuI{&3>c_&BgCx+#Elg}?PB8dC*) z2GUvG3yh_zJrV@t1&3v2AU^G8L8h??oE3<^S14Ia%65aZPoj$r92^8TlJM`~T$XT_ zwzVh&EDmh?V!>--U-N=j7C85TzjZ!_(HFdeKw3^985g{20hAzMV+n@V7Q9x%d1pZT znHjX;#cr|4ck1r-(ViY$)mJ?|xDG>zr$l!_cj<>z`IIPq-h@9Tn(;$B*Fn((jQlH% zoK%^f619Q8?EM738FBq7(fuF@1~^Po=J&OjpAtn%U4WZP%E^8f^HZW-K`=nV7=Xh? z30?@$7yaD5X~+UZ$}jWqyHX;{FqdSO{nk%q8Kpz65kBmv)(GiEFo|UDuMqnF54#~1 zv@NzjpKb@G%iXntcH-5Od3W6q(>S_)!h`J@DuW$R!49U&V2AFCU?>xIwDX)J?MU@( ziAYyGvHLvr*gMc->4qmhFFYtJ_Gv|*cXY;{ZuBv1zWwEihfPE5wzC7V$D@!U1nL=Oay$EJ3YxNPuBsy!>mWu zJqJc5TfwD)suk3^V$p7Q?jNLXchU#6?+jG8IB}nn|Kt|uYY0;n6dB#ol3d_3-Qq;J zy$LqFkfYz?94B#P>pIviP82LgPG8se8`0o&iLi$tN?Ek#d|?p(&>b{q`qmL|n7N1N z8O)nt?opUjy4ReWZZ+M4Fqr{021}*Lu+a0&x#P|NY?l#44p#le68Zfz&_7V=$5%x) z{c(VFNB#4peq?ZVT$#bb{!FRH&cXcKd707-QNHp5Zlp^`zmW~W?*D%Uqa4jNSTaM0 zn7%5RrEQ%$TtlNeE;sC%22zk`fmG0Bi0j>b9>*$4ne$)8;d9X@6r`Ktz#5++9nVd1 zSSXHkQyeZi!4%|?3i1zipAMh%a&A<6sMdXx2gg#hy1>=#mFh+ewJ;;lT4jXG0tVHT zETN)WEFH>=j`pHkbj8fTin(7f=o@e25mth~UQ{~XoVV3{EIJPd-Uj+I|*!C~ig(#{VeljZG;qF4IMq&Du06JHl|*M#(EE50e;Q3S_>}3m}@^eVeu-J%@n^ zm{YxwN{p%##uOMr*lEF1XnQKP3D&O2PF`f?@AGe8iv8YFDhNSr`c&D&6VNyVTlia%EB{aQWo;QqmeiEZ9{s$id)L7LKtmwdpe-U@Q8O+@(x_O@9~&? zPT~cEBl^G~3fDV5c6ebWOv5E=NBN8S48!&FUmZo=Vcsy2vC5G6OyR^xjNM4gh3tyB zE~n07g4LXVfpJVV*+tj1G67d@nZ^V?jpQx7>4aq#E4x3}^FQiaEmV#7jHnTkXbRsZ z+l=HA=Rw(8bE4NOwwuvRzA}7VZxJtjQb}K!S$Bz;XsC7cS~qb)3xqbnC$^1v6Q-dR zXf7mTDmqU8)3_9JsBq~K4~b*a#<|Ze$Ck!YJY*7slmQkLW_Z>fJS+N0@d+7{8_iOdkTIYYPhH)VSa1oVELXV^@rI68_v%(6=~9V zGIft_!X&aK6r_!axi9Of3L}-{Vo!<_D;BG+JcEa2HgHIP3=1!0@r8r*n<6IEYE>>a zsq^#*yB%5=?$o52GVDw*dxqpherh_WK{aT0 z<5|ZElMebhD3TSkSx4YnRPz-l-q7%ZsftSqT@rM^lQnt{AqqIfJ8L=1em0bFqSdx5 zjmS}0YcfMHL&swSW8Na+}`ii78pV6Q~b z5~uw;+Rt(k9xal@d!88#Qb3pv3=VElN7@fNFD2M;o!blq2Ro6FCgaZDAwlMHiEBGF<{Mk&N zoC^u-wgBuxCMt%_6xe{|%QNH0pK*fTxI)Fy;nQaUs6-N56xz0`Ss>Xo_1D)#4}2D8}nJSoCygKb{B6+(ED zLRZZ~9lzLkI83toAY%&U<&dy+$u1JDdE#i7hnG6Xly2_jglv!Csyrr5No}Xy1*S zMTu;gZixDAf{)9&lG~6+xVPDE0$VZyVhB%!$o1^riSzR!VLM=*Zs?cdx1zr`e=Y?f z>Zfc$&G8We>)4%O({61*-o2tCWFCI7~jEi;Gv>pbTaQ`V*dUwd+3D zL{aN$~I8>kgZip5g|g_-!zcfp*b;s#_`?of~+2??s= zUIKPHFeeW^xdy%%RD8x@Ea!#)o~jmY)?h$$k{72UGS;F<_fX3$#-BSM*hhMIuM;{! zZz$mlMbrug?Qeq`-S+Tt*#z#`aOLRfVJUcaEXW@1a{Bm#4E|%}`|$>j1N$>mPHh88 z2>z$|F*;qGNYKZ)fw-%fW6a3TpLD6WkkVm|L}GHc2!D()&wb-xH)-RHS9Ocw`!UihR~g!i4_)o5y`o8{+Bu2nvTI{ngb z4sM;@UW^NoR=m5)fG;eU+yb4|=Jn~EA`?RNJK7RA09v-A`(ajwPsZF~Bza`5#(YaX zSHHfO6U!m%l~jXZwF$uy((FTW`>3O$aM^FTKeiR@y;sj3*L31V_lWHG#beQLSut z9qyz=tw=&Ld2kBlU60Sezc`DXy~lbNc?wT@K0)d-V2H`{|UWq&uh zez)St)UcBqx-5;&vWyP@a<5`;-wo&-*uM8-5#iUo%1; z>DAAa;8c3NyASH_bK3Rl0q!4RvDCejpJ!t$Wu}DD#b6u>Pi3^z_%3QUhjYk3*H1zJ zUNcK#m-HN23j5ccQ^@f}si)zAogymP=ZG*7jagliUJ`rq$BcXl@Q?ab#*&d7%--y- z>VQjfWjpJT0`>;QQ9(dU1DRRCq<%s6+(|2I##gh0sGLPMR8(~xIJUc^IC>ehZ6XW(7?>uR7C{&+E0eN0Z~P zE_@C*3>eSL6~)GU(~~vYt=Hr_IZwAg4VY{k^|NS_-0+z4Zp!#TRvBqr`6qm$bh{2p zbAESfYLPY$ADlIP3YKYR{a;Sbt}!3D6@8FNYBo=Gj;mocTL zqdjuRpiAxv|58uzEK9K>woZ2=z4T(LUQRXPd*ll4z*?Np6iqK4`qMtW_xp0?H|sJt zCUHW7VmwD2lvFj%dcqsbsU4$Hca~+o%kTIaTzSo5T0}oe;BW-=+oZN2obpad^r%>| zx>_R%l24tM>^Zmui&W*e!h351-#-p7sz5GzKSsBL)c11j&R>5*kdR@FV#G-~5yS6(vZ zl}Sv=6h)4P3s?z=Y#)qSSD)8_+xG2OH>cRQ%zWPo1*k9LmHRfY%B>#>4AqeR`)ta# z?L7ea@9h4Bv3{Atd9Yn$M&W~i_u}BeM(sIXOcZ z{!JmXi|RR>&7a|}zWKFpwNNC3DR~y#!j(3!sjz?&sWM$k|RFtTBUvwoM7syZ24?w#(Bu*VHq@O z{?w|YePRqs55gqcvIy^!4bHjm)W7Ue@%9Vm2X7qfupA9dFUqG=ul5-JYi)(Z8Cu;aa74Y3e{RA zie2UDYi{k;P|R@zaoXbb$QQQoMMezA0#y5uh(xu0ri|KIYJCD&^^L&P_iBQSVj70x zA#J;fb{1Nk&uP(hiKAv6H>wC&RE}J!rE6;$ncSu33*p;0qFjcPK>m6ecMR>ugnVj79`8)Le@Tx z-u7KF1koVS@B%_;4|PR=QDGH;w4dw_lZLKXeBAj}aj)#9AaVtPnTY;(>ykxzsS$jY zIWXs`!sZ?KCfQR3nGHT}QtQf&&f4kAac*IUS}_m5FqXF6zbFAxy>aiJqtEG7MYU&p zg>TBT_iQI+jZ=pSzDEK39u{GLc}{TuQc(UdBe~DvPYh$8NvAxgEtc=G!bEW`Ff_R} z!a0Uftu>U6y&uDs7o<=JqHLWV7V@j6F6^|$z6<0>w*l$B<|r8!PRg)0r^YK#!gCs7c zPgy992+ARji7pYB3gK;i$IABnL?`xz;=!{YyBO0^;Fru+E4T)QvOwR|-~QnIoB|Tg z`-5I!y3F+6nww`{ycgzsy{o6Jr#&@<{R0ejoqb@!X$dnZVxNDXrIl7Y7)s}O>lDIv zd;YWb3{OX>e9p&Zx;2zy(J_s`1~g_3p{b?NM-Hf%a$R1{t747 zC$Eey!|arFsbWiA9{q|5lsii|w&A67FTe@q?9w6m&Gg>icla5>W z*WO5u5DakQmW~sQ_@7Q{&_PNvRq9-3gzc;Qlh6lST_+3_JO^SJ#$q9k8(US(;6QWs z-~J^NEOA8b_EGNE57uX3Y05CKmyk8d8mdW@QHoQiXwSe@FF3ADTx?s&Rdf>k*O-_c zsjuV&`q!9zs!$!gHnwL@#={U@I~Y)D^JK|pS!Jai2BJJ zqdCq9HvnwFuA<`2s=+EI*0UVdRdEQl|0keQ=Xcc1-X)9-+G)%n%q=XddN@L+Cqq) zhao>sd|pMeG}I{}UP2N)88`KY)!C=QOG36|4PF!W#hLdvW!d@nHx(ZWVJkH=Q@@7v zIk)oX3DydEvSEz_7+EZy1i$y~{m3FyhvnxTY+|LC#1x6WW6E;(E!O06#HRUWec)oL zmjs%-e9EC{#{L+=2W&TZAzo>-`*gh(xx`EAkNQ)!E$MhYH&8(7$R^=#64tQsFMt!q zM8SgsMwj^rIr;^#cOYrcIsb!y|C~%3QzlMwB3`6(@ZYaK(%75(P>u)KBTJCBwk8+- zoaM(RDap{rxSB+x*x0oI$@kG|sJS-xqB6&6I(sc8o{@=t#Jl;ZXSa43A=fBHs zW;VnRct$wOd5Q-pqy zyYq;SX`0b%bP|=>Mpjo}?L((NCdmT!ciNT9tarZfqhslGCizd_=J|i<{LVL3L!U!$ z+cca_n2nR27oCUk!u5XUv3i}gf+z!Z5rY(*q8y`?bYKV3EekS~KhA*>HqyJ0vS=+5 z;DOR!v&dlGEyvp8y+-m2cP1w=nb%?sJeH6s+nHJywHD ziK>AN?cBO$8{2KMn4~PmugT33r58UdI|_v!t)u@1_?Ld>fQU135SMN6J+Lt;I0`C- z+4eXxF4yI+shNmnE5p9lLDYLUD2j^)4#!@hm$xTuGOHpSpRh)c_gebbBm*j6^-#Z7z~94o z&gS&FF1q4wdr7{c)_>RWAb?y&UvcxjR$NhEyefDkFF=?(6w-4rHq7TI5bbYuX0m-W zywrM`BQQD3{KcO1Ry(!D=Y6O$!%=3R`t z3e%j)$JjflJZH;qQrjxpmQyj-rO9fW08(rF%}tvlL#Rq3LXa`3_!-Jz7vR!rf3NWT z>P^}KN7E;(TNFrZtF9lD8_V1eMubq!U$UU5%>k1?PWE9YX8o4DH?vOK=}at>kv(cK zz|Bf2Ev7CjkyTJ-O3nKH8+%p4Iw>o9j&p4y+h+HMulYuEz9mV6JE3HmUj%=574__w zRh9uVBEJq~kdl62c~fL}I|QHRqOgU*JV&)fK*!HN!FX8&rWJBYLG@-J`?>Nqz6Yu#Ya zU#gk2B#F|SJISLc8oi}50op#$V-+V!80SgFu3l>-@`61HwSa)KS=uj;a`c}tAILpi{Uq7T;@a-i_p9)0QTF)P&+Hu9Q^o520J2*xO(g~ZGh zlh);T@)rB?hQxl5Nj6b4Ex2iS;do;$o`fH<817NblW&K6Po-rlyhir=g~XvTY>AMz zZuy#sCHqY&<_|0U;Nc$u)jh>eiz<#Z<;(`(QVXHbr7yI8h_;S*X1od~5xQ4BG_4jM zsg!IDfp!h;7e}xFsqWLM+mYWB*0lDu|#8pGeZ&Sid~^T(sH~Z$dNt*MRrS08i1> zr%!G_KBiZ3J?29SR~_dIP@GqIPtJ*JhR||!zDJ(eg(Zh+sx`w#eD1(*VzgfN3Wc0O5Kx3!ku)i?rck7VH#izStr02Z1+ za=1Ts44AlQCV?dK`!X0h<;?inSRrSe@HV|6hSC$XXo z$VyYq$0nkhJ3^kBre5->oDr`9;5m!b&Wwr9=U|BD$-3Y$Vu_MhGOWdDH%VH1HCb!h(-brH zCWFumZ>F@Q2{)|lv;CD7jkEei@;7U-!B?FY|7Sx+9={|dn22siV6sAH0nMshy_rKW zO|U8O3lSVf{L&~#nZbUgcd@9(25T@mBn4Ii|K<0)^f>TC{`J13h$fzk+;h>yoQ^HjTl(CmS-}(Mh9t-dlvlycp0pgDTCmG{eqHKxuA_~c(h_vQ0 zkjbdP#U~8NWCD;M856;IytaXVwsE}Ra{~|F+$|}x zYd116Ok5xeZh!w9Dnc;-5{hgvzmPd>ac(+nF-ZA&mNR(fLv9FFVT-GjKec5bc}cOE zV)iVP1q7l@v`O0vP$Hf1E8)!nddb*Jy}{yQ7T~h*-|rV$qU&72Z8Zx>C&VS6@7VD; zZ@;zSN?bW{TJn83c_F;_Mk2X=0Ur;7Tb(gnk2 zAl(SZe1tpd!Y`CtUHc`|NX6Yiq9jM-Llqv>gPDHXNW5pmZl7K>rYW@x5G6fbnUYHRXAI&cW318_w0hSrk zcXK9-62%urt3abd4~f8$Op`h`7xe;4qI!$~ND4;qE3T_y;e9qm+yWiskT(q-FjnQGl}Hk(2i2V!N3 zGCWwpR+awwT*;2tkY+MS8{}Rj+MX#Y|60s>6m30JELt&|LmIrW$4BN;P3JFmVpN3J zAjx5=&23c3#SJvkfd@ z5ou-P@;AHXi-4JO+b}SVW_o}&$UCPW4(H>i@;P3rxDB_7?3Rlf=2I8DGr)D8RMB>> zU^g4s^9SByq!mFmn8$@*Q-V==MPL1*VL@geaip-C%Dbj17WIC~B@ccm&Ozq~BMVX8 zU(O<}{K0FmuQs0&^2gc&4g(YaOnn%$2>9sYJ}!Gy>jjFpD#-++c;`?D$E_v864m9W zJ;z(Z5=|rVqkHJ$x%{eNKWZ5U+Wz^^$+vE{sZYTfykINisYsR-QJO>cU`1qMCYQWt zc{~?cj-wRwsWO*wpjsV$w>x!kn#$NmnqhNVB7USk8*>)3$))QPXbetd3OljW;#%odmD z6Wg4EX($Xs*3Py@)tMRMx_yUZfpK7%ngde9K!VF~O}noyu$J zQ7^KNMhq7O1HKh4mzZEdr(>BjH|#INWA?cJ%>60?T@Jvkn42ZnA3VQGv6scy=lGj? zy8@hk=CL2-!4~t6%bb30vH9Y=hjWiY_`>OflU3KZmaiT7n_9a9Tz*2a`9`}qQ;#rQ zeq^ym+Pg1SKK`*J!0Tws*FyZRj6u}7M^SuX?OmM3M=DM~nOGy)-SmY=GW@QXLDcz2 zGcG^ASdx&Dmao#WB*oW7Tz(p{Mhd%Hi;ryh!kW8_ zq(Y|=YW3$&iQs~=6@_8-^O9fXw-Ftt*;%Ojd^_IYGkcl)dVlhZnUd!UDR;FmQ${gQ z$4o;zm0b!PQh4eGgQo2>QGD7Sjxay3KIBH zDXuM2T~blYIPlh@m3Lm)V8JXoMwoq#M+mi&HO^AaD4{#si=Na^NK%~G{N1bA)~op5 zDSQjeP3cvXHKtK8w%9xtGq$k6@w_arudc24$0?|-S6$MfJFBES+ws<+J=@Wz4d*s+ z2{m|iM+`Mc>1CER#!)cVGV*B(NpW#aOQHy@ZtJank2CU^s+Kj@Dz2?4sm;E`EvU`D z)hnybuCC4Ym;0!wE-BEReK>RR60E$mt|PM1eq7CPcG0CmdsdCFc zcerzr`jWWTQXiyBc}bk^tN`<23iILaoCWj2MRL@eM$k1>@QvVoB=|uc!J9r*kSi4A zgNhgm$^q-h5xh?kyk8&`m=Br=-VC82 zu25ee0r*hg9MgSJxKLZK&^ue#HPAPuS4h^FM8Vi-Ggr*m=n#z$?Yx5F>=Y8Iyre~U zR)P62kNI#rU{NS7BW%IJXMg&K;p`CdM|nw!?(7fd!z|_lSOE>;MZjJr^vyN&?Tz7e zBKScI;e{dejVttv&mv;zmmHy+i+(7BZ74{j*fvzLLx3u;h#Kz{xKWvRs#TSqu#|!D z2vVWUt4v2&iit9ZiE=YwQ7t`8Y5}7|8|)Gq{2DxY4Gd1{6_wp4RoMQyNhP-Z^Y9y= zJ5ePA;hFFcTEa?96ioy;8-x#1TpWaOUXYnT?+-2Ben^Ni?+-e{LQIrtOqBb9AsCrq zgIPB!u^7Rv1??!!Dy6xUAYo?m(< zyh6B7o6Cc?(lNs>iBdUBx+@7wlI98~dg;8$y7HnXp{z|g_lVXXj z=LD3f64}OYH%r7L;lJ7+3W0vns5n$H$w9;5LmkLFB z^~oEL!{)mR4*PgBds|(-NR49lYgt^)3)f$ZU0pSdUhD0*l@Y!6E{_YR>}J_n`RBTo zZUE?a`$ffKCve^!TMjzE71;VB)I!zB6A2o&uirKAkCQgpwOfl@>EBSa?YDJ%?awdb zilpE#@Mc9eSUcxU5wUjyP&#gL`xZR7pl=CTe3&jD|5$T>saIYh8kelzWtbU-UOc8N z+w6Az7??UoLtkc-!SsR)9#lME?bH%3r33VOm(N=6bI0R0kzKbIWkBb8bjeo&^>H1P z+TxiZM$sAJ9#Vr8?Rb|C3*msHmx(MA`WGxx%6A2#r) zv>0H}5xz^p5ti@-E!TVz#*bcnE%5!vL(;g#xe_wOFR<*BMXJa%W#!|^e{Obm+dIpg z7Vx4Az5fdursh2x6q>QpqYwD|#M$FBLP2D_mEKTQ@2zLO^B}#Gt{|D^pz)GGRraqw zpyJ3Ra*%26*+^sCX~cn+=nLf4W90%tY00IT&;9-cqCO$98?FjiT%&?6=BsfGE=LH? zvW!$rTkBbTFUm1An>f}u$ie<|ofg2S%P8@Sk)XQOylPT{po!=&qXA;kNdP1tVtz@Z zGID&tpYWbPA9!eYDl(H_{Q;jqaVi3JK~3cs`YU7EzwHHuNp9a0^-P@B0l?(oi}$#Z zf8my5!gk4}jZKxUgwbF2?=FjibDo~bZ?W;RDXamoI+;Y}f>wjfmEMLt^8>m^s@e0~ z+K&+QS|h|l`l;$uh`A}fiiEZ#WwsKBIxwr!#)<1}!xi99G0knZplJQ4H{>5Hmwn4B zNfa^0_;jF_(5#Mt+d`t2s~o4F80Z$cSfF_>cIFe02S&Y-xf}FOv-_dVYhhCSObv`b z1_SiJO`)`$FIN~H-`wZNW_2nDj^%oX0)0NccalSSUIog_HP(1yE@ab}kFnFIn1^*? zXaIEvc9o5VzF~pN=o-{V$NCmsE8vPFOX0*-xp8KrsJr$Q+A<5W6tLzQzct(I{3+Ao z3!0hbX)SC$_KMqLX3n5El)825eseao)cq^RL_6*(w<;b!H{e@bmaQ2yv7!?-yCC+d zyV@c8@C$lljD*6YjpwLA7_fojHMcZ~-Hn?549N$n!DP?jGnuadJF#KbMoC zbgiBXImfO!F}%06_(4&5-h@Qh%+at~_IKTFI;b>`=DevrcIC&SiFKv-c&vu&_fK+M z^W}#^t}lJaHNuxO@)q!Cwor?5N+gH46m2Iv4RyzS%FkQelLsZrT_;U|RV*I9Vj_hK zJ8On2yIqV`Ewkc1$%_c>qJmg&)j^IxYsNeyU=3`Wd6T)7t_ zl)oL9I?(1QwDv{g+2qgJ+VPAjrz_t1PFRcy^YKTSOY1kJS&!MHCbbWp z;Hz+{x|NASmbSU?IWsu7m?92%6mVNKuq(P_{I8{)ykY4(U@Rst+77s_4_bZGY!KTH znVVJc{gfup_2faf`RyHobDs%xEdw>;iW+VOnIkdhZ>LG!*OtM*j*+m_Kd;sQ3NO(y zKu~^O1tBpZv%uJU$eA*sSUXxxnSeg+!GS$a*aC`I?Dd^Dx-^i=MQ*&-qeWR|b(f zs26rK4Qee%?RCdYe{;jVdEFfTWH^5H2Q};ut92_GyvJqV>9ZyRIOa(6MMS01lA9Cn zY6k6Bkx)&wZz-^XTX>ubF-s0Zjr{mV8pbKy-di7!fIkjWUK}a$LjcZYeEPBK+|Z83 zG;dV!itA%+Q|B>bPB1!9|xCgT6ZGEOHKL{~n=M=83x&;n=*37XYX z+doEBOPXdkMr{E@#P?*RxEbH-1@_a|GeAq@SPuC^C#S58^nlYny)`6DPm7~CSGB7A zCE34$UN?1ew0s0XNVkIL1yZTcS8d%=qRK^(q9~qP z3Jr+$A3NQ*t1?VWc+HLXyv(|XAtC;JFIz4!UqftT(1GifadM*|-V{WpTP&AE?g)3BHee6&7j)>!vV!_S(pZvSHVXR;|=r zkID(jvV3>cs#u8B-B;jo{IW8pylwOEicD$!T(Zw@knmb$oZMAN>d7jIs@4rBnrgdj z=1;XYE#NI>b#|Nml;pD#_%jF}lDAjnGO2dXP9Y#XIhu*!l4RiO|9uFD+)V5I$)aRS zaV&4AA$*xm+4-KXCOWebTOm7LW3_L$Sy;`j6gzgt=cBK|u8a{D-e?~s#DuBCKYSjAg9!6NpOCwm!3i`k9w*K&% zBTsOnfEBXX+ds@on|qhD$}ZK#=!TvyL2t>Mi{HyI;?%-l>0E(a%#)uTHamPqt`o(a zlu%LlYbkmWdqciMj1R??yNy8m^iAv-ocOGg1rB{8x1-yzMDmCVq zr+8O3_JdjI+haJmkwAt5TqP^FGGc<_t}f14?Omoot8V|QYYZxq;s-6}*Bv5(AR3kk z2GEWtdLOe*g0mXy;nKW^tmz0HQhe7!jXDzG7ZNQIv_H*BusZMCQN|YIQ`8VQf!xo} zIphAt20t3DE=j9BYOn+GMGNk5C0VzzF7f>WlRAqW=Tl*dCncOtZ$J5p>`@MA@U(w6 zob}ukP)veYg$sN+|RO+-XH{tq}*4$_QW1JIA7wKU>~0(NHaHF zg31iW3n|u8*B9+Q`b7CL$DriW_;ESRTsW6JW#l5V1PbmZ2+}L0eirPohImyx4t#|0 zY18RFzL4}KTy&`H+U6sjPCL2oucpGap#79$Yjg=^!_BtBMe;j->{hHI(i+$w1PjiR zGp2FicU9~a-E}Z@dBn|ZwIc5<+I!Bf{5QIx_AP~2rdlXQCY0T8s#Vb30 z_~(A%#kb&_&+dBgT1j*{m&7#P4xDFRG|{4ppHa9R%WW%uRQNzu`*iJo*`O#ZH$z>0 zR#w6(N-uFNAdg;78rp(W$2IER0^JGmKLa7=5NdhS=n7H{14h$GZdPG`5yZSEaIOmq zqUsTQbIvB|;*ZDtk?Q>$D6ZswFJI)>THae9Ddf~e}oBQhD5uRNGk}8Re1UTOci+}Rrie2 zY6XLT3PL`Eo?}XDyED>}0Ylpvq2sTlHK%-K6BVX~iaCv>21r;( zs~K-|MQ(Bd{F0D#w@=!=cU4`S`Y(vg8al9VyO^Mgpr(%GySo>*wQor)4E>bex>ve5 z8|du>=R~Hjp~5VnrObPgH`Ks+14R4J7tvexBglk>IqUhdjl4)q%0}PDA!*v97N6Sb z57sUnvP3}qgO?CzKS<~`Uz@<#M%SXB$jmoT=EgW@QFFU|){+bkVVo$Sa+13dG44uk zsp#dxdaCl$7HB2o&SLbh;<|V+il(S}bXftJ{vh z3}HF4M3D%kJX4UGH+Gw@hcqG{RpuL17TmUE)k~rs*NyY)TUbLaney4pd66pdTxFPr zCu6T}0|$rIDbtjz8j0M=7H~0t%_-04Q|J@_Abyfv*9$<^4Dlm{*L_ZD?UtbzBvPxv zd8y1{q54~?*35?;3YBfa+B>_F-vZ&q2#x)zuTN_Z%6$RPUZrq(KfDd(R#-1FIYa~S7sBdM_q@uemkJmqu(}|*$!|bp8(!FfBe8z zi`P=`upMD}9+1mUEGZ8Uo~~WBAP0)xFCX92iF!yNP5CzoUboidn}ui%s7iaBfj6=i zkpUh`NC6Ya$UBjkHMg@ttiz|TEu?D$r>`?Ltjn&Cq&2t0{?2I&nR8)(Jc=jZFZ3Fl zcbJS4g&(5(c1(qv1xwER;@>_NgVc-!1bT^o=0E@TMc$HXVCi(j#`@XkKY@QA)AEk^ zp4)Z9?e@l{xtads$*4eT1;d}F8bV`pvne=Q1A)&HYkx?7eS#n_N!&dz*Doosy-VbK zJ)G&#TJV4Z?5vf(zcki!wY(FHbO>IX`I#vi2kUEfK^p6u^cT0fbTl?aq&PhC2WO*R z(E#5HIo8o;i9vYZhVBZwem7j&9nOL$*P^j6hFaSxEQ!C|&)-383J@}eZ1oL`Wgt-k zXYDKzb$x!18muVY1vhfEcz!!?JLufQ+cX;t%xHvXkwY7rLu??JK`2G)he&VXJ4A;k zHor_LPM?vnzYP6^pA9n&6zfLgyA)2&7a(G}hrai{QQRG$XmuT4>;6hMk~J*Yg;BGhKlXSn-C$>s05%|T*4=eAi#RJ7fI);VG0WjmN3>Q_g`!ng1w zIk%xO_wzM)Gv!<6r_>2V7T1mB-%K4bMt0%&%p{F0+Ur_p#UTX8fcEndw~UneD{{0SiOG}R)gSu0ZJSL0R zfZa20!&_?l(tM9{$B88Jdw~6hbL8AS&v`u2vajb^6yinu0}ZNiBhTn2ef&HV#Zn;w zOQA{pEI@hJ2AD)%Q__;H6?1} zX}2mge(^vS&_RB=u5R)FOT^oMIP=e~9d0YI|6SX}9gu$cC8?$ataMIT5+rUt$HiOZ zB>v;x3hePJ9pk^XM3qM;AavsO22FrZ4`qZkx`W~F*@Y3|-o9z2<$OK=PA> z4aNq;(76W8@PrJG-TEA4oIB{+Oti3GkbPtdXIW(4G)!9m1%{`f6_+<60MDc`@ho%1~D$z71R2oNre zgR*r{cQn^)=mz-}BZz<__b#E>TKAUaP0I<;8Jogi@O4tJIOqRM&=je5kyt&IZNxK7 z6IUX*m6vX^l4Gvd*KYd2=|5E#rdp6s?6g2oY`Jm@dI>B6^$1vOVC=GZ6oK3Ox4uED zZQVDrs~xL4UQ2Bft9cpX{?-VXvf>@Jj(4SUE4!msuBRn=qvI?gaslp{y$`AknEVB? zJj3<%4zu@tk-76ZF6g)OMoQg6-pf}^n{)3~0O~7hr$yBUMULsd2j9;sCxaK)JHAe?GW7b7PuAa_X7KyxR=!$4T=^cr|k?V0QRR7dnU+h4kZ!V57{l>tnTBlJS8DM znAoJ>sUD`99eUkFJu21=7a#oGEY9}0zQv+@k5{j|*tZ)m4%;xt8%WB;4;)!XL^r)v zXm@|JUfE^4{CX4AJoKYR6s|7zf~YfF=hTn(;8IcLK~ZbD-DI)O&O>XAZ-eW6oed%b zv=S!V9mNxX2(npBV)s2#uz7b|GF`@cHajL1yur1Uyjh;1Y6GDGdftgsg4fsqIdP zJxU{CZj!_r6pNb3{pmZ~hImfb36QOCDd1BEFJn8C$SDmZ7_>ugSsY`7)|U(Y*{F#G zR>{;uYpA>~hXyuN`rbkwv+c~g2)%g(g_a0}>D~uLA5(mbRmgOS4Hm^-G;}E!nku#y z&pt2WJ)h>O)FK`aZAiZ)$Q(H8D9^mVP*uxio8mz1uJkvjOMIFXTEYDLt(~3Y_v3k| zT3*#g+pQait$uUPzOG}w>(!v>yi&AY4F?-C4}c0Pa0Gn;hnbr#%jRrIa~ov$9ZK1^&<0IEUv1{WX2nxMlK zfz8h2R-u#DylZ{$!>(q3(Az%X5&#$hy(Qo4=RfFscMS;$ZCr0$wsy`rzZrelfAH;f zUO#>YSM%8Wd#_#s^1&D`z|}#=y59I8`I%o^Jp zSZ?|y%SD{;P!?A2tLc?Ag6sy2<0wsjh}4ijLQ{<3v3D%Q8LJJYM; zTK#S`rFf1Xnp8W+&M)?JAf3GOnN$%a!|(Z0EW$&ETna z`C7I-wmm^IV{?Z>IIfsKHqOXmt*c-Z9+|~s18rZv&+xJ+vRXoOi`;90q%*o0g|)t9 zWXTByEYqnVkXWCJ{+(q%wc2czWu+nA`Byhw$(@!7^m88B4V1>SSota|K@;m$tiN=p zoEwh+^mkhy>x65TJqso}@g`Lkl+esjwV>CgF2YEmB$cc3I9eq}2J{iA0O>F+j%e~3 z(FqsgESok+MZ9ABS!BA!-5Nf3TgUoAWb4&uo(zyj9YFbR*nyrWI14whLgum2%I)jk)h*wN0&hR+wdmGdvO_i>VT~?}*>(>So-PWG3cc?+x z@uapMmrGY0pX~o+v(p_^eJ|oXVluCvE+t44chH!*((LV|Q)*vvvF18@SFcG@ZB=#j zeHxn%Jwt*#$UAvCZtk4PxTOy0ARcbPHx02lRqN1BovPOVooYb1r>DuU%X@hAR|oApLTtDjy7xIu!nU2$;|vr#-`J^ zS@lA_lFjU!sn;ypr|wR+pJ2qL?2Or5F$+c+x2Prk;ihg{iZZi7tIz`r59iAj`iX&M zvwB6h^suVM9U(7ZxAVs5lfRP_JrCFDT$#ZQq-o%?mOoKh>}#CzPS5M;7u58E|2&OYB=!cgU^Vb| zREAz?TeOCsip73oXa|)gwhhVTKh$DFr>+=2c<^a$Xj^Q@`*(aMejNX@cAWUG8J}7| zy={2-U2oeTfBgBOTds^B7`pY!pc$SZn@ zFEG*-JD&VT{P|xVdhKr7k|&3eieH>{!IMmJ`#WM1=@ul#e!R|gsN%5$8L{*Wat_g zv2F5*J*UxuycEdWW%8fJV!s(buzGxG2#R*dMUM}~KFgkPkv}yYd*>(i z@d_9D3zrIVTqgg)MX}F5{WL3Zwe+`!Vowk4@{zx6lU=p{&QR<#Ls$FA-x`WN^ECe| zSHTOknmAA|l&K$q%5U<0>n~mq`)+(L{$%{VeK2Q-eK*jz$B)5a5A7J5xdMOxCj9&> zoI_)m!>@M^KN3GSl(=^2GT-B0vIoUQ{y$pm=>YPRvDnjZkKY}CdqCN@wb^Ghtn()!Tjr2Qw zWAJIH=0+d+aeIU>mdU?wf7&H7`A>&q@q30|_ zkKGcm@c(Kk_ML!@;wgB~g+B5>(X}>og|D&igf1SM2l^E<{e3(5uHx#DKi>(v1MRG5 zh7Rt=%>ifFF#g>3$MnaJ9mjV(H*~S@$zR1m+2?!DZ(k6LUp18U-A|9{e_-b?ye1Cw zcl(ahtQTArd~t`EQLe%M6z#cp$NwOHnoS(nLVJE#bexO)Js@A_o15>5iMth}>}vN{ zG}9d|6@UF5+EJe$y5-W(#t+Be%m&Xj4ZjHc*!8}Le~UhR>>Kc~{!IL6e2qQn zy5-mH9dNfy{-!3#t}gn>c1rdS%&)@0T<`0&-@DMBQmS?C8nGXVi7s%Fzhw7}tCqjg z=+X;7*IitK4aT=>9u0+#iU#>GRSOTxwaeP$TO;252cH?dWJ zvF9U$hT-#Zv42Dv=KmHiNorv1iy~2>S@d z>EU|hxgqS>_~|A#+5f5!#Kj>Sr5oLCZuchg;QS;ZtFj+XN`g$KYP5g zm`KW6vP@>YNF{uuzM0LXNhZ@;TqYXHJlxDzP?eWkoFT!QCSo@9f=Ln@eerSio9A=Z z1R+J;%9ksN5ppzdt`U&mLz*3D8}Hi`=CjZFe329iHm%2!PN z&ON9Z+as(lcim;=Yp5D0?DZj=Mz9VOiF*8MWenLE&NVy)(|FOe9g+P;1^+k&Snl1zve|V^$NWvbx;^{)gSv@ z+ulO&4bpqERwq&}8&KBUrL?cX+K{be=xFFLxWuZ%RbCnf{HjboNAF3DdCdq}Is_Te z$XoRy`&DAEb_O>|vNcmTEVM9WE7JHLZY@rLzLzY{p3LA&$4O>BN9cUW;fE(o%iA)$ z#cFYn0)cP&INwJwOxc5t@iHM5E?1_P))A<4*1FxGC-_}@rn-2%W$((4xq#T_0+N_a zj4zIftvRI`^{PoHVY6lp@MM@7g(G5?&>tE2aTtCaf*+IcW1OfqN!Le5+apuNe&Gyz zjiw%mWReVWzblUl`UyBq7jh)mTxsQva-K~?!JT_r^>T5~-rH~6D?0i1+ot&ac9jP^dwh?mKnxN6 z%N`?2AQ`G(McOTb|IZweSz|4rTj7F-qoMfnbWieF7>=6VAxEhVt% z!;s?$pE$G>z|Kg!9_0_gzMRxbM!rCbtFWqSUx% zRU4&pg`R@MSfew5aH->(u-o~CV`S(vBC>U4HKGs}l4 zLD0jA?MD97m+oU}gbo1}eHz){n>-}BncXixiLN{@CmrN>lLdQ3f~$JA4LEII>$ z90MNevl8z>f24_ryXQP6t5RR7lQq54(2eX|IU#)uRz6O0q(BcaK8w^-6lN%4Tr2mD z+id7w!#TaDR5qyWoi|pSRUO=};4bhSqtc_!y;49_q;-I|kl1U}gt(m95-HcEV5dju zmpWetOJb{s?74hKMmhe(#Fxd~B{s)=VqL%*NT0)Uu2NS4g^6@EzdD@aR%D9n|NX9pjL zbAhS zME9&k`lc$lpcTu^an-GRQ|}7$Vz_)-!qLv}Jw~z_v)7WQ%}?f}7R=CZS;-g9 zcs_HC5Vs$+T3G=fI$P^h<01vhM3u1$<5bD{2 zP--2i1-mDeHN!+`EO^gALzz#j8WMrKevM$2ZoKP8b5v>H5bi|E6IVLv# zbjmid_?Nu+dbHR?IdC%#OQ_JJZ;>-eTkYOsZQ~)LL39J5Yss|6MqwVEAfOp*7<#K* zZ<;vWWiNkHs!#!d=-4UT)g8C5a;Z$WFjGOdG)d<_-kK#1#f!Y1<; ziB3>ot53Kf}g{K!# zEqk-8I-6Z@)@};dE=~;GBc}Wb<1G)W3^ z*KQz_UR@0gSN-13RZpy$DvdYVmDJjBVQmRvgwiCP7+}K#J3@~Ut*}-v7xY2aEXii1 z0slsy#L$zYy9iQ58=Zg?xfULZMl72F2sd>KMxgytg${xk?;_nbL63v1TLU|5y=<-V z!83a=vN;nAnH3>NV~eZ>NSkk=JB9JUhA|{#;OsnUlLY06fI=I zNQ!Eu_mn~F5Bj#g>|c~wu1F3R;i16ott{vD(2thrPMukz%RY?r_Ho*w9+;jE>A4Fg zPFKoK(!qfSWER;Q>;((FJ@Xi>M)0FZ3Xi^Ysv|$szJDd`Px=NOwgTwNgw2^ty~=5e z?z4tYg##|Q_r-l&)+h4i5wKxY=c@GXLJRb>^kbNX18`^_ZgP!-uru6l|8!VKf|=a|=uo<%os(%GiNd;%n;C7X#R`UC{9Y*o$B ztu>>*?zrbf@vBSm^B_6i1NV1`V`;JNZ{>_dD941{lMc%P+EQ;?)w*fH)=o;2D5Tik zZ87Mq+sX<@g^{;aV$oI9DSAqTHBWP)*PmClkzD!0RuE`!KUu*ox0iodV^ZIl#5A=dYlHg#Wz z&so2a0qTh=j|CMmp}wHdPI=70&7QeK+1_usJbZHPLGYjvdmug0kP$>*age6-!kl1GMnoEElrplMc>tks(aAlT`( z&K;CS+eRWJ!Cp$=vRTY;2CJK#@PLja`yN`ZqnQiCLV{q&M(zwSd`p(jR%?$P*huz>atXhq&jY@HXX4NZ&#*t*I-r~{RyhtQS6!GMFqC2+ZfOklTF z$i;+Nq|h|LtGl}550~%R&d5CF2;ok)^^%%@=;kxF;#oi8a;wLE0=Yhh{U8Fu26Ho( zbohM`@K`J&f)(ejyzOGERQINFon)Beh&v9o^FQ8_uYJo0T`PhGy7M9T=(e3Ys^!jO zNcev06XusumQSRMW%xi^C*vR(qnDfQ+I2nU(vVSk6*#AmP@-NlxIv*!pdJ|oub)16 zA}zvi+Ld%d%@Ej~7#D5mE!{93wtyj@bMHa4TM`ztNk7*(LvMv$4fzRJXJI>0$i&H{ z#v?(^xI~LK!GmZ8GIVfE#`#DZ`C@|oO0r)m_G^^=N=FBdInR9JB-x3mM5eS`WP;dI zSPrZ$jz_HU?p|&pPk3;LK*-Qm`ybw9~cf>a{aaxR#9Ki@+zM`adjuH{<8)@;< zIThgY&5u7&>je!-qUQ>cz_<@L7`m+vQ9EfADvn{chb*@rEu^bc3jKuF3uXZj>$VW7D6$?1*FYVd8;L9F-uT7MJXp_wF$X>+}tO&=i543NMm#%@u12R z1gC;#=&QucgKNE^=li1vfK}s-9HMOaWQh8O9$2WfZSrt>uK_(Wi$obCMMt8@S8G-( zn3)PYq}r&^83YcEfQzHAP-d>5Ok0RfhZ$3t268HjOIm^(IY(1Wjixal;$T-Gg~G6{ zf7*+yF`N{0)I?sbs&?A5*NmKzgk&RP3eEcU2^~NbB)I}Nw1T!_P#vl?0#zbby;LHV zJOl{l*5Tdjw!*tFzBLILAfIPVsP2HNS)9>O?(n@o+9ZCb!$a){z_Wcqcmt{9$VM_u zU#N&pb!C<6hf;CDIdOX#tIwiwv-pDHu3;!fqI`l2+_8=X@KW4`^KXj zDa;QGV|BU#IE$m*a0tFu3xI>^6%Xn)Z4x_fsOJ&#V#^EGYIf}j?!`2kAd6JIscMee z5<=}5`_q7X;w?FFw1X(*2Y{jFjU7IOS>iSJRi2J+KX?G4`T8q zj;4s>x$cCG4DKXir{pozj7xJ#WA4LVNJQZ9Z0B(9{~aEVJr!9AJu0-&$w|$vs`ZL# zA$|iT@b|n!~Gffpx}Ua_bE%Z>&b~bWTD1#Po8`@f{@#nI)~ojca}K ztCUoEwtu#azeFjC?Z3Z#pOs37+%JRorQ;BIxglmG(lj`Yn1hZzFszU$5W?oVT@@0Znzjd z;1!#Oq1&lsdM%}Q;F>hia}62>8CLsJE6JN4yu5@ zC{!}ls@ANbcPvA3tQ0lIs}we+fRhjpop$ze*%2q@%Q<+CY=DI4*Gi0ZDCh+)!fv!M zKaj#*_Z~TP#MTRIE8t~}K1jM@Xu=1BtJw}F#_rrRF{OpNrw#aCv|t-ot^8_IuXG&q zXuHfvIEyyK;t6-VlzPnobw=N`o58A+JyQW3jqF@z<4+H;hRdbwANa3?OhQT zkgg-TFNrKM$QGhDe7B6AGQbY+HogO5?~MC^o+5-+Wi&rJ&Y*S|S|cG$l!xgvM1@7j zISNnZEc(}KA7o<*LLMwH!00KFg9liDA)~h0(5K-(z-fVVqz*CK!Y*Vlp83x7rl1|~ zQC=m40m7-N@ zkWn5S?;qo30?tA8hF@9vlEO>2^O+cTd?pSPWZNT{qEkemI(efsm>dmuVG#++VO;v* zs@Za2BP{37W)wuiagpga4IB%Vt?5o)HrMQL56&zD!HFCyMGk%K6E?&G*uxrY0)w!x z@j7VZ55nS;E&oAje;07`!Y(weykW_1H>%Db)4+X0E79fxTs@y3@<#-MXtpuQj3a(d z!N7Q;9GRZW9+}U~l0(zE>zeKMJzhh>dI}l2`aGo8jAiOLNh-78!vV zydq3^G2b-^$i@^S4E1<$IfP^qSp?jrxtk&v#aO;m*FqVS{S*gQOv8v2^KDLd&5(lOpRE~n!8fA`jGA+0Hkn0C#TXUVvIP>M2EQd5GK+qv@T#c8`+O8%9D*m0o?oZGuRaHaiAnEv9}zFcdA9iv5krMcRv))hkm zIR2hNrRV5T+6xF1#i9{IgZnHFrBiX)9sQP9Rm!#VD>^?kAhek#} zNd~_gx>ZehbR59%>JU=_VZWg{vpkU(C>3PqPf@{O7JS9%ysXkUwdy=D!(6M=rC-Ze zb#>Ui6Tg|W#_0yTo;Qlwr4W@wW?`8up^(5iQA6k8WH^4Kh)|~a@lbt6vpe^U47A-$ zxRf6yU=lYQ-k|J`VT^2?y*610M^KRC%0$jaglUHCjLDIj)`jSgtsf^jQa}_Y<`v8E zT{JJhsEp(3cCCRBT`+Xai@+?pV*85lxd~|&Ib#qi-iF8Q(~ln$j^X5tz8NJ-VvM9x z82-VW?Rjz^P=PT6rb}z54BiXPZOIa&gW3YxLq#FTIRWm&CcU$$l?+{v2I(mv!Ao?c zK_k)+XrZ}G1#vqybCY(|M&wwsNgL5@vJd)TH;hhb%)BeBvtsEmwIg~r`vGq>vyMV# zsR&>$bk#u4@uXSR>K5Rb1NhAR!r{5;BRNe@ieLpm?yv*E-858T2{rVV9ODvEl_Thz_PQUSwXbY~Wgp%T9(2 zKO>aTbj)vNudaZYf{r|6`)sPP{lb*l-FYM#0O#VGD(cWsgOp$dfqy_eT|09R$y+RA zn;g|}@EpjC%n~@eJnI9=AkVrT3^hIhI)QhRp|zU|4|!Y*YyPJPv{s%+wL!Jm}vNgd@tk8KS}4Lo9Hdvb!#kjC&2Qq4v3fnOu=1>LazyAO1HjMx1tK~#P&?#Ro?P7!o#63T+a zxg=7IbGd+iGk5oG<0X+4iAvLmD6-NlG5)P>N^@ZSAWfC8$DD{{J0dS~uiBvU$rNAr zqCX0di?2VReCVCWPun)`zGDpZf3SCxunf6lfhlrbi0-^AJ5*n=?<=h7g){0X@2=0- z@5uFh2_c=isltTb?2 zuCCB>1X6dW0)Z`H4K0FeNzKsL>9WuQ^`_mW!jfEWlSJr?`mme}TwDN`UXaB5^@>)o ziVuQ&nHSDsZY3AqF1gIoDa!lIWpm4!c|v*flNplBKA6!Obr?K4vUR3#C~Dr5AP{T5 z1GqKt&w;ta^>-RM$?|NT(Kk(cYS*BJ^dpk_Mk_%i9hSlQ;YQxbSLsSI060gJla%(B z6Dx1nTv#7)YvjCs6D+SEIYLT}y2;Kz2NVR>Ht3(d02=);c(XhZlsnI5PGrfp&TlD*08D=vqVzu14ncT38>397IyaIu^+rk!2ron0z8q$|ok)=^IIjzS~yF z`1fErE;dktIzMs}ND|lKfmX*brKE(^ALR_wNV7)w$SD{|TM`uIr1C9kfZrIE=Fnw<2N^{;C~SpUBHN=NUrq68;9qH?EvJN?*6i7Of4?WQ9fw)UF>eQ7F+ zo7^P#>)KjWVelAxQ!v|Mu{JB zjwulMo=vN(Szd=;wePb(1$$pmV`oap!0J*wo>$PB5XOz0mHC8MJB z+yQCgd5}(#BSd3tY2Da+TNMAL5s`fnHW!Y-ZIOqY<-!@jdbcnOgeP}xr|@(RN?nhw z0^IYWRMsm+vR*D)YyEizh$|IaWz}?hEKW#(ovD;w!BK0 zx30Mb2dB&L>C|s?jE9ggm+(PG4iNVLgp%ppN`4EL)S~x3yea%r5k5qZg7tz~qlX5Z zq-$oF<8{K`r91HA&0Dq?L)Vx~c5g(oZuTgXwla61LQmYzFYhH%6N`nsZ=c6#k1T`) zoA9!Vqkk~c_>@0HgMmE@HHbY@_c(t}0r$D7=Y5D5J<=@O;4WQ-8_SUCRGJTi(h@ok zZ{BqGs$mPALDBczVUFPtB9ho)zWXg?iwu{bR!8JkvBBu*%DQfp!MCAS3<`5(2E-17 z9bJzFMm$bwD<&Oo;E8Ap%zTUOG%yX;i}}rN9sZmsNZ6EH=<>H5(JDj-WwG~p5Yz62 zjy*3q!PNQK#ILUJTx0U6KF2RwRsKi(75O z!dw7v=(x`CNwgXPh8OS|YlF=0a-EK;!!SbdW)s08EGOyh;C{Bx_sCZLhldl+FR!XY_?G`Ka%qv5-Ox8@^_X;tfV0s>eA<^}4{o2%ta#U}>-K%mVf(%{bN z4pX<*>P<6WE1Hn8pierFX~&IA89^ok1STSQZj8WPZCA@6TV+FmeO0Q#s;q52C`q)O zNdx4jdX?mHt9AAix+FV>kZ>Tvy4faM0q_TsYz-d$RZL;eJ4y4H7S2~d&nX-CWqST} zx1yo!+nyxt0EEx$RWKo7Zp5_r#pr}7${_+8drm7gn%24*0SzL_(IEUEYIn1(1Ymev zB#fPGqp4{NePBE2W6mM|-f*PNB-@@@2SWR@%LENK%!#w0GYf;}I5>E6&<^TcvQ<@x zG+oj2rj<%kX}~okxIXiZ25w7KTp}x*mTub44=;H}Cn~|Vbi?xOPb$JaqY>^&N4RG!!ad^=?wN>i&!qq8 zWP33a9E!T_VB%iEqeLXviNqEqK?Tt;>W%y=XdCDXkns^)TFVr%yX2I}8`k~N>IUT%gUin3#_(<*vx)mn?3^~a9aNhiDl7f57u?I6Px$p+=*$P!jW zyEn38L~~YhOwFNC=ASK zmS$1YS8H{3ex9)&@Et&g1Ab$ln+xc?{hVI5cB7QGT+=p$)rsZUAQ@7JovO>BgJ&Axstr zwPp({0yxcl;Y^c>+EMgEQ8uzHYa1M(07{3S-j74<>|c%QwsW~D+U=-UK{FGzu|#pd^sU1lMZbIHUVhqdMrXj+tL}OQ*tbXsops zWYy>n7tgk$)&s%uy2%AK$>3e>Ox}5>LB^JO?YdDTHzRz(oqNFC-Fw%_v|epkn~^f; zbnIG#vS!K9F|B}PgOoF(dt6X@{(V7CE}@Xkf>Y_8-bAp#=gKiA;^@&8N5t#T2)#r* zzc;aQLg3z!%#wE2Z4T`ptKWjT;#U_;g~Jqy40@@s-~}9Yu*0okZkaPWQ^J-@v~^5L z*%n!EN;@kV+`)5^_IRyG`Ke4Yr^Dvx%GlL`2{h%+brn(W9Tj5lBqjo4dFwP>?x=81 zCPfM$rd262ANbz0}R+A-X%EXDY}BPRoXN3Gn4QiH*ebMH$^A)>QwAKQilx4 z(dkMWm(q>o8x1K7ZGRE$Tsl{7&vP3Cq8eP1Voi^xm03w-KpT(kA))aE!>8{bzGYHp1HKCjf!vV556^}T=ePkOptPpNyp6k27wW5&6jmA075JnNLN zHCd)|bQCYq?FVyzG({2+uUk)hdx3|=nY5)?`buRs!lveW{Q$euBvP(yQjx4uqhzwp zp?N;{h!gjs4EduIm$@HFuw^ep55GtNxJ?&l5&;`hWaS;5)EY*e4ki_HYpps52SjhC zKB-zght32&bfiRywva79s;yIjqPo(z==5MwXe*0p2SJ!CP|A|hQef3v`PF1quR@}1GmvU^sR?l&C|4U5 zl#1+p?{uw?5-nK6%NA?IgfU%k7ahx)V^q#WOc54KM~~7nXmAj81DS&MI)t#s(BGu6 zW~>gf(By~Y4R^rket(c0iY5s6%9LUmof%GfXk2r3*SwdgR)A^Q3^X{K5psGn6ZHK} z-Pm+3eTnYCXpn}rWx%aqSt2YmW?*8>u(yg&6@$?AICgtBVY_1=(|WAQz-R)3-nQoJMj)aFdAn<%AX?z>ilcuT3u> zCW{N8k6l6lalr0l3tFVFBq9I`RzEk~F^gDfp!YuyPMkP(Jn2{L!#M0ED_TDT^yNXOQOavA*MO#SOdrVgCf}JYRAq7WGt-1nXEgdhi@q!^`(cKzbrUKB7 zaCZ$Rp2jF0_-lPLNr9@j1$pp5_0cb%JtZScPIWq0Y{K-8tcifQ}-7~&F zy?GvS0Sh+wi0ebVEjft^+W21Zat?t=ZTFlPSpY$sWXZBH9+rly32jWI; z)p1D?eiTuoPEvN7`f=PUKrRIa*s)PihSOr9pGnyi7^+K0X!Qc)r+4U@YO< zsd-(>>~6`EHZ%u{UwhY+YI%OE2BD`}!_W&l6>+6~LvetKbE>vdFO_^Ig5b#C0AJQE zAs|qmGDja+&u^LpryV$1(!pFc>dl4&VbnofShWh#WU>H^IwzKq0so9kz&|W}CJbVNCAQ|l;~^yVIC;+k07^&)c)i_Ow^+jMxl!sM!H0MVT)d z51zo5b<~XKPP%gRp(`TY0Sisg_*I(Kn(%e;`|$-L9MZ|VCVHx4#ynjx23`CeV^7hg z831R|R_&yMjT=?L#_{a5FfRvr@g_S}LGBCgbAQO~ ziikO0$BC2ArMG~WY-7a)jZDQ)C3U@2H<*9kxwP-m+D;J40UMNUhFDOSBpBdYsIBuL zT4iK2gXk_)g3=NQ=DoUtc`>=Nl*@fgSKS;VV5Lorg{)s#zLfbc!|8-VI`ID{b_!tO zfvZ3?zw>@0(GA;ppzn+8x@dm6?}mA(ImZmn*mN zeCgdjRH!i-!8fADd0Z%*8Dvb4B8yuWL7EjbcU7#lMiVk|RNR z%-WdkTp*i203F%V%(c2osIIM&hHq-lz2Plb{n{GFh^7 z-wozivGC8M1OV{OLcUh&w9|Q*plr646c`Q)7;PjNbqJWTise<>l*EX}Jdnb@q}pL# zVg?TNJn9(UO@da=hqxi(WSh<%K0yvIWisUC{A^}v?lk&ucbbL!<(R7%CnI-{jG7CA z|J`D!Ff-btpzp*wa+v8VNa}62&cslyYaS&+)@v@aJacuHkY~oWM+OQLlzFR z?whoOuxxu&dlYz?(eHp0U?zRq)@mbfkWvklsLphdGU<$jPIi`0M|8wZ_jKy|Glk(| zHr^r&Um92p3Q52V@my68nkS+VQqa-WZ38?$D+8+kCRkdBN^C}%hu-0EZmF3!m(qT zC8(m^0^5`c6HyP^H{&s&@t; zM^Dwj0Cd1Ws%fQ4(_DjC0Z8xZc2E@2oE=J)lZ_@ygoQIKStVsL>NO1D*Uq}l%Q8MP zk0X-%n!zbA@Z4EZA(p(b``n06`_pjpy)Ws??(JF+h}`73x2>Ieu8%m~h3LNA1*NUG zGMzEP+r9&Q0w)fFS3bZRWdy_Wg|AmNraD=o;^%RdYR3bukqA_Vkm>nZvXseXmNj>r zfokW#{hTuRRLX*{6+t&Wos=mF47S(R_5m=9H&;wCA5=g@xVyHZ#Y=&AH|7Nlg3k&O>3l%DK^B)i8ai)v$-=0fzk9*^qnEHbzrXs)LM`jyZAy75CgaG@Z-N;Jor? z++~172vQO%^>bI__G+P-WEbW*y1w$+WpHSFklqY!%66vIalq}z2uGcF;@{5e4Y}pv zH1RMVaT1BiaORqAV2co2LZ^SNb1b@-rL^ww=e7(%X=kh=JRN7$IQR)W`{FqGday*C z7KBfP=w$kkg+(BLj<@yeJD-_%+i4yI$`-qm$Hj)>Oob*E?YV$$2eP_^wZMqhX~_|G z0U?RIM3$41kI@MX{gOj0e+|5qFys*woC>+dhAc^FEjuUt2|lif=%N|T8mZLl4Jq(j z;dIgo@IbHvIX8OpyT#2gc_sd78pwwm&t5nVVNHoKEowq z{Bp!MMWNMB*JtN>L0$r_GKGqsH^6--0^nI%Bsxy0IUC`!04dT8x@g3?_41L`KgA+v zm^ple=0)=J#`%XPZgK5M?vyMGi)7~LLUty@>I3zpA2O4{ohMSFj1ha2Cn-(1lP@?I z;cv!BW=L*!kR2D(xJc1YwAN@^SplmB!|(VTD3wf(7ZL8qBA3nJ_E&PmarCUx>dVNy zWkS3>tGN?IKn$wEQ8O%T?YO?_b9Ow3Lh4)z<_0#FAONV2Oxs^h`v6DI)B^H~cJ9G~ z=o>s8W}9FRFDIknD;!U~t-DYq?RYO3so4lwC0Y^`)<7HDf=4{TN`sQ}qrv z=Goy!?H%qo(WaLUXXoZf?s#@_F*B>xo0P3BajVamGDG7dapvIG90H9TG)y%39qbAQ?n)Tp+2=0YT9w=|IZ(_XgoMzv2yV>IR}% zNP}&-Df$$Oj~vQa4PhwlO;eGz6eBiTUjpo(#d;MR2biiQt6c553~X~hi2q(`0UW%e z^ymN|E9>(n3tog1h-N@Hlfh0?kJE}J$6?6V3%R2tEG0&Vo!8PhY7sho3VhdIPYw|p z+?jqPcX+TvR_W$^Lc};xo>t#L4ymd!9;PS`g2U6X&!}` zmpSf%Ua5XNZqES;g1dd1aG;tnWv05DGnv%5tQr*)jH?#8niJA^+MqZ6(2Og;&4b_; zmVd=rm&vq}S<03&;3WnYVts?MvwDrrNZ*;LRIMeXkMsD+r$_|uG&u_SjofEi@0|*K zKyBU4j0ro0VF@$wLGm6K=IB65p%P4qiU)Cll>pnU*Xo^UXFE@_;+boQ&^L@UicR%7 zwKaQwTTl`iiq-)pftR`xHliXq3;{4n-CLdSPIQ$>RuXE`10B1L?n!j@t<%#Pv$%M?uX=>vfUlX1l29ut;%-OB zwe^C5X%gwg0@l)~SL9>E*6wzMZm=LYtq2klWw*G91Y8#=pfE2boo958ozXYhYO|M2 zzP8zOW=z7r8Bm6a?aRj)G-lT!v##*y-gdr|jLeIq(y?<*MAhwap}SRr{b7^pzC?hb z_?UDhvW#E@yq$%j`>3oUHsj_uMkM+^#MLF*E_K=ghzqgX=S>KeK)*mHr=bUNux~mW z?@@PRk?dkSLr!AEexmN^x?mmn`bi6jfPvUUi!YLM#!3zv(KP@&Ij}~XeW1BQd#-t) zZWazebM_VW+5tVe55KxZc?)`Bma7L$qi~?gOgToq33`A7nDUm>cL0I=s9)__Bur}b(B z!$iWo0=vdKaicf1#Zx-Z8G;3w9~f{0LVp-;*%<=GFm%P_R&hs+(+z`d>qWglz*CcL z%Whw?An-W49nEmw!rlfR6*EHL|mBEC7va7b9dOE=Lv6vep3#fq5N_xE{o%SjezJylyIui8K@t?;CPZJm8t7cCIc~_V8 zgHZwxZ68^$*L*nWQooQ)7}!9sSH~C=ef=rZL)E4}6^j!<-v=Y32#KBSxy=dnl{3uq zZqh+WY{yL_4q}Rgu!LirBc!v(mG#Ruqp8eSLPMq~zEwQ~y6#~`X1#&k2F93B!(B`V zHykQ42IK0n{}qM7f}7$Y`ItR-d%k$RKE1#MvY_UU!kI(RgkJKXW?4jR`UA(AA#BuT z2upTu3B#OAN&Z`_H!S*}Mp-O!n6X=(3FiGqRrC0-drp>K7u zR|9gWYYBrO3_~CcgO?0Lmka}!oYaD1DLUDtk6LR$CkH zf-WUwB$>-#9XQFbK&oJe04bm{QtMPFm@XN0 zlw6RngKR0T&>4;6Z}(m-7Pxn6jpUZAZk=OndkQC+m>5zNl!up=vX3cD)YZA_2v6Y{ zplu6u=o)BSw!9R*>A$PGwN@`~IZ&?^jfE8$MxI6Ag%uFr8M@`m@JOAg7uE2b=&jZ* zR)_4woFvu7X)7yY7k7JH%{V3xI|rji zWq+N@nDv^Uae$MaKvdx)^_uRDxUqd9+FR4d#V(ZAf_kp!?1Yp8b%HR@fQp_s=`^HY zbsP>R^nZK7&B(GWI-~@gi?{n~QmwNZ7+mMDUGLz0?dJ+jTi^>tB#jK6|vj#(tQn|7|{A^^J5= z`Wut<#>dSxLMvtb)cU*9z2yBrTGZ*^Y|Rc>zWw2`BhNnj*g=z5lhn_OV^5l3H{Tq# zo7i>h`8So8tKmCO3rP*>d}U|Zh@5{P_OEpEF*khlTkbV&`B+K!N;?OtNa2$$?Wa@+ zHOQp;!Cu3i^wF2DRVFDY})n=b)iomRkPrdBbKUJI$2okgTj9ukGcY zc@3g>GcoO-N0QY+#ecrdP5pM;)qMA5C;@umW95!Z*{WRIn1g(u+#C&$zVZ_t zpxGGsv2kvGG-MnaV*2(Ifm*cUscmr5={m5%T0BGgrLCcfV3ozrFLXH76J-fAC}@qF zoh+|Q70JJR)mkGotzkw|EiCHiHlp6KuIu#jZI_iXp|z@=?PFaLTS3p-CRgKp=r_J< z{Tex*YW+v?NaNY$j4y8n?wbUCu}E*Hu2MsXr7~dB?Z4UjJ1UD+0PvwxbmyLzP(P5b`1M0)Q$&~sL6Z4voQU~qgR*J?*H7KCVndG$j*!K-L3Kc-XdLfZ10i*8M%xD zL(u=e3E0~o+T^l+^hDM%%}s)&;=Z8}pRYSZhx`_JLFaB;9rr{JAIvf3>?1&e{lvlWC7Za&K-|OW)umXbb(_yt8rL zVmRY()uKl7dv%`go8aHqVv3X!UY{Ik8Vx)icvnW-f}Ve?^6uxWt8bbQ#nq~1Se?Fl zxf%XZ=JIj*cK$xvIEqe?sOw{>O}8w1%86P`yYo>jj7M&XzkTqO{o>0_fGK5 z0~BaCmZ$FFgA(WEePk|NhZ!_4zFS9F@42`VqHB(qycPWYUhc^5gpc@((e({?3K1v1 zUCThXJSJ_t7krp1FN{5JJrMS~dPhUs{tz!ik0py+$&%ughfDGf^jO>b@BUczr=dGf zZ+PsKokVEd_A`bRhe^#t6ePU zJeB};YX64IIeWs+A~!ld>t)6KnNFOm*jmW9n}<3F-<;iBQ(fx5@iNTthZg61u~uCk zr8dWX*fhLUj=G&RQqfpvWE@gBUX8Xd5pC=07BN$7HkuC0>e9HN^eW#i@S65j##Gh! z3v_?|G5vIrTRPQpqsh-Px&t@ ze|W6~kAI}Rd1+%=b;>2u4_9MzQSH@LKU+JsgTLNrJbZB9QCDXVouP`rm$+%EmbL&d zIOM>?HJfDc`&$o;?nPPka|2wOyzXknTf5$s(A|+~kZYi3|KZ_}*D2(1?X&Z7WH?u} zvU$%l_wPe{RARXY4`^WJc-b>L}ezU6Zf9WY+4`Lc0Fk^@F4fx zhn_3r*Zbwa#4Vq5snPjXZ}DLo-6OI~i9KucdIXHaeX7cGs_F4 zmy^e9qtGKmd!JqZdWLGC@zJlfC@@~scz(BZ;$ouHZaH5FT=(KF1F7|fvFBQ>t3Rc>=scE?&xkWNq@oK62K_t-J=D#@i3 zacAa&+@sC`W$=Ede8SX7T%6kRCqu-%e9hiU*$ahPS#5{*?2e@QtU&VfvE<1g*Ysa3 ztli_4TpZq|c#w0u;^C|3d6D~uIwwYow0TE*O)vdiQ3&{^+p3=xFs3^?)^=M1#C!7-?apkL{!+4l%LCZW*hR`(X5iI&vss8QfwCo=zo#cyr zOkE|D{uy)1)b?L?*?YIT?<&kMtHMLy$K#eulTY9C!{oiulPIOxD7S`<#Dx+e!rLg} z=fAWJh30BSO~YGL-_!N%{KzoS16g zxq9W}9p-C>MP?n``wZ!t_A{xIcA|P^s6c!kM(^$h-uTJ6B>OD%eUB>L{K0Cr2sWg` zZTzOeK1T6@NzaI@%bu8X($RgFp1)6jDIOMl=j8t3c75ySqsvVdK0Q*mF$IrqJi00$ z7k(S z9w)6^$)=pv{u}Ff=*nGu#;Dxo7E*4&{0B+7C_Cf%t|*W7iY~>_*Vv_y#IRGQrnxU4 zAHVp-=<2c>E2Z~1O=!uiCF)$lK8d`>3+}h_jEC{^4~(<#+ib{S=v2yn$nXzkcCBNpftbp_hL>{%$B zH0A9R7{6kXt*wNpD6=2@9@0wunW6$saeQ`?Q>S;wK*Qkg1JWwWJ)5$ZelG}Nd%!=c z(uVsglO|2~TA4aW(yL~BcJHezR<-pNJ;ZM|OF?s9g0Q4y0MWxp>QN;w^P{}@PiqMGF-S;MVtE?Fwf1?$pkO$XEt_N!b}VLlbyYNJ6ZU%qClNEs ze%*U#i9eS}W5qnWNC=F_P?U$=?(|z15Ov>mZ*;i!Sy1L!-=gSH2 zgYn4kTIfU!L>nXdZZ)wz=PGT+z1ut{BZjgX-O?Vj9b|s5|I1cTB$_UvmBi;CLJya= z5R=kI>2Fp|!|@~21Zq2h8;*xY^gt$FOY{;5Oa9hB0=g&?Nvs8*(d&r54K9Jl-D3b* z(#F2;l|`_<@Px^ql*yTDlMVi(sTih~7g!79;l##7vI}csY*$78IG>4R&t_Dnrx7By zmPZq7-VVGf_HSw04tPN)o6+aoB>4(0}AiK(q^iS z=0gbFr;FSBO(>Mt&^9GPOmrlB2F@;I@(AXB>7zoF{$BBk6FHlm5v$R$o0e~=-UM#J zgekwLippYJ*m_b-ywP*Uk?hpUG)FLn8houdtGA-*j)8&X%l?6{Wd!73SHZxE%Ct-7 z1RSNeH!!<5WspBS%Qjer|AKNf4EkF+e!o}BQVj0SXrpHP#D7tD&x8=5?{c*X(6Fxr z42F*B?Hy#TGwf#=-hIUl-+Bc#GH-pkPh9&W46d?Nf37Qg@smrUz}iIu*@o?_(d@<1 z9AW~dW-Cc@4gL$Uwa>u)I~(V97_3MkUL41g1WWr2Af#S5--Sg4{sFin0Yg#25M4O@ zqA4EBp@4y7Fx<&Al9zyvyREN%O}T-8(5?V*ip}AqjHU{{Of7E@0DsZ1zi$(J05q$t z(PsKr`|E6FJhyI;1v|v&E+P;E-2bu8(|mVrgY_VLcvb=1rpA@W&HxHPQoM?xPt8=H z4gvvfn=)P&3lw-inh@MAVD!I32$~4oOL(Luhi?y%mZ0OWjuQq!_K zkYDC;sRZbkl$ckJJj%oM=d!SR6!9PE>A+|+QGh9FyuG~k(Kqp3#PNAZc?ogIwoQ?; zJm6iwO<8V(e5a=)Rv=#&tQ9$n^8)KD+s^A0gp=%W`YI)z5f$&{TTo*GsokmvxeQP$ zO9XFX`6yvtw=@%bc>sOIQlKTwtCVI+YRyB+O3>FW1t!8gRWVNYVJ5n=1X58VD2?R@ z3-hGJIGWN-n9Bg#(Ne$?XI_l0>zVjN#-X1~@v5deN4%Qq9_(18nF3EIn2 z5F5+CAk4D|;9Uj;FkxQ0G}Az59$j4`$dBc_3G)mNGl83lR|kmoB@kQ*v7`iTZ7Gl! z<`sx>S`IS>&X$5`VIF`Ia(tfRIv}WwES&67(WsYKs@KBO8^N|>5zc6o? zFwaVury|U|BOHT?Mdin$5@Jymv8WfZsCTibx>!_EEGjORFDA@$6XQ6FarDGE{)d^v z+Vd@1^8jbJ4>N_tI8S4XuMXHsGn-?<^(D^Q^AS4pqSDOh!%TorUcxaqEwL^GK$BBr zQRgio)g>U;fpndD&BIKDaEzrT5oQT6qF0Oq0Phs$Sqk%%g?SQU9C_)`(vmr8W^8P| z&b+#CjH4yGDb~wnphhgp)6)2G=#Z^IiGPeS-s|-55t#G+dRI88==s)u5U=SX@uMwq zKWstvqCj>qf;}%fFcFcT-tmmt8^d%~=81uLfteknwnS;j#sd&<-ym$c4Dy6Iyfu%G zXO1G7iw(Ui%pV>XL2Ew*atmePs9kMaiXfhHxifnnlE93PVa{cOm&=@~m%ne#*Iex9 z%zyK0nlFPrwQi%8fowQhAfC`gbWuA0NI8U7Mu~6b4R6nX3(sWzpgdt_rSs9MF~4jD zzUA1pA9QQa=r6WO=&q5jXJN7zUxx}>y_vU#$BBwZ{{NrFb<6W?oBzZVQyGhDh(#sG zu24kfcvk>Oh+!)leJfPJ|2WU*J^6vVI)J+}z}wzi1}iIp)s(<0OJKMXN=XUjO$pJ; z5?v9?*A|XRk40t2qMBk+DFC7*fR>~Yrw)*;G_zf-6%Fxaj!HAl4g*O0|C2CJjI&dC z9GzwuWn~FSR|_~-JP~!%5|CrJG;^z(2{UjV*Q=kkpyCJ$u|3#4Qt&bmH#*vb<+}k*^;$xpSm)Kk^6r-!aSGmc?q2zyE4};7jwbV z;Q0InVNdq~9#^q!n{8nOa~%LQs{lYrAyhaE!Gj<>~-n@gTPWN@)qv%@R^mLIl*#!BXH39-+!Ukr-(R6mw!)$aYfF%ji;E z9k>j?DF-!_p-LBb;`Qr`Wj#B+Oh3#7Y*|oS5=c4XKm?i$SW`hPxVi)o2nAPyogi}_ znaNrdQ%irD9cBq$$MSdKd<#=9!f2&`!em7$MEC!=33**2NGlb9TIIgB|C48Jq}=A8 z4fpL_L+@Njpy^ zOJA&Zu@4U_L^n*P!akh(V1Z6ynT6kNV9-D8n@=mcdGVykpu%?JTVSo(r*i`qWHLto zGb1b-&YJ0D8E6BR$8!X+l)EUp&78dl`5(9 zParp_AlRv#kCq0YU_ph(9lPe!u#e?1)&QIMv8t5wtyE1V4jbsmme3x%tz!3G<7=7+ zH;C&mI_bO*(|q)~R;s&_+Se*~VI0P>+>9?`1?LyJ3-_ZhSB>eim7k*QmB!bs4;*b_ zE${V`6$me+p<^eFQB;i*GyYzylLYGQWQ;1pXiVTn;jt!mg?0y8Hm`SGME`y*?l`s% z@JZ$~zcA|bfC5D31WwVmmD;bQ7LQXIU-LaMN80j#ys~AqCq3R4XrIxZWY%!Tf5*K@ zO5M2#?vc;nTmJ)G=Bf-TphZqVSnV?NX^^;itSwA_tRIrfGDGdR657xM+P&`%AZ78; zZmi|SC3%4Ck$5%sXf&`#{rgdXhRIVtQfg2EBHEDF5#_PUMSoug2!KADo2P|#3oQLU zfS>;F7%5JyQY@P4R05n#?|wNUYaWQ+zmP_Z{}Y(BDa2C& z@ksnh#MVIo@NlevoxbIQ$lceuVpbi6EOOV5e+df8B;2;>Fv*f3A zi<%O^`PLvexU9@cM5Mn;q~gouNyG*gs1AF&UXuricv$(L0DpItz_9?jsAv_3ydXAj zy!EvvnduHV_vFxSinU*BcG)@N7h{~FHOC*h&PD_Bl03LPRwTmlkDZ0}4x- zt3k8m2I#B5Ag5)_10kuQ-IC{*-1}8yK1T?Os6cpo4j3tvaV(0qz z0qS+2Qxo|>C2~yAeI8Ii{Rzl|zw^CA^AXz}EQ+&8Iz6rJF=~J{k>3{E-H^(RMzREE zz`)YMqGzITfhcgO@jzwFvS6((ZmtWW67!WcksQ~#{^~LF289PnXQtvT1dl_zVHd6w zR$4Vb2tvd-3(>K2WGO&~UZ11V9e48b0twasUBxFd12a&cA_PC%JE>dqz~9FG^8W3A z?9KL0o_Q232>m{zW3r$hdm*aNT@V4N(&$rOkk8TiG}!a&w$94qYc&VwNcGmMETIlQ zS(#@^iG~0y#M!L6;0kvFcA&b|ESkZ$fmzV4P1oM7r{9a6>%va+5R_>5!<+-T?~3PY zrv5HI=Ox$(z0#jOl>NNXYhbwd^~&AYnG0I(PSG~Uba21_C8kZPH04`srcc7uTFfm% z3Uv#6bQOv{A{FvYUgn!Pf%5FrW>4DZT$*jf&wMin-k6)cn@DSvyce|}ak^k-R|z4- zw~)m&){OiZeaL$-Iw+`d{HlSQMc#*ZeXOd+_KLsFw^;@X{h3QAZzxXPC^joNr|Wws z;)7nF(9DA}6$$(99fsqO2gER)KKl8Rcw$Bx>HOX4&wfg(#Lqf9Od}zDURI=DG9zO^fA-@S@|qDfv}9*5mEL7ov_uPB!LIzP;3u zN5Ti;hJy-j?RT%7FEnq~LbU$6r=k`X>NUFmi8y6^;mG`byS9jnA@8%fEeomWsOsPY zyrPkSf@cFy{w0mF7O(kFK6+EhB!^#8;TjA(4j<&pF+ZT2<=(t#SXkAB{Bj>D7WsW6)Mm8j8hWzQXVO;gAB) zPP}&0cz(});fFOj2cJ)o@2eME1NW_S&_@Ao# zbW`!lHO+2X|0{{y#yXP^&+L8Xt)tV*uUuCDcJT9}o~#}DjeBzH?xJADMB5wgYD24q zNckt}9>89Oca@4_;A5k5AH5{}p3mQeH@^3(mnLTgoTpYI-3EEL5wy?rrUAX9~r(;4pm_D-m$(UiSE`p^Aj{qrjPeb_K+&EwgQ zn`iVMW<-k2V*e(|v>7>Wyq!K=)ZO9T`kP;J{f6m&U;9Z!hlApdeC2GiDxEZ^T)vakqJS z-I;kPbF5kOf}6>gFCc?TpS{gl$$o!OJnfG+ z>CZhw?+b@cUi)@N#&5akq&!?;gVsKgX6Lmk9ywiKJ5&-bW*;RFuOFBW$U9L`37&A3 zu>-zJy`69{DG_xq4c_=Reg_D|FmJv2*UsiQLzQ#wk0UwfK)~C{$|&2qkbCwmcDW(f zP97X&NJW8)*^vV~^Y4EXZFoh&-KlnAw-8eps1W(c198 zZ8b8a)U9u1tKS_W;4Ol$q*{#>tmt7*>R`@a+b_|iCo4bfuM=5npBo?0r}@F_ZRzky z;MIYIw2%XK;uLo61N=JfBcXWbc<1%S^R3tQ*MdLAQ&-7DYR04Q0)=a}w?9{Js;d7! zu5Wwh^mZPs)&5l%ISr$fR@*7zml#lYWMd;>(dl`wZqvoAr(-4U;E(s@XnTGRt^I~HxP&O|*|2;^`uE2d?)0lK zqq>dGo={n9`fvtnuIKA$*MZOc;vIFUuVHgZn^CjCU#sD{S_@IAKAm!+XGpbr3@=Al zfdJ7aKChcqEAdhJLt9(h?uZEAAjepiJOL|4J?xVp%1ws_seK^5kKMP#QY;ynxv z@0rw3kq?q#5J-BG$y{ZY?KoyVy;|hei-L@<-!=D&h$qzsttGU!nnZiiXY#IMZ3MOd z)?tf=Jv_*<=Px~;+wiEV5iZm%s?B1iEuSd3cUp}CD#()jm4T$x^v#t2U3E?$hgC&K zau;qr+6I|vgH8vVBpq8MfIY1`qWQey%j;NoX>)i?e@!pFC3TnJWY#RvEpV&s3y2X~ z0%k*wyj)ykCC&0#;DdbnN~a()J*23y#P{Mx)ex309@Ze}-Mi`=cVod2jYh9lcKKQG zho;E6JeDuyTeMcX@4WD;tc`iwn;n9(9x`?V%^T{mBmFwS$e%?|oZMSy$Mvn78xXUu zeCfs~8wN}6lWIAoE(ljR=e~o_9ye(=SYnl}3jVz2ReH!b&Uu8_-hYsgU`3qd_0x^e z$k8?>3Xr|8s~82jrW^=G6CK16{DkPJ6=ICDz}M&iT<}6Om8r;ULWl{-pd@f8qpD{? zPzrgheMtC+{&A)x_^@EO_$Xe`RrwWdNLOW+2o|iToh2s(U{TYP2y;P&C?{}?T=nP( z9AosTcXmS0Q6_JIA-Tf9_r}oWcxI=!hzOQsU7;-VRM-#5%`?SCR{Udn1p>|^bJ|ti z1WM21{gHa~!={K82&HgIrUnxM3++(j_(#FgNj=}hG z{sL!Xt^trIs%I7Z+w&WF)PzanMWFRn<@g)v{E@x0YrO9R^cy^~$@ccUjqWAM^$^4{ zO&(~DOWghr;h=*yP3=b(a4(u47Re|SP3f7wU-~i9ZDjC|FKDHF59yo{K6>SXAcEd| z*LA&TPbMUq$Z9b=YXw_%GoItI^lH^&NJPr%bwROPuYQqvyGQdD@8zCHNzBy%*ZLCf zcVZnwfXe(?duXu8#qe&oebP4Nto23#i5N`yna?(;?4gWq7u^gKW7`i$_fXOAEAJ+J z$(Y$^-I28>A?WyI{d-vK#tTh3eI02#0`i3NUUQoGF?BcOy_t%f-X3FRHs+ew`1JFf z#pQ)dqpCVIR^!9|)Mt=8fBRr=$Qv^_J>qr(%Kh4<^yw8&gw%(& zKFt?xMxYy2W^L+NLN4->3%GGGEX*DprpFE~M{+Zq-Cv}G^?7>i)XVj(CSp%zAp_sj zt3$B?2(9pIr*+Q_ch4G(dN3AllYRHhsOnfgZ=xA}&+5O|(=EzgdPfWSmesG`yE)cK zTmPKp{4A&s`C19Rw-w<>lq7rEk!JOhPT=JMF&Mo3p;1dv*leO{7oijAN0oXaj|WUi}K zs$;Ekkw-6ssc$X51D$WC4P`U_#v?^;0C{N1z9(na~fCtS*WI{F1xUq z7E-__F?w(anD~i}=YE?GR!N+7bwnJR`Srs0s+ToBiSe?P zUjiLA($v9KB402#J?YwkCEP?tVh>R}uzZo6Y1Q7q(CsOhhhKmzVj@3KX57~t-H-+| z-*Y70SE`V&8Ld4+^AYRQ5t!?!h;+CCuh4C!j=tVgu(%$NYT1iowLcr4yPZdRRo~xr zy~ksIb5~)1*Q|C&1!E<%Xw+!OsL{DEi_7`v)}#(Vx(=a#Hd+k3A$4XtwY?y|s^^3G zE62D2W5-{y=Q-z4Gj%V9FHhLuHD`!2>=xIxR_OSPMd~1yVe$lNbDfcYm+adCkKrG? zT;D%upSz_ggRX>9FkqcwR(`CDwI{{5S|_k()YheFTUlvZAsLgixX#r) zi*>iXN&w?lY9eF2gnxwhAT}<{l=atK{bA*abx#0bs;`{#<&)Q-xVq^LlwUQJp7cA% z*@Z^+CU*~K^&8GC=Lp_FK@{npQ5_iQ`v!ju2L)lIv_azm&ku};AqVH{)4e5Tq6Egz zSE8av&PS{mS4C`IX3ta2yzt<(5H0L&l5hUA;cavryj>7+8C;XuZ)p#%)Mbyk)Z>PX ztH)&-*swPkq*8>fX&&^SUBFaf$IX!>TJ%9sG6CEp{hTXoE`$GRK+V*&z1i{j=p9JO zbA~NpWX$vd#E*V=O}|yKbj%iUV#X6t!e2p8}b1Z0M@#nAy(EI#S6U0if$ z%XtPia96BnI0z2V9rRe&hqUxJgx51?)0(z+_ae;fAn7^j?#0*GckO|MD#&WazMe`g zTrILy9hK-49m;3t^k4OI#7_j~>#nKmt#MlOe6;8fXUIAIF2x>f=!{8DzpIxQenRnv zD6Cj^F#YoNFa0e`b30}xdSvH0FBl1}UJtZ}&&+W6L00&Vm3l2$Io7pDRtIBnH3(ew z=|i6;Om3K+(?lDB;ye2Luhio(l|5l*7RCQGVWsBJ+ZHK$^MLE}|Io%CH|@b_2bMxv zlFcslbWMd9i|d!LNxl3}h&TO$nVumn*ek+g#tXnb4YRN#JsX>gi!mFp4-@Mi(={H` zP1-PTExKth$^&O!!I0=N0-&;|dyH?cL>K6;73dM$+z=`=qdA)H^*Db|f!3X>q@~MV z=kX{n<7*wRSZwZ=mkbC;h+|yH-TL0M5w6&IMD%&obbAOR<;zc6fSQm*4b-<$-)vK}gaY{&BE3EchFP0IsKFd(aK$bf@FEN+<+3 zstvhc)%}m#tqrL_wlaot=gKyPdNz2=Z{RUr3yUkMa8JnaXcaxs_eIMUloP^zhNz8w zxP}KhYH&3m+6(&jLxAjj)XxjO>oZw1rtMtWde<0~S3_aauijAnf%&__mVVv2<&fUsy^ZFTUN;%TUYFQ9y_-aS zK{sn0_H=lAxoqYvs_`cXtYdI*O}i&fZ+kAqM}TZt!s2onsHS6>jIT*GTZSw3tn{{R z%BUn(cY7+^2NE9^u{<^A8HnB@9xxd9QXZ$gfS z7hh+8rU;rKJun*bR$IvSq87@VAPG$-24%U&e-rW&u=_e*= zMmb0W@Qm3@xE9oeNVG)fxUJiQP@GYc*=z2r4h zZwGt36-e`3i!(TjMwV_UAkKzPehG>wLL(VZogGX?*$0-eNSfyA0_7;J#WXL}J0&{X zcr5S?!I=GE-(`6l{;aGNWPCb=Y(zQT@xojd>=^ZNx|=jS#g$a+ZyDT*VYF`TSP^Fg z%K5RAktR;uJ-3UBzx76ry{)H8WeFx_e7KK+D_V!;I7etWQsjMEX5A?{xe0%0RMF>8jjcR$bfy+ ze3Km?qJVvd{AiVpKEc={_ZXT;*wZr_KL(PBou%zvJJHRjS?+a++QT*r-TJPQJ~~(~ zMCvUS;-6(-L*{MoW7qD~h{;B3nU*SMLyB(?29g4&FLc)Jae_S+<6<9Cy6xP zCP%bI-7dBxssR#6LMhXqCf;wn=tN0@SESHP!G?`PqOYjyTI_-w8oXR?PjEKhW@5KO zS8(aT<|ID%skvtT&@P&FFtRtJ-!>^&ieddH5csw+-+Z!_>??KPKq+ zwB@dMSGq-HM8N#Hd)WDVX8G$n?DcI8{%duj|1DEU>yyZ*^5YBLK>}y1;-jP3I4(aV+ZoK*m!ImchJM!-DZ#MuBWKN7Lv(3sh{t`3k-n$7?2R#vS{2*7~0s$j5YQUfh8mwvE+!!3q4wlFC@WHgm|+vHq-WV2wQ^f z-z;AGwVZN+XSkm�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 bO-zpv*@!pC}lu!wennp~=$ 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�H25u3+h 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%0A%RB3<^HG10=oxst=z9ym=n5GAapG#=I=9d#pA1 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

$=QtBGovP|B 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

-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

7l- z+yl2~D>R41H@_v2P@gsz1=;GHUf|CZkyck}U#$X)^7{>|?g%iH5bhaQw+Wwf)iche z;h$L_hsPc{^E>DX*KE73A|n=XMILefsA<-AvDWL39&BIHnQ(h{Zru6CAjt9({zTUZ0xGeN06Q;rmgZEsJiO02jKbUv5%d^C)3*1KzG+zaxzzr-#Zo@dY5UA;E$I_!wAxo zUwm1eM}v5#gwu&eK>~AS9k5^0;rV=Kso>^6j=9b2C@|hFf)UPfUM2{i`glvu6xxMw z;W@fMM1>ucqIft&*TWWVp2k8*XWtI7A9ixxx(lEAF=I53o9eO=>5(&-9XL@)eA`ao zD7Y2ZcAzThUK)hskC4dpiz=2=46ziCA^)7g#K%1p3+#iHhaW<z>q2RE)q|r5~!WP#+2_>ACWW_e3 z6PZQd_7~d=qGDOaM8W&m^_O?yHob*|?}@J@xM^W}WQWuQC_FzU_aSAXqcCuWUn6b6Z^73S4UXlH&%^K1L@4B{B7{CyKm>fTH4U%#u)?t z|FDT|tjf4`=aIm}Tk*P%ECjo9F~%ME{P|0?KB?Fvt2xJ}O8CzbN#y&!#S0SZbM0kY zwN3hk#Ux2)S-)1u7SB{W>B9AN_cvFdEO-w#?{c#meUz^&T#C+0 zdM5lQR6^@xwJ!0xXPc9hO;tu#>D&RMh;>t2B~_vJSZI=MT~nqR^FmjMu+(9$NzUn5=E5AiBpK ze@##lJ35VYAesSQZyCo;<`S4m-weM-`Ka|JgEjn#3M-PedVO(H)$GMv2q^t8kMobr z=Mq_i*bpux4`2yOYJMOwSECKE+KM5b%LlPOW-erkvT~FGA&q&b66aTdj~Qa6IoC;{ zSLG0x!tY}<1m3$pG0lMVXW?~>9>UKq6~YRM&G~xHf#?9J`pQQ(eqcan<>VpCav${x z$yEO&edVZh<>I1WALY0yL3h!EBdCtedi%->ZZ;cE9tsh3Girfrf@s~-rf5A~KK5Lu zDPfnTRlDN{QkLpo<~5V}ky@ zPDzHu^C)iy6H)(EXw!mjJPFNByBQ*kSpgJ}IulVqNgtMIuQqHfamztG(Q?yR(H^yG z6X5oQa~Xm)!gAJ{0nO*Fb&j}YWz9W)Wn-PWqyU-jcgb|$sbMRcOJjmZmSYep&P_7h z*Zs(XUOs)qmnHvtoco#uEf1bEXT=2jPk2aL`$)2tExP|T>Yx|U&^q9~0K#_C`CZl7 z5ynECH7fDqVyTle9R&~~{%To++hE%=X{p`S*j8XRSIJ5X(ZuNEAhmE8qiD>S$)kKA zQIPE(rVf&vS%^fLYKK+vDvSe4=*`o*-yFNw*5OV!!@1ca ziPxv&qF8A?=J!4eSk_zk720B88Z_@|45yytQ7<0!84WX?GILQAcLs+d-W2Pv}HC2GHE zq0_NLH$zo^XT4hbO7Q7?bH8f`YaoVuvEwa1!<$SXC8pX(T`p?l#9vYqM9z}@AObUjYWu|zirTybS+)|5EmP<(3* z!Ms=%k`H_rs0M1rGLKy4n-MFVi`V$5-30ikFVf<<#o>@x+8SCcv=L4BA*=&uB=bd1 zAKF;eH$zcDS1HCsMQX8DB(RBH|8uh>#;q1O?W2y9_}8d8X^a%YQVFa^E7bG}}A*{4xbc%U-ol)a!=A&=4tKqDUAR>2( z)^hv3c?aNj*q5Tw3z-c~oE#F*Cy@lBOI{ong42=F&u6^GY3-1kqJDkd&GNCEEIgW< zB_&?ghkF#2n+sCohzFgKV&M+S0pBo>1QrOLTz|y$|Aw0kJf%Y~Thy&;Y5V&++DLog z@eqCUf4XP^{2Sh6i+F|`OK7qOPT5l8&B}e2XK>AVMzl?tdbMbr%QPaufOLDJC}3p| z#nhg_I2^MFS+wB=6jljaYNw~mcr%1@2Eqkt;m12tjc6uau&+TZ?qDyjw>_sszvwCK zRKGFIv!ZG1@%hEiuCS+@alR3gbq*~gr($A8@+^PSfH-dgnxMSn&O~Dz=Y4#J^)t-) zj|4&M#kxx9@E$1p;Sk}XU!o-HdgeQp zf`BqbWvyIqXTr<9m1YPS+cF;LYv=j#87KhL=W^20-cS1XK(4TQuEbaH=s9HuiEF>+ ztO55zPOqDZW-7dM*23@^w~sq()(gl1snF{3buu5M(0TsZT1`{bqm^al1rhf)?SFN432Kcf3U8E z?FMvt))3KTEKXOK4Z_X$!C6mMl7#5mnQ|Y3D`4&lBjs74S9&#O4N*P{BH_5D>hq=Y zzXPu7^awxr&f0Cj|K1|#P^!9kh&^Ybc9D6GLl{0|2dtR|L8N_QlE63X{_vGRT=|u& zfm72lM+~X^5y&Nmd>`{qH=tenf*$0QkHqxNZxcsys7AW%={irQ<3!kC8UiqO z#w^KB(*#$g7!zE(go>qQ9RU*cH|WlJuj!fF9rsFzeeU$NxR_Z-sP5s=QW?wUTZ*&2 z+9;hAvjqn)g(CH7=&oL@KJi+^n8-)%F9?6myBK+uu>@PZQt&mX%UwG%%|j7x4Dn!W zX*(t>rESVHxtvd2O%`V8AgEjAm1+Hw%isk#aQRCTEGMK%RkxhcB$E|TvHybhFPbzg(Rgk~gb zUJDiC0e((Fuj&rNY*1v3lWl*adC)8+XzvJa){wONl2dQ8E`R`>o)_WvVYC5R=;Uom zFI#B~*JDcujI)JPRZYTdVd-JbqTuzEcEp_ifX#96a8114WhmjRvd_m7G9cNObx8I0N}5j%MSZ^^ygoi&O-aibjCg& z+w(5HW4XH3`8bMer>I$MIX?H0HqIGFsHDajl?v8KUgIm@Q z^E6{T($gCEHy31=MAbL>=lWl&x^O^}``KBe5K!(g46#MLHBsio8_H8nCR1Xo9<(7Z z2PL_@ojs7Z(E&Fh6IoP zI#4~Xrdf|S<0Of$)Knzyp|LY@EiPyp1_l!#XtON&JjDfysWJ-WK}f`Vhjn_m3$-ta z`fPBm8o{+beySZ!d#?BvW_wamb*j(xT!yc?bGRYJM`ji+8AH@9h;pbE#O?_JK9)we z1eQhowZW7C7+9lM5n!^@F8b(i$3G&VaQ`ueis|2-F$&Kux_X>wNwaMXxoC`2MZOhZ zH$--TQ%Unyrs4m0m1LnN)~4;zNBE6xJ|$>-&ZzJN(5;~aw8T(pb;cPvxTYW%dNhoC zgoUoW{LMr1>P;Z~xTLwpF5N_Jkh$f*jX1yfk|;gQQ~7@4a-!TASofuQQ$mJnwJjfE zPINzj*TWIfUvvWKWQ#{G`lz^3_Tf_O+CR4dnzrI1_`^yrT! z5Sb>#3k>B*ua7!Sz?co2bDzek?5D$>EKv7(aD6>(pF|!# znPc-rk>|}Sl2<4W3Vf$BB`m?s=TTl}wDg!pjTsPRo0hR=xJ0Qzfo9I+R~RIvz0{TL zuycl9H1ZIGbMYzYD#8-B3T}WR547W#k>v~`cc?M!bM>ewhqP~|@zaAPn)5LZ zbVtC_8SR+GsapK_TF^Sxp4%@-k{_D_O=X+E!p2AKBw@V~MBe&62{Y*{-OIuR;iHVa zuJfob^zHYJ-Kl5h-mURA*NV23>h$PE1MnjTq@QnLx6Q8vlae4lG>w;%3&-Xi26-Q?k&9MG7)RI4?24 zVWwd^D7o`JE%gU&JY=ql)#|kkrrmXOL$jf9{^c6L-nJmX2u3|Bvr3*7l2(#c88%rd ziq>W1PL514%u%}_>BSE#RTX&ix*J6~;-;G>_)p6@$~GdAC!8AhfMr8|I=`Z3288Z-kial2nu<&AhOL+^MJ&$h(yl z_%%3BMn}{t^|tyL*;OmCIri#w-46k^JKfGn@CfEi(Ps}P=p&=4HY_~(k|i>_!;Piz zAX>1;`)vgIH5#HZ*n@CpYnjRs*X%Y)Pnet`j2y|5rnEXE(HIC*fgds^M#Fw0)lFmJ#j`7c1#EnVK9EUw)->lyrRB-QMH8WL`49El zUOc|8wKL&;c@MrR^DS0@R%yv4>JQv!X@t-^=>B(Z}dmlo8 zq${m%;iSpj3^N)yJQIVKU?5>0rh<>Upt|!ALXGa-=wxy+q?m6}KcuM(2WO z){-x8h{tc=2g}@XhS?ewZA4aaHLO;34U9dGIg&gJpEP7^AnmMHhPOTVS3yn+>78Nn zESj{EHj0w9AdRKpvBd9@TqHf8+3Z6& zB1wDud?5oAmOeOHdeRKZ_us&5&0JWEV5F8|HLW^p_(Kgf1bnKCb*yg5?GPVG>prOikW~+{d0RHsg-S$!AB+phb zEXY(^5tu|D0uIFd*!lj7r& zQM~H{GN&#(1qIU+Y8M?r4F}?{*HQm`HzlilE10dc07Ieb4?|>$w3i9i(dbuym=bn& z6>=Ruh#}E|;;<+^>R{+coAaU>qscboqAaOw9x4=t*^ouT08q6x=?g{w!pNO<`hsD~ z?iHYRd-dx8O7mM&%-)qupA|6`tu#9_r5ego;M3QF%8j25*3(adt|8uOE^AI9;Z8{= z-mqsj_<(KRrF8jUh6CLkxjkv@t_fT5rwLMccPFUHo@J$=9zs9`w+B>kk3ellgMlY{ zz!oK&b?8S6efcfXo#e>D{IM^qCkT;eSc;a~Ea`=QL*ba20od|qf`B+44vcQmVguB* zft^RJMxi;Fn@{kWf?+<&Mx9iPp_{RVqz$+snq4wVm%&n~;mg>%qIU|0Gg-F=%;yjD zxErQ&3qaW-*BFDJO)IdO%oH{W2tw$mh{rQw;2}CUx(d&Bf8SmP&i=|G1@Q4NjMy4p0Bb`HrFu6~p5dRH zf?f;}Sg)zktls_sV~DA^JS!Cp7qu@V>}(%=8FrO#N>6}z4>DW%s*O0^m3Wm+GMj>0 z%G16ZbDcG2%j(R)U}6S*7f;4&<+p7D%S;2ulb9zMM%Y16WaXIyCUaxV&JfMHYgP;c zn$|pC6_q^O!80QMMW?3uTt%B>Z=kF)?Z~S3Ob?vuNPFL9r{r0=3l#fsKw)YK7Nrzm zdNWo>fyH|+^Llo7{xtY-(h>sq6+QpD@>YTa z&a2Ta+WJ;PWpbn^GrT)vlZrVOTRvLtqjbz$AQ_QzCw2>`e$K?iX}R8l#Jl%OjC8k^ zueRpGDlW`A<^j(Hx^J`rdx08t+7%$y4toFUSzXz{j}uGS;@u6#{QaUXdno0osDx;a zz0d1aFQuVx<^q=%7k`Z06B@yu$i9EcPEo?LNk>F42B1Rew-sts1V|PK!qQV<*gs)U`AGgcV+)=NtSZ;li5lBEO#B*P?t4LVVKUjF;DiWuEzrBsf5kIIpvc1U`fwHSw|YvCRlx0(!SvR z__bhn4f=-{urs1SSo#u;F9&%XzeyNz^t2<%ST`pNnr*+dG9RdB79QwP7z$JGZ_bXc zyztqEh3L(Qsbh8oYt)v>M6|}&p)3R(xGDRP4be>DvGz@va3Rpf6!xS=ZOxV9aVyjt zGn*@%fYb;|t2dw*L1B0zDFt*vA|9y9#aTH(>P=gW6u<> z7PzD%;!Kf6@_J+OVa?k|pgw;MA*|{jLw_1e4@o4MYFF1EA=nR7cq%$5=1js!yLVQD z|IXxD7}bz1KOK;aCB1L}43)eS8IoaFj^i@2YUVVnRd?A0Ddz|33Fp3j7kJsfUEw7T zZq)3;!6O)dR9i9NMRg5Bl--kWW+y?QHO`wu0zI|j=7Q$7$+jMAR%@Be1Q5Sz2;J=f zMuEf#`3oDIMY|2(hJd^|c*97SKM+uAp+(hGURu!HG96>BfhUKYwGaobuVlAtV5U8p zU&1itQFvQB`+K=I!S2ykYEvceWRwGaC-9py$J2byn^o9@?2dFG?!?KgtabOT7}f+x zy&Sjys&1K@84|C8IiLzUx#%a0q3$Iq1Z&ByP)6dq4{i_&@CMz9&+q3LkU<9YRM9$N%mX+%vv zgbz#BvL{XpPEUE$&kEFb6?=d6U!oh5ie7Dwy*>XKDKTHbs#i!bQ>xfb7PR~A);d<^ z^f87Rj#QgA13|2=QCr{~hB#uDP7>7dsJgk?<|#fmpQ&l+Niic!A0dDt|Kc<~v^smp ze%;gEtGwdg%zqT@i4NnQWV(~iL(wQuER5I+=~~?9&~f()nr5x+{ZA-3m}85fpc~{9 zYD5XpID&xNSwY6u=ZQ8*DwPLS2iOYjw|>AF>+TH1rLQK)3ga{EfK9c{a6R3tGLHrf z%d?lpqT~Y!f<4bi!o7yLczVKWNw=%c@z_-=Oly+~t+xR}T#McyfG6Ye8Mc7i8|;_J zqYQiR4wmQUTA)n8ol@>f4y2yYt%JXTR7*+`P&T$ zR`SkU;KrlkNoTWQ&*Wz&a>L7NN1ILNxGe5s82A74F*b4D@7q*Ne5F#DDM;%E;MhmKzGwe|N=wFTDghnVM4;xbvkQbPF%|498wlTO6j2 z0oq)N7cA5+Z>c2E;k?}`*jlp|v0{u&+$r&oBl>|`^;QGfZqKyK-GD!A#etwQBoX7y7UNhcgNMrjN zvg$M1kg-qnj0n*ljTyILrVtv`9!PnT&8&FF3wvxW0WvapM&(((+(f&j9nD)s*jy&O z42Iy}&B?<4jvQ&)a^u_-h5HgRBX@@pVMj5gGau*|SU-+{ z!B|u#W9ir%dP2gUB?ODc+=<*2db&N0*aFfg2vIzJ%6Ci^!;Z72{;p0R z@OOnzS>Yl`PB?67k=z?uR2>Nw3d32rB%yrCEL12zSqF+t=W?(fLpdp#)UC+DUS*aP zcX%0i>kSZrN3K?TWmd--13sk%?ZH>0A*j)~M$JPjk_BNZDzs?XC^Z-MM0tG9Pzdx0 zJ`%&ZS|5THkjALhOl|y-28})-HN0Xrhsm|6BK{Me4_FH5H~SVH9JE^i>GCio$z;xb zS$q4k#z)SM9v$Hj_+fq<*fM2&xMZDj$-Cbjh%0a>OA*ccuSV+!Qv4-&I9Zh~&w)L` zn^v=0DGEVYkOYArmdHo|_C!5?*+v7Kkp_&dh^vKW+w+7xz>P_&5VvQ7IEhp!=&d1WL2F;k zfh}2B^pDLPc?-JGZpQFK6txP-D3`32aKW=SUu4E$E%{91-WFFytNpy#1%>0i(+sn<`IpiSruNBqZG`y(waSNK#B z*uiY2NLB!p*Y~1Vf->Fw6#vi1D>zU2*82uU_BF#WvdS95GVe~;-ek6-Uq1RP&F{5b zumX3Xv>zA~cttla1-|UJm9H2b5uo=z5gPp})rh_c`w?LPRsfMBe74xVGP#`EW~Yv+ zl@m98pg@w=9G0n<^1%8^bHg7{o5WC|mU~^m`5DGt>O%;ZkR~(mrXVj?Lc2s^IDcS( zAU6L5ddmm6F$S0S>2^M_RS-U@-M+WSo$iV&gipF}{V)inx<}#vA45jQQv<9 z7@jSJke>WCWRLiOF{1kOpF~5n7;9?=T+JK)0>WoxZY(ZRCfgRzfR`(G0heqs=M343dLv+X({b3!fg^HCQH`bi;NE?B3FZh*tA5DXSS!kMClW93ON ze(?rqZui0=Ld9FHV5BWb6>(K;h{_xIY-a&}ME~r;C-^;xY_K!KSt*2=JCQE0aA@K||D9^fZ% z!v=H3IntKTE)rX@v(A95a>r!Ds%2CnI27LMvM|qPpqr5$;Rf)5lXgkIU=_G)3Eo{r z*Nlb4K4fxviKi7=bp+ITwBZ;g9y@yxRLxQ5Z0SY5fe_!?#>}kAY=;d8h}OXMh4^wu zrrS5wS#++{tEWy-73cNppZ&rGu@U^RG$%eQC9`EEu&*{vW< zYF69*<2*C62*j_$<7ge0;I%(kj3?TjAi-D-{G0)9qs-9-N;-4nFli4!JRGwX$>~t7 z_DYQMPiDhf9q}31X-9+}{ne`>7X$5bS!c1naB<4_0jdis1tb6FPav+iQlBklRj}}= z|2ZS&odKX9fdZ{6|2_z&aTCD*7ndOAj2V5QYIL{cjUoc9NBOXy1IVr_H;dQ7AN;pA zda1hXdVE{C6@L{?um0}$sHnHWv;|gqWB!W3 zi&E>3JD(otXFjK4slEYyyFo&_WOwL!s?DfduJGUI>J}>!n1mmvpg}P4_Gxgo!c#fc zo;(Cy)#c4RKNYj4W8x6kUpL7wW3b4rI3(4Zmm zG{lziD!o7q2v@>P=~na9yQcc1RvG ziqVcA7<%Ptw}*IUY-!u&9CV1GPoLNe`!~Wj~>X-!Wk_G4j!T)ngJ`c6j7b<=qV~Rj#&qKj5 z7PpklbrS8ci$^dl*)!uKf?*e61)0m}0EuUs|EJ*5V)ixaHl5AzY%YQ8q5WmeLxRYn zS}1+`)HKFexOmY~a>f<5(U`FO=If_9gH_t;9|C!=nqwrm8_OFDmb7$%%q8LF1&3rd z+L6iaNnZ+Pgs{EVl6}RK?nsb~X97q)`!0timqWuKG{^P_-3GL6nZj2PK+LJ*&p?P9 z0;}#CqOK{sK(0U)o_sfdAto#BV@!D!NDw)pTn$uh@OVzM4Yt&R&`C_>(5F0^lg#a%joXfO6YCTCrA1c$B z%uVQ(v`l(#*vjfC2~)KitIw3WsmiSw=IR}p{OKdV%yyF8N#}c2{!lm*vgY~Nc2ABw zeHo4v5%a9Uif=;b^=Z^RwGtb^s>L=I(4wc>S33neLn)Ca*usGhtQq#ffShMW*Em@- zAZnL%I>i9tFMZ3kT{Jo@^ZmD$pi*H92n-ziW>HHAtJ-=q8jL3yu1 z8EV#}d3qNe&tdqAq4i*7AzPA6C!ryvlKK7%lH&`SfkGd3m}IrXmqIV$+GvB}BDU{# z2avkH{>|)h5I3=<8Csg$v>NTm=KIOGn|#z}l4d8}e^#UN>=N7OYEK94dfXw~l5KC8 z+`8_!mLFMnYqTLC@Y$heb%c;kcskIR11DXvv`i#O!9e5rX}{yK!+maDyQ`u7t^iWXw7U3&ZIlwGHgr!GthRnhw^erKPm}-S)rE^ zd{f7z%(P<}f0_ag5&q-b9f(_jh;%lXw_BVrl~lRH7Iz_=;W|C^KotI!ACGu#sHlo1 zT{u1qNp1~cSlp}T6y0LGpdW7sNj{HI<+@dhBb!0kydqgb zol^Dvzvr}OLHqHXWXqQ%b5>ypk!PU2u&GhA2^bsfUrd!8cr*K&1MW%@TRx-N(>TkNr%PWvSOGJOdFTGWl<{RTAnfK z<|hPd`DjrtG{il5HG!}DD-9v>zOU0Ug#>3|%AdEo9Gct%mUNx^PPW~!K65Yk!MWE> z-S;kTsXBPD>iK~`ruI8K7u-G^eCYbqqoIf64{!3*WnOOQQ#c}GE5f}`uG1_^0i9AS zuI^0b4{BPA2346+&0nk2a|kcKww=`OtWF?hgw4x(bOY>Q`fkO^`ti4kPUt(d7hgrl zkzg%qegpId<7k6sM)XhaQ#7flN==-{?t))>)lmjsJo7o`2^X1-D@ zEm1NnQ}a>Qnu$`Gxn+q`YA8Zw<(8&A6e|^K%dBmK%G5|6xs`&LY)`gSu(;?dtK>Dr zt2}=5{rxd8_ujc@=AJn-bLPzF%uM5VjoHSeJbRX?n*|rah4eVRG zZe=>hRe=#!Lg)@-ye_dr=SO_lKx zT4K|2@(r3b?Ah>gFx(|%?-g9LKMmL1u#umc9z^Wz%7T}|g3ndBDH6B&Ps2>&m8nuU z1?BcVXk|OU+V~5JjX&(p2{T{)-XIL+W^+zJ?%|zq6*MUtUxnDfy^pZc^&|0cL_HS! z!BgR=(2~R8myUPXzkrhBL%CDfb2zHuSE8x6n32FZ{e3ktIK*GtjZYoo9CF8&B(n?9 z4yw~V$1S_zIkvB1e`wKLix{wHJ{!p5Is;kb9={io3yDH> zo&$cb+|yuRb?VHSRu=q1s@;L}yJEbH5l6dl+;q_=CAJ-TcAO`F8dkvBZ_Aqj&1kri zQEr}%6!@XA<;IiO!VOpJj5-J_q1=7kDI}kOPhHEq-&ki{3Rz99L~rIAR2fn#>uG0T z6mkjT$n@zUBr9a(tr}ViJriC8pOq&mPd-NWK?1K;*>eOXz(Y3y&V|i5_jVyU8g}$k z9be5KDP90QaFIhRqmVC9bRAlEgjm>hZA-{L_yyX5=V`S4xmH!+#2*=0 z1wDFPJ0;OiBCAN<-bavtD1;HaQFyhqga=m?Ae-S}VhujiojL>AC9NKg7^(I-httK+ zh9+xh+qv@DOQd=cH3*r0t^L5+I^!YOYjMKo&EP(Pp%W!he29fH6PGbtCqGe~6a(ka zXkt`<|K*wB0OHReeBL_!IwytdelV%me1u;SK%j1WWnzw1yX%h zS)I`X3Xo1sRI^|-BcRgox{w9ev2!P*{9+!gK^BuJ8JpP-q@V{9{l*7N_$bRRP`upv zNVOk@5{Q^!(aBqNKd|a|y5vT|%`0gPQSB-|>msWS=JyW@HEX9fDt41dh zYJx2QMHxtkR}aQMomgRj_kykiSqM*a>m)8mP|_v8HC3Q@Qpzjj&RFlMfn_jRYN?48 z?fA+lXZp}E=NqAIjp#E1MrrD6Cvn2KMFBNOicXED*K$YcL@1y`5FCn2Q96BQ+EkjQ zC`hE8holyE!g>}gg^KF%jwLubuUp!1IKvteHo z)fQQMt(e@LHf6o9$zlt?u!=^op51tOqhXl0m2%_4Xp}T(Dv3t;beQ!*k~7u9)Q*SK z+bIMV&q*RwBuZ54~zzc|`Pmyfm&f-*{Fzi6g#VS})ZLT1v^6O8t*Tpd7~bpL+8CU5POODa)n8L4>t31v8`N z$iAj@Z^U*nmeTV$SWZ_kO=FIvqZ`XNFwhZe%?|vo_~t5d@x(!849R+uZX8^ChiqCJ zBmPyKxWJL)fvgFZ>V-kq$%XFmmbI|AOKG`1{zLTSL5W_d4uz)<+qG|j_b(nu3Jcl% zHBc)}buN2Y+#EjQLxPIZrTWW)PjlN!xThw!ki<_b1aypHgCoIbY~Mv@d8PW>8kps0 z**TAo!d`;%jkg)v(UTse8Kf?8E%|x)9piEMyPlZrNN^6Yp-6@q)vyKyJ+E;wZ-9bJXFy9jz_X{Tw; zoG5csX)O7wF-H1=#5Q`7sEM)4U%1n%NkZ848Uu$NWaz>vks|!b&bM49E4LD-`M#;T zG{BMi$NkYGQ2lMPcJGMZ;H+A7NZ>;{!B<^z^>G`0{Rk3j3e#sI)o{()V$8mN5``rg zY(7F-N=ighzD(iFKgL_ap^UccljRJRtLimUDfpdCc-B!8!2+0mBFKHn8j+A$E;13zmrf!Lc1ZgZ1 zT!pZft;$~}ZDZ*Hm88p&Lg;&R)m6=9Xj5#|3HY~wou(_&Y4uk%2jFEes`rY3|B@On zHFV@zWx6UT4}+w7Qh_%~gtJ09DJT~;(DhieA8G$mb%wNh!#e%(<_gPIW7SO}`itqE zazYL*apvwZr`6Z*z&%|<`mM_I=*wWCcJ$(O&YGVN7UPwm`T zaDl{4hM9|{XHW-c!*J2-++QfK20!EXmtcPB51Z?tFw57%7i>F;PwI>Z;DnFWnw`X9 zi{OIbN~bDETxWEG2(p}<_5ASwuA6ENvW>$4glu}e2jvJ8H#QVt%p}WLa_|WM{r-9_X%AcQ-@JJ0NkCMT<=z5*raTRL7JL(gT4_#!qgS{88G$^hjn{l! z{;O>K@cyQBMq0thqvLW6?BT-mtj2MeKp7l>s=T`Sba2s}*ffv|=V_*9;rBHS{FYWw zmef@LPrhN;J(k-Y&m`aZesY7OV)*DbZuiL<{LI+%X$8N7Oe)CS(jeQTpV+qG;?3jW zyu_w-Zd$=IhRRL-nfSjha2ru*-OtcY$ucz$o&~=O2o&D? zUi98YVHmjx6}yc5eF>+!)k1gEtsi+*5$nubBR?Atdf0+Zq!kFNok%RyrG!#;-AJUA z<5VqqjDRZ4d7VVx0$~|i&L8|3g^r|ypj1(BX)hrtKIT3Xd_Sx zuk;v#os^V~Y^<|FO+xcg@?y|x%$2xuITMT^fqy=EBP7pu946b}&22`aBkZC3Q)0A4lqnCr@pamG$Bi+NDL?k*!74r6d zJV($}DnAin9xG_;rUftzcXmV}6lid<4JsmJ_hc(ms;eCM(Cwwsxyo6j@yAj;Q}6Af za#LMONq4twBJKGz(R`6Sw4ebunp2-)*_{J-L#Hz%xu&QGl7gNzifRP3zMr>+JotU| zM-W?gp8N+?+eXi@yj`8C7`S6zM;yklj8#VU@4dPey!1|DE6WZn!A+I)Gphuho<0r= zZTB3aQ1rkBM3#Zbu(Lv&gyN_0M203q&UZ8VSsJ~G_1np+fr!%zKPp{+3@8>{YVDkjf z*}UOd*DM=3xbhcxiS_pYjfY_HR514sx({Qt^Ck;E2o-8tW)?~Gfp*)K;r+f(L7l$n zmdc_m&m95HD!QCuJZq5Tb&wZLN%bL9!F**vIo(i&prXW@6cGkF;b+;rgeW95+2dVw zx?V5MEs2K=bNLaJud<6!W>t+Qd1(l49Pcq}%(j$BQIV(?r;a2+`IJ?zptag4V>Xsw zKA!zd*&ants3QHG!PFLFXo5$bsqZf0bm|0}TNLg_5MSATOQL>4{ok!H$=Gf2x-t;E zB}v-BKDiP+Y-hH2JT*r^>(k7?uYgv%b+{^~%tW{)?`nREtKoIjc5eHN0w`bD8^&#y zCP4W$#vNRRTn)AQvA_S`+$&3P!k1a$JVD@Pj zzS0mcp`tTbgnoTwP1+`YTO!I{p+4cuM>Wft89h)Myl(}y`NMAWG&ta}$Uu;;?;=)o zyQmM!1nN^)8umEroW|Bnr)TusUP`Lk7f+4-Ut93?8zIi)w?)5|Qbno?ar#E(b~0cfqp}^Ux8*hIpl+#u@K3s`}hr!_8(*LftO0x8{PRjuP2-CV2;V zUg}C!2fS0dLo3ty#W=O6HB{P5FlkeJYQpLAO5KT`P_6Y4Awb`dPl5C`wqhTR9 zB`=6!S&eXeB`W$v!q22z`!1E!>LV;C*C17X>SpUu8EtK69Lx$8Nf~t58sU(;$ z)-)>i`9vh#ewgwwPdYX3r$;+eH+Kv$(<4Qh`r(*Z+Qg1nL%QgdaT%CX8+f`2Uf!2g}OJD#rcRxgYiJ~bKqbw1!X zDXoQ}TUhSog%IJ{IY^xO4SSD!()>XXaYrmL=ow#8M|z>W!>*P@MTRK%z`QhzD#~2?UG~}y?K)+d4PWxZ4xNOa zq45sX=(76(eDkX#NHYA4h*pJ$>|rN`xLLOKFS`7B_;uZpK*3U4atlrIuz$^6dMwf=hNHHj)D2ujEz8??>92X(|f+6Wdx!WoX9-fGD*5 zp!zm0F*ugf!EpL$?mz19@-*WC68wdc9#=%(?ABnnld=>3_>4w%%l^P->3r^AgzwTPW%MA4fGKw(o#NZ#EA+eH5e;jQJrEL`5n}u?>~=Tga*GJgxu0_ zFHS%j%|;RmnG3HvHz0MBl7y9*Ep0M#6lG0Ug-?rOFiH~??_o6IxW+Y`tWKZg@$qN@)U0k31`1hIS`x`_g_FZve92)|9UwS**C;2XQ&^nA|1J% zh}z0_(oJ21{0bAEd%}nBxfNrEmp0V$p>D|ZuM^B*i1V%rE@0A^Aw7dWva#(su>MLk zvJ4u9gT`I3t2ObGy#DK&7D=&eJUC1g(O+FyOum7!wsS3~53owcHx}Nj@tH62VNRr4 z!4Le(k4-1tflLcrvF>BT&P=hl37f|duhE?yllnt~0=6J*RlGbL^6=guBSH8G!Bjf8 z{?F0Nq!=GZQehR%hd$bSUs@1hM_z(NUeis6!Qs&9pe?Al7pL!;Vl1NC(M`}jhV??% z5wE>CvwUiR>rQ&iL|4-9rE{xyQkb1BAxz`Z zPhD=3REYmC2@bGcNxfpsa%nIwBh^4vlpQHylPAXMJ~Z7*v}-KmshkHz-6mfsim_&y zaMgm#-_`5gu&h+fdBN%R4LxjfOHV)x&6;NJOo2AScEtIlZ6th|o6cb@;r8RG9_nI* z%wMq6N$0M9aD?U-A%1NKuP4@0ePrt?d2!4m11e?F)x^m^r~E_;r%Z@N!!Dc8^|@}JDt|#!KxT)Li7`Spx&U>Ea* z>5Hq#HAXMQJjH|z5!AomK{vtlwh~fng8VWhv8Dc^Yl8Eo)yf!@r+R9ffp;F8Y4uY!$gq9ZGcI8tH4;CRy;GU&B*+E^N)~@1wnmhKgvH1RL;wI8< z0bUh}TBEM~g_%Gb4ad`U^ryQU2{n|+k-4ovnJd;te|^s8$;&#~BN` z!I+IGij#E(Qet){*qeTL5$8;Lz_tInLXFTfEDf`3GO7XejCmEy=*5vZOClU~IOThS zBz}!8l_}u8AN!FM518g=iC`z0`^G!+?nI(M3v}HzXGm$RUW|rFb6)F-{q4 zarSwjLsT103y=lLOW-D=GRL)C-0m4p*XpSYN%4H^HadZ(vx&7YufSY83T@J9?Z6~d z_wE)nX@-9${m~g^TueeE=E3d6LZ9vkN{OI-*a`1wct?gG!@-~M5)Mr}js`|UZ3!xS zGDhkzV1UZ@7D~!@h!6>lk_EO@OP3rr_9a8F4zt_bB-#i5W;;>_ z$^2<^NE+YWG7~wBtWtd$Psu3bSW7&BStnDLZ%yO;`|HQ4X^5*-W~#+(FDquKf=stD zZV8UmU%p<=ktRrT9=nq)M~?8lND=&yQ%+TK!p!fW5t8b|r1&b`!%}CA< zZ?{`V`3EjA9YchdO?{_K!ZnQgNH%E|jD}k7hC-8e-EF(6vG5`oXA_3 z0OqS0E6_clj*;ge2Ubu6n8sv8^fnA4NKQ^10_`tYlP(R@m>*v>p6^6AUc*s&!_Z{G zaN~b+f~Qy^XQ}S*5WUkIo?XRht(~jn7iK)M=QygW=Q^nz#&&$S7k|l*fAayl;%qs* z8sRYvl{-=*xNb+Ga+!X3865pqmE(ro3ni|ySEw|;L{l;=X}tRw_)l>IHwtAs_+Fh^ zCryy)Edg-<>^tPqTQSzZ`3^q_dz9aL-7z1wL4 zYf@SM66%8!EH@gKk->7KQ(bh~?<8Y~*<&jpG|M-n%D7uvonMMcDPwA&!Mtml4-h`8 zAb{S?GSuct!(~rpUgAx`p-OQs1G~C?FN#lTHwD2LVS&L3Su36Ep4~Ip5_Q#-SSF}> z8NZU@Gv8Mh4HP}nfkV<*X~Ew+fGS8Cori>8;t4m49D6*)u_zy1Hkw{9nR*io`7Ulp zt{7twW#$!CjVP?m=e-LxN=fZz>KLcf(&6i{pmv)wT7>q!0L*e6CxyV$2)SsU<`-!6T(%YtTU>R?o|-bWVk;%Ru)!`IwM+V*xdr8}mblVlD@W(PlPqz;|GEIlyi^q& zsfJH~R7*hmDLH_*M{*YH~S6C4u6Fzy=kiFQ*= zNlrldXnt{bK}QAkH{-T@R9{lgpq$Dw&ftsxbl^E#=XOi56{Geo(yA!-K&W|@265nk z#gT{@2G+-fq?xmxg%I|*shqOMy&NTZE{qD<3QupN#R_B-&Vax? z5W-lw!3U2j=0vr8-2WN0#J546@Gdy_R;LcO0&9Q;doda%cN6rPYY(W{f{*|L9=sR_ zFIrr6Et1kKkSn9iPo8AZ>yqVw#O1nV0x+4sc*~W04R6|+vJHNeLuTY-k&zd55Fw&v zi?lI0S<;v+1VKT|X!#1RQ$biF^UJ_O>9bx`m&^e)8|#wWJ%{Je z$aa~ES5Q?X_DB+Z4>m4|G1ouIu;({7eSzZJBs{5hMD-~r$AOChc$-7b|a4^^h#Ohn;d z3X|hYo;GLvvdEAdeCVjcFRJC2#LtycY#&o+vBZa^%QS99xec$``(Bv5_wuvm`zgB& zx$Av~l;Gfvk>R0T;I>JcAT``{r47iYhF3w&5iR{mpBrDk){!1xp!Xmbbn~NTF~-r*-1iz>d?sW%Ke?fWTz5-vqw=fY-2+k zcv-D|u^V3hmYd);od51EcNHtQF!QM5U{njG@yY$u+4WQ(U9p#BKzURUjD)}CDqr<> zuYdZqpyg{xOLNBYY(s9e=ZKO!2yW|tKrW5;=Ou=-6(2nb4whY?8x?Q4KqOW*Jn^`3 zzM#e1`-_sh-vyNEJZ3v=nW8Ib14=Oe#T;YBM*;?InGL9UfHWI{7#%sPAOc1)RZi+8 z13iJBFLEI`3~x$1n(&D+GW51Q(5&?hzDT?2Gf1A4@_d+F+ zkWjuGFdg3^Onw1wYiGh~ehYr}MlhEwA(6`6pBq7q=df~xCypw@0jq$p8^97yjJY@O z2>;;Gdh|qxXS1`;Yk26F&!E~O0grw?YRJ9fIjrQCz8x99z6ad)m&ynmWIm6pHt3Jr z$G+7CCw^{}zvaFFgpM6e81)06x35i@oFi@S5ZqVm#}ijz=4={gP8mEdOToRWeK$9Z+h+d7^#Yrj4QwDx`!CP#xSk0*Z? zv~ZoNUR@RFZK4}z`Q~~iftK5w2%et=wGUQ`G(eu3o@jHTTACW7M5=69^j4MhXU#k8 z-87brSyicOb|?M4?FfH9DSoh7z%ZuY6WfqHK4FW%e90)^2ha8+D3`Zp4P=@z z&Z@yU4Ow^3G9B4+4g2urwis)+i-`+u>Kb1R*WWg~LT}(g+CumrjJj5mw{x9#IKs?* zk3B=a_wvC-rkm{aHD}nD*-4yU15#jdTD%8m$nk~ zrb@!8oXGL!hqqxxVJZ9jm-cK++4J>{l_WjKUu!yx34_6`Q;Zw($$9jyc)^Uhr(VXUYKymBxP#XM2u~pB8tNKPE zgH(UQlazCb*SjTT*O0hGa1rwAiKQg46Lo6nD3MCNj`^c5F(sP)?Ex@dBlUjN&r{H) zl2U3UdySqNZGMVrHg2VCX&baeglvH?%l2kXns!s?!+$tMBf$2bMydP-3J9Z!Yo@r^2%#E`_WY1y zY-q^t{@BxHg40g%77vKgwd~?iHct{=oRyb)*WT=!GOof)zx3w+w5N|IFC`}xS_8e9s=vQa<8|%n2<0Lwt6#HjeG0a zz46WC+B_!K9vL5#5PAqKw3~Qq)5(pc0r&XwyPTd-&6<&J($S@c;o~tWyUNCLq3G1tkRA4(}}k5%A70s2w>Z&8rjBG zzvn(WJ}^s`TjnB8>R?iNFC8U;zsSik!S{BrTMFxkEf3w8|hBGWE^m~!`=i*{ZxuHXjMj}Xa&iipLxnv zk^S4Q4?WE%X=y>>w1g6W{cW1OrS*91G7@%$I4cNoU4i#6!L_#sANtf)#~Q|MOWDT0 zuVCg?2KIGBv4w|Oc?^rI>EhJssWjX_2W7eDW1qUdei$UHjt$-09I~(f=)GujV`{A+%MJUR#sD?2 zu;hu%^pFm8`RjQu;?PNd)z`^1a>oMVDuaQa79<9O%Y(2|qrFMm zQ&7`6@HY+DzNq<+FQVF28BYo6&ZH+V;}1#hOAUYX+*IzS<+r3ZJ1kUJei@d>E#Z4zF4 zsqUa#vvh%b+!UjI^N&3vq|2_4bbq1?%E`_Du7Q6>*hi`Gh~lb7E5TQe=G~Iykn=C5 z1-T_QopeR!GE`Fw5kG{hIRqCft`3t}*iYAtnJWn0 zwdCYB^a-^;$IMO^;)OJ#GUvg3gFeu@#;e2=yR({`rh_5vDqNEw9UBL5K_8ocMW)7Sz0G2G@et zO=z&2=djnO=Yyo+PSTsJm=t!)XByr~wNd--xmbDmp>o&!9!2%RM4cVL7@{A&AM-?< z;!DNTyW@XsN^hw%r^bme6+Vi;6U{r$C33s}7P4KTd~%bcCFW~U!usz#!=ZfyT$o|} zP8d>h!}!x0Ui%j!SjWOUDAZXth>55&UKX&(#mzgM0IXN!j4a!Tm4Sou66OP0F)L~0 zy6=`#4%7op?$o_b7PEWtR0AF8nJf9t85ir48-QYH`!Q+R$AZ7#D#^rPbH=)HMf}X6 z*(d%>k$-^lLsDY71G>_-k*P2A|NYec@8<*fImk>4QaJ$j*Z{6z89prJEI5hBeg0Ja z{v}{~bL^{<>rwr*`F=RKivIO0p5VSucW4bZRx~iN4#`Ktt8cOyaq>lLs5{yBhm!k! z@IQ6ri8~9i<>%p7H;q3>A^bSe@(SwZ4gzD;YKo?sm8ya;(~of$iM?T%KfA*+=!05Y(orA9ejWzUsQt8PuA+NDqR($(frVA{U*k3B zh7sjs6Lky1j1%R@8%&AiI79kE{)l`Qz=OUGW`F$ki^|M7Fcp>rx_`y8k?xJ63sboYw*9r`K$if$yNOL+M+ibGVa!AdKmQM zXJC9NlJs0Wo!YZop1+#9u){Kk@`Hf0l{OmSxKD5U)+8C5}D|4*UCu4%#-UIEvB`rRQ$yt`lLW&0Jc3)x4gUuc*tpraEH zlYe+Ww(tnWXbLP7>Q*q5Tp`EX@1_u%li&hP=er{Gd+wDy%jn0(SJC zqi@dedE#MbjQ@7<=7?T3TLZp(8w>W?jKtnBQoi-}QTGk;1&u9v&O8To)3fGrg?R1| zdYajHV$UDp@^*kG2nmS<$i3afV6>t&AA3$e0%lIm$nAq|K1bEx(VDd16K&H?i(TjZ zyF+u!g;Q@sS|lx6IamMR`C$P^O9xxYe||~;XB&+6KeG`uqZP1=Xg* zhcF;QE8P_8fmr~HNR2b)8*x2K)5JXhL5S@hH|ICC=5BA!Q*|ZXFb2h$vr~9o350v~ zzg}%gZ~`6vtM~KAczGUwHe)Bc`=qQ%-Q$VlL?JJDyE0}nnDtkF^Yi??q#?^?BRt+F zF3wk;%RiR)ZK}HOM9@uDL5p3Gx9o)0!)+-;>Iqw1f#6;T!-G zW%*#2cM#6QgDki?48g6oNS2Na7cS@^oPovXcvd{s8=dy~lIMzZ@)^|mMormBw`Fz( zb!i8>p~B~#6mJHbRNrM5AWd)2Hiz2J1M@tx}(@J$x5JzT^Zp5hCm zwpWo2-137g#$uO8{;hTtjPo>b+u`O?G1KXoc!Rox;~edXA1l^9LHmbS?uGd2|A@$ zSe)Nu|K4qxzFIuJ1AEM!Ggreo19SFw41^)C;zYOr0~{?GtHU;>22g`bZmL>+n3q1G zodi84W$M4z~$QNKkCJ1ejN2&o%voI zWkChl=4!)4Y#(s`DLHSq*6pCs@I3#dm$vsvqAv9AK<3?n*r?!~ zd_E!FkYdii6Bev65P9j|72>%a*bH}ZW7QO8;^pJuAB85+iRkffyM^ZaH;n66Q>Rrb zv~AO)f;Yy=SH;P-ESQsI%mBqQ?qq-NFqVOgnqTB6>9cuae`FPmTl%IQFW+-_VEZ@s zK7TJgkWS`J<1cG?Ix&7T5)o&t*el!!U~cWVa`04BbEs*wulbzM49+Z3*^t6; zJpjO8rwZXseyGC%e36bE&D8~oY1*lnOO%m;ZM_upuy{rj_D{|fMLSnRxClqEV8a$< zb{u7Pr2-t`Ak~_WvGA^zedh)UG#(wf5mKZ-(wbkM)HL?>zDWbxZ)ieG6?&^O=3LDR z@G3(`iz%@>AXFa|5{k;FVYlf2&FQz6<%j*=D-1xqR;3wJpHPL@9xA(A{hy<6=99Bm z6Y+MJapm1!anw!ksm~vq8mC$c!iYlDMKFri+O3+LQWQA-nO9n8o((nL9y>7SJ#(fW zGdE-zxuni4zd>G8fz5QsA3F0+zfruBA7Zl}AR{eJkpE$F_;jQIPWG4oV9CAnJU3(( zd!C3f^hTYl{lV}*$Dp-sLi0b%4W$C7##j`5ij~c5m5^#lD6=z<#+VZpx z9Bo5cSV2|oHe0R6F6=0tuP>N4LAwdgKL2So_JA$nmgC|1@K4ck&M<2@aUTzOH(c>&(eZj4qTlwEj|3xAz`hP%5uC6E>1DyH&4_ngi2cXJ6qR}n zQ(J(u=Zo5tS7<>4--BKEv9O>m(YOI<3+W79Wi^D^M{wJxt7c8+F?g(2Qo&7jSzPR^ zKtukqSA4=i8nomv`|U5;=1Ja}$>OtlKcESTx-b2siyw?@*~QRCUFrG{2fk2Q#OsS9iA>Oefud&zg6{sip+W@r(MVbNXfI z!4zs5e2MWsvEa6t&5Db~Mg=SAD$jwapWdI`_}<@EFk|8!Yf|N`^R9iYOX{G8iK1s3 z&=>R@iuEb$I)vuFU1s?84RXh7gT4&FE0I+YPfB6W)(2deRGhIoOZ^q}?5n9ODtOnR z6cL3nl?&!l|0OoqowzrU5BoBl1Essoned&rmm1F-Z3cN0AyO6B^>41U!>7eY zTfVYv%`~7QuwX(WISA-zoUvTs+m`T9ng39EJ+((m*dmJ9(4<*T4X)Y}{D_sm zTUz9dIu-Cf-exHA(7p7z6})L0>wO(nk>g+!vW|cqxjw4)ub^8nU)`)s9tm=XUQpM` z0+?7A>|ZA!uOrvhLk{qL@p_F7!1qA4X@4vC|E*NqGsfK;I8!HVmj3WU`3kz6)m4v)3RdkKLMkx{t~qx%eH2p#;r~Hj zfoEN6uU5CyTwi*BFp5%H>bBy47~_H4v<&>02hbG_Ccna%bglVIA}n)G5tkV&pjz^F z^Y3JxZWc1;M`(+H&%(V>$-A16EnmxXq}Au8#-kA3551qWZoo`U6ut1P=`b)uy?@{TeeSH(2TyNA+Kc!Ml%M=z!wusOxFQ zZL?8L&I%H;i5|;BRQX`-yLEn;1Y2cb(ViHyBux#=6f`t%*o^@V0h%4l`FD znMY78Kf?d8=wp+fR7_7_P72LX8Ue3yo0bW0bk0pLJA(36T+E#Q;y7Vkr z$o`T-<;*iohVKftz0J0g=6EwIS(A#yA?#-Tj+MKfyGI2#`t=HDAa#q2e`OBx#K+E9 zV(lu$p=I}duXPQ-x%%li@%7&QTlJk4RiAAnvW~un^?Sgo%68sZr82`myVT5FD zi1ywO`cn<>{g-!C75~4=PH*oyx7u5AL;tXy`qG|9mFEHT z2;%Y<`TQIC3c3Ey3gjdM_mL=|3hNFEi|z@+`@h)5u-6pnmfU3Tjw|nRohy^QFTX(j zzPwNEywFZNduIFaJgauoviW6G8<*LY7q830a9xYk*+I5;@|NRSHjWCmKU1mC-pH;AG%CzQOD)yj#;CR@~ zqEu{pVBmPm_M%j3j%VO_LH*fO3vxK?zhch(vh1_Rvr5DN{Gokfhj(BbzNsjc>}GAJ z4n_Kw7tdMUpI3Tv@AUSkN%nzlQ|DTJGnX$wEkMmzF2yXfQ{Oz=w;WqLuPpnYPkqbf zuV=Og>gQyY<_(-nC6j{!+kiWH!P$YL)RfT8+2T}l*tV?BTeGIO3rY@Tb-tTr)lM$| zHLKJA(u{UN)w--s&b4`E$cBbiUxJ&h-5B+kGpVRu-hus2C#>25kTa{Zz5~4R;LKu5 zyMTAO?<#iLtTN)Z8+Ja;wD#tw1qP1qSx-3NK1!=XwVAUjaN4 zO&-qbBmf>EPH`wa<(M519ej)c#}LS#{toXKL-`}NzlzDJ-iA@l9pb+I$sNk1GZQj>oIq{>_8WYrk#ZR`g2{$0(L(<{b;y1L^R*$segTiZ!z&$VWwZf1SMfs$SM zU&*k$R|a-9tXp9>kZ~Q*2}vtb8+QSQiSFUDYQTPgfnB^xE74L6+HSyV?o){_P`+FBAjW55rpV<$ipB(uNtk^0{BO|_;1s_)ii)lhT%0=pEO zZ0!aLfyk2%C7e-{8~A;JoZ;N88k+!XW70P=$U7lug|KXF@|WrD$k}PF+3YU|vTCXV z?d%48%fMUZfEpVD)Z`?;3Eyvk`KlbixN6}~b_3e38SRL$8L;;Y32>Yg@-#JMY!0Oz zdFydbEf_u97ib}`4eVl~7i5}K&09e_%cH&t;hA+=#*ycTzkTg%XdMlj^{HTJF)-owf!l7=^FM-Z`TQ?pHt_hpKBeRTK}bQqPF%|kTBLW zkdm-^zMc3as0DG=I$JyOyNdZ`s)GGLmZ_K>Gum}~L9^5y)0|Zs_;BlJ!NJM)D5d$} zaE3=T*U*0%B0a`2aXk0sRioqn87kaz! z&@CQ&s?xHK2-s2D#~^RxO@yHx+|(rA3C6JXBRLiHcZ@!SZm@6yudLp>XR z!x>h!9rQ)50`5KDZRx%-t0G2P%tfij{8_*xyIlV2Y3^cvh&HvxM%|kTeJ(B=#g`Vv zg39srE*%|3fP3%(!E$x~Mrc1uEmbnu4E%& z(8_nO0&@Z@urVVgwPCnMj|v}PtM)6+NF|G1f%3Rq*Y=bO?9%8`&@FEUo}C`c(e0SC zJBY%N)E>JrtBW+Selw%(oiEQG2u$zt^mcNQCzycvn#)MD-br&T2XLsdCH+j9y2&Y} zoHTbMa2yxAa1H{KInP&APFj!z=9|x-V*9cGxf)hkSc2ce{yzo&Yam~jIOprA=cUN&-VntVFN8gv`ELzbJw$4(|6lU~XGTEJU}GXLf3L zIPx6JNDHp&=-ar4pib&@3~dmqeCg}+(^yzPQ_H`MEWR4R2m=CB{?k~*N19e>H|Ftw zb-j69Oy3_r-Xf{AOQmHjDMTYl(>e$tj4fHJc@rg}#hWSB+>|I~2BD#4yoD?&d!^-0 zT1MIsCdJIuw1_e@O*MC#JNJH1pWpYt-|zSEC}+++o%1@c*You}=k=O<&t2YrSg*pz z@gKg{0DIV;C(x5QFDLdJ0mXqa^!mXwm;AK3rE?9YKrPdgc`S$T+XFZy8nz_p%$En_ zwax_lte^{Kq*34H6#HvIf4Eh~Eo{rR^e11K3OiO{_PP@B0#40u{HuFh+A%ium=r@E`wie;?9muWxbXlN7ueQSx5AUn96 z_zM^XYRRrm{0{&-ocR6^$LsEApgJ;X!2GKnFFdBDthTCfZfue*$IH6KPj`Xb8wZQ$ zPP>YN1Xfw9!r%A(Y3PuT;ehMHtC7Rnvc%mdCLkcqmS zIz#pV$b{5;&2K5%?^_}dYazb#dIG#Z;UM35fI4E&t6AIP_pYkgx9_ZXt=Ijg?HH+| zRBSSO?7?cq=f1N^oGSYk@#9S;?QE9#d^~jxfTrxua>CNApzch?4wl1ga4Cf4mZk{x zegC>tSN3RmDIg$`9xFUe5e76Rr$)E<=58x-PH1UW)%q%@W~1~OK!2QWTe4s zb<4$>Q`SokEjVlk9<64%r7N<1r`#rSZOfA_^W_aN$62rNK}e2Qq^?QSq>SB zyWFOvB-It(#rS*on*c&W77pZmvy)fjDWUubql(6p&W5J49d++t(_7l>y}kk>AROe| z50n~!uL3P)?#`vI89@-SMOL2(Zu$I4Z^7%mI)RoF4}~lm-~ug;vWS=BU%F4#*e)LE zD47Rlws-V+*%iRW{@4iM$#KE8oP_i#pD()oKaVTG=at4T0L1h+6G%ai+8R4jT9+8u zqST+yt8s5hZAcU@j~yY`qkCIS8FunhB z{QHikBrb3hhjxem`2;`KpkiS7kS%e*rF0%ozMw_i;5E3cZv`s2D$i83S2m5y-zEOj zlIgP!7`?2|A3TrRPhK73IItsUin4?(YH)UtoIGF^%0F#XAx6MPczAiNs(LxuQub;A zpsY~-ih(G@dGZFR*16O(;|C2*4XvTg2JFhhv*LySSDcGLoPKh0C_m1iqH%>YbB?Tu zcSTu(-}I6JN2@v)&tpL~xnS`b2n`LHoEN){8Q&E@h zu<#RrFbaaTtf%gMl8P*3IS_!8MX}r%3YqWw|7qZ>!~b}6fEC4FU-I0yh0OIrhk&zy zKave*D+?fwa}@a^07yjBAXr6`Hn9YZcnmPMVz!L$j6-ffp;4CR(dj>Es1YGt*iZqE)9aGeFVTpRG9=kRQqB*ts4MTHOhAG!}?SGpZ9&S_vogrorn zOH5Osq>_0VL2|59!F{{YXUAK)gYamfANPLi?pOX2ZzfL zt*ObPrEjh%d#N|2=D<{mwbB_R@PuCl7DC!K?@l_5#>7%fmiK)Xkr;p;!PL04FaJ}J zsGK=BmWrBNb5qY>1$q{ew%J|#k%LcXi2N>0DPBk_vC9Z*7LoL%kY`-ti|fKeQRp_pN^u@Yh+H z?%;`QE7G=U+-7TFW^B)>C!=sN*o{?!U3<*~`wAj%Y0do!v{bSM1Snjc1yjf(ZF9H= z=BmdK(Joy1qjCn(%DCPCBP-t_6WB$QAxfV5)<||d+M2ME4Oq>PA-WLz-qnX89w+(q z?}@g)xB^5%xnBAV(dJd>M95VNCnj%3O?z+Lm7NkVrs$-7?I{C>cKlQfQap_-wL#De zBGSY;QQT!}ZA{RH@N%&b$po9)wnH;Xj3SmULu79YVjJTp9L?IY6rQ#Kj5tS9lOZx+ zQae74yEq8w&-iV!s9Y16k65l_%{6Y(;7Tkm^7e(v>6JtL6}%urRoB) z8$p8+kGLg=)+B+L@+)KjAW8;{6}tY0ilLC`*E)+;x**nLYI40M9tl~c*eue(eGtfE z3MUYw;yTu{rsh3T&w*uh;NXB z$Tm@rG@t`!t>Cn$hVsR^LY6>jNg9yaYH|~Q#(q^X;w#n&S&)@FBmNEVT&T|pd(uE_ zn>rWmw3h6Z=nG?n1Q5;sF^+DbE(@s>vx>SvK)gd6(Cbh&;F8H{q=Bn7x(vl#LUL%x zFE^mEeJ>seoZDZ5aZed&aI0FuOxP9EtYyo2fJgfMgsi|@K%DIUV+tFYomFzEPoJ3( zEFK^*zAOiEy68}JOJJgzwamm25Mz%H&{%Oux0pqVb0-bxPpENG&Ou>zZAWcUay!si zjdgU3pj(X*e-_B;!xqIFuf|h&1qNT!Wif0rCNvm3r1Pa6D&dLHCB}mT)By z=i9Nbzyw8FsiC&}DL`XZAfi8V3utVWrnRhoHt4ML36SeG_*BUNjRMo&(m~F^UdYP% z3RF;fjpN*Y%!D+s%Ug#LzbmrVnS9J4ZdKe@e^m{5HzR4lRUe3Y|C5ka1i~KKRa>Bn z!mU7KV>+Y(<9?uu?L%il`r*!5pt24FYgytXNFPu%NCP83G#CnZIT*67L&%DH3E*;U z0;r;8M|4Z}V$)x=mWv?Lt;(4Iru=MZE!%6tai;dqj&AY41(FsHlyjj4n*c7ehrx(f z#Xzomhm+vJ6rPq~27kJ>%;RioDAu?LWKGKTt!2)(Y9NPVUh53^+JKA-qG2stNY~_6 zrC-tqcrttnF!mn-U<_mms?yScC7X+9Gd7p!&>ydM`%H`1-YS~-O*Y2Hcc)G9Mx>mo@8t- zdehBu_DN8)7Cm#|IP>>E$`Cl0bj`9B75%Jr-u7Fa8}};?#7ulWhO~8|(1M$&Z!Nmv z$#Hg4EF(1%GJ`-$$|XdDA+6sYon^HFNWR?Q2g*g8G`MksBp}rRU52#sG?1zrh*w?* zfT4)PdyC9}e2qB2O!hGehP~YK&y0ga$p>;sSRMoTw~%SlO;& zcpV=%X*}|-*4b$)#Jtr60>q~2-103TwRU6_%%N~_|0lJ{zlIeP`DsAc_BTKL@ush+ z2+=E;4%_U>^Y1@hP+C^|r1q@gj`)1$roq&mJn;jqtAD&)ul7yaytRu}(FOm;=9`Ba zl+!$2XTO+kE!tOE>s)Z!8WcRDm^|kKv*`?Jafy&W@~LKMZ*=jLms7Tdn&X-bbcrkBG^&ONsY}OV1&>) z8jP4%B=8MzpJ}ag%^M?YQ6zA@nm6X4040YeKHat$Am*tlsgYNr$wj)>MQ4>Rn+6Km zLcZ!wk~WCBY0aA4@?8G$Dn?A%YDqNsR|3*R7PMS|t}>9ktOOa*AIm__@}wX+L7qAh z^Q%0tG}OxpNELHcXuEd#0Bkx|KDx0xc$kYUMKZPjUt0{ zp-Jpksd9(8XNd?O1o9)!f}9|ZROJfQSwBB@ay zzIQfkvv-4|(ngeVnd4m0sc9|B&;g`THC6BjHRYC|pbb#Ex9XArG??+j8Jcs9~8ELvOd^F zX9aH4=EfZ{AT>IcC5Kjx8kL78jxD5vD!^EdN>CMRR9;qn@qRUMDn>{jB%?GW` zQ$PWr!C4LpG60#-Zxvs}7TjS#11*05?Zs<@i#cG3Q-Bej4MD4yao$s78H0}rpx#9t z^hcX&03hh>mI}H7Y~!4%J!vCi0eCRJ15~g8Jh)TvU;%hADu7K{03M8eRW$<80QfD- z8`R%Y1A_wMXMnAUh?NT(fK8-`)nEmX&N5F;D81;=C*BV@**zXjCW3Lq><1j|saC#Z=B_{t5iQrL)cf$!9~g8_1H z3Depcp9OAAlqOBSX=%E1g=oVpG%D<^LSU!D?>pFYU$<;&`7rb7Eu$Pu^N+FXHf%V@ zaMk0(M~5tLpWU^2EKaa!RbviWpO4ZE}{(% z7hjF9n>|ZzHNyPmc<9e{bCsL$sYU zoUx6Nf9=;M%Gm6QdzZJ`+K~UdV?fyu78EwWq`w#oID2Trp|Ewj!V&z zRsl=6DZ@W=Gs8fq`mK_aey)IZPV?^M_?Y;7%2zu+$;s(^w)?lrS>^$fz=)W_j>5AJ z-1Bks=g-&e^0`CX638qL-JMwF;Oyw*ysTrFB-_qmauvz`<>}2qdv0jZhf*ITkS_y|tvQ0%UzAIKJ z1|_O3szY7zKNzpy!HY;fXYCkSRylbQ*oyxoQRAgS1~$8b6FTSJ8j2}&ak*P{c_nV% zdm>W4iZAea@lQg6;bz9)V5HPK;mKvcGnqxgJIo>4BoQP2B>oo$=QYIBz9PS#rGG5> zRPf6-b$;95SCJ#$BOAik&rBbZP)g>lbdntpjNzLz-|cxtPBI&5G)GH9I|?V$7CvZX zZe4`buHA2rt}D1I+9~ob+~vnuR@`!6J*_Nzau~1p)jKU2?*vmgh^I5n5 zsc^Z6jhjW*C-eE4LE03u_~-F|!w#Jdsx5J>db(bJY^J5faBvzv`S(o!aS>VuJ^%3T z>x29GZzyM}|J=~|H(@0%d^P&hx0T^ibgVYw_u``u%5IoP&pN%)Dlq!8g|Rug@xZ|u z;wJ{S?GL}i6d=XLDQ9jaWQLG*qnsI$T@^nfb)D8b7i7K5yc2%>u><{h*EI3;yfbYR znD*aOT7UjV79{IBO0msFgaPxuy`N2;qH}`1Ke})dCSUtgwpe=d z6Ost~q75DZm2?{vq_4VV`q_j+Ho+$H1EY-^&&TVQ4a_9p@Y1?f?d9VXpBLZd<*PD2 zp-aCm4L{rB&h!W-J|BFIS012$R4Q{S;Ninrwm0Ske0;x=DR!2W+G;GA-^d-Ch@+}u%;86Gq)izyPP_&v z;*_3~QMC{shyUg5DjtCnLQlYv8y^ndepj@+qXnk#9>+Ds zLw(rfsgl!gedgw!TE-ZxmL0n-uUWaoxx;07E4Jmgx7S&_u)`0S`9@|*7d-TqSW~0Z zUro$h^pHP3E)>M;l)=w1$J{64wr^ZNp1c>13mU7jyu9r)tx}9HYo9o2_;JElvBmJ? ziDJW#^F|VjjB1{A@k~C=qaQz38}I7m(~;mYu_V#hNhsz2*)zs@r`;#i8yb3!?hdD} z>9LA@8}G3g$<3-CYgvSc^&U8zK&cg9E7%!*Wzu8rUA;?Y6Pf#L$9~dy3b^RaNv3%G zk(TQ{`v>MVJqd}*__5C2;#68^MDD41k*kt&M!f%Cy#U>%^1CyPsnI{bmFVT1%>MQ$ z!%a~N&RKjUA?SOeq2ft?ckr5~S1m3fN3lYcH-yI%(Y~o(0d*F|s5I zz7p0t&U0?A3_bqy{7v?_b%{Y5?Qx0+wxF!Rpv{RWCO0n{Hpa-Yi(iZ@*5|TWyN+!0 z-{7u1#ry6z-k$e%)7!IUe{Z_vvx{hVUVE0Zm$$qbIXD6S!%Q#a3x?e92v2bPFHX|l z@RgO!rAKK!Yvx?-{WftbLG9Gv%d#xCyQ896vhV1|u3z;?eeQ;EyGg2%_pR`=il`At zLCbjIQTeO=g=x>0@w|#_AECL|2VdxoT=nX}LP$pRhLB*p;swpMWMUNFpsB zwsxXyV5lM_hPa$DG?9L~@o0m<6qy+@5+~0{_fcK792qx9`;>&INt- zU(&Dt;!Dkqf?rJArW)C1ne?~y`pk136FE(L^&@hZpS>52-mx=Cz7aM{T<*YR(GWgQ8h5)MR(@eGyunX|mIu|)h2 z^?@$o9`}e{SlkNTZ#RlBGGFtQY}~c&iy;nw(HDEa&tB_vN4uYGU|K#l|NPmVSo_#b z+Q*Rd#u-{fK?c4(Jmo$(d!=nn4At?$oqwx2vu5#JXNBF#^Lgj=H_JKArMP6IV&R?b zU(NHNwd28iCv^e_;`T-ix_1}Yi9^rUMqVAWyDVq8s~mO)EcJWpvg`g6t`&)Namx+7 zzj^(|ch{TWeb_mD%%{Vw7yskxUH*@Y-kZhVPS{x6BmPZq8+PJ@xs-LxbJC`#di*oG z)LZj=vy*~vXcdXxuM}%ed`%lfA%T9$>7IX0`H__i!A^PHQbvuRdGW%e=hptlsL8W! z^ERJ8xMm5DQ8fWoKY)iy{$P2~z>Y?oD!A^1SdNnMCA2oft9VB#WpHekf_Cp=!MN{Q zx44a@P@g~WC{2-jl7}NhGPfV46wjk=0~c)0gt!eui8Qp|rkn3LCiY^q$2I#jlLl{v zs)ctG65E{LpEB6+@z45)es`}hgv|4Ey<e_2AtePw(A`UvIP}`#Q=MP*w>$Ny0)P!Ofp(xO4pS4~u z;sj=6u+=ducD-yyVM=$%qKlt&vpcHG+B+V*`(_^6pD-Aiy>Y*%*mwtN>8g6um~(^4 z`&Trq`x_(P~TX71ilTgdL;!v?}_@^w`BP$~G=YvENEX%Sr-EZz? zf8K*&+BP2{Xk7dr5lSNp`;?UW>%*sB6(mKapFVume^={YPjKYu<(G`Sem!cBu1ibd zhkY~`Rix;^N#C!-`H4{E@2p6<)seP;l?gAMg978%WVn>1Ql0Ky(A${%-|gf3T#B~( z1w>OkM&2d(I+!xtU)}1uW9GtUmf?WMthSb## zCi&yd4lA8-cHUe|2_5(C-le0K?}LyE%}jkG$Q%uOUju<3!~2ej__9f zQoz|9R($c+m%mTc<^L>L427@l56uuX7c~czN|p*fk9<=2^nEVypRDidh9+Cdcs{&( ze^vs#}&UiVtV0<>2GQR3a%~vbF}}|^&g7gC$0K!28uZ^26kMXj__yi z#x}+LUXK~Z1{Ol`)5i#j7dktSX^F#a+B@tyc)c z6Na1Uah$K#ueA|o*E!cPms6!*ZY%vG4Gw=OJ+y3u{K(2|`<|!5^V9U5>c*Pt9I& zf8ou?q(|HH<&i8y0lMdVNKL(5fO=3AQM;dXp38hrJASuW+5G+NxCv(+H7aBDbk2v0 z+u|aJn?IktV0UZxQ`)vXt8Jq6SwW#Y}w{NDP!KaT#x+!s6yhlOW zR(&;$TuCyEO@6xGH8EBsWF&AZ5#0pl|Sc>#)Ums2lv zo5P;aV}CXO{pVXeMewp~rFeI=f)=(e$6;Ln^s4RGi#@^L-V}{#684)(o(I!Cd~Xc1 z9PfRoXjAj#eadnVC+9!(DD(6A{KVw#-n2PxkE8Be-G?cI37L=i{T}8A;t$u5kGRve z?AyLCz9Pc%)~zF%pHKN2=(^0#Vm$rlabi~Bo9Hd0N%ohCuYGczZiN4~)Y7ta>`yC> zKb7OO$S)!$L};CT3g; z$_peBV~6iOs=hfZ>~P2uazx0PE;J?U#|uK$ow-pF^p7;j>9Et=w}(p3<^_QpDVC5H zErN$B%M`SR8&aKQcuTE=dd=$EA`R^BoO80FWa?u{xF-EpN@;lohQ?~aYfJP|F^%?Txf0WMP0D~D_er>;oz@Q47Jg0T_4?g!u^N%UZLQDgsVv}3q!S0e_i@) zp>oj&w*GJNvoLfzb~Ft#6Z)HB^EvVW#7(V+odR2Z5jd|$bI;*gTCka`f7Yc9z@5y!55*SFHUmEpOqu)spYa?rP zeYVBnO8EnONE<7gm8dHe?2!y5Lw>b`Y8c@*YAF#fL0;d%x_P_%+Bq;4%pO(h(iaE~ zkB)|O2)iZS>g2tjF#k0w!cIi4Mo)hS8`hI|PYuPsgfKO+P%UVVguMv4ayxchgx|M> zBfGGJmnI{%ksctMguSE}NYOqk(OO7Zgyi7p(s?UIAZQ4fU)8Z}o_m|BSsQ<&O`p;~M^fe^yO zmms@^QFnze)dah12Q}&U!tiO5!dZ#N!UMqUYRH=@;iZ?rTAirfis*N>A5DX&A$7B` zpUL8Tmaw{DUoByJqB$_a7ixJ5Sqlv|OMKe3O0c!|;M=(IESBl&u ze#aW4goG#GA@#(R6pETu9#GHLK^ik0)m3*4e)GTqkjWDoYpeD)CtuYfi z9Bqu^Q1(c6BvW=ueAS@mDHJ02K!rK8j@cFHnj%4uYXcTAg82Cl}HVmGI99#?#0B^~LG;3D7V4C!b zFkI`4;P857vv%S&P?qF4_7XMv;kDVYCVoQ~GvJhh=u;iKks{DVTy<-vNdhA$sA|yV zskXdh6I70h`b5Z7$J@ghcP9P@}q+{hE79&Ln#_B~c&ya1Q&fJ3Ip|J2oLurxwT4 zb&>9sN^vrtpCZsfx?L4yp%}ChVq3rFLF!ngE4T(zvhh?z{Iw4sKaOu`#S*-`$y;CI z259a|r5lGF+#}XOcDEviy*Ob#8pFY_Oz}b8Z56=?UvL{GNSI5I<3{-GR#~7B+EQDp zfr_STDaQ(64f>O*wx+kGgfDo=R?HBkM2td!R=$%pP?y^Z&3gQ17^a3L-5%Ez3ceK+ zR--N}2LZPfyf z_;VhtjxM}3k*)OsPXUdQoR#f{t5JwoOh|^9U5TxEt2VYihs(A}3} zvKqAaC1`*j8!+Uw?|g;R)bWA=1yLw>L`;*}Pr)rPf&s&06HGN|Bd|TD2^4|21ESIq z3n0d^DLZYKffwcxz{EI&4qzdCFHq;Ca$PpAiIs=pGbC)#3cTvw5?`ZADw&dBr&XpY z#Me&!nVXj5H^XFjw&dUuC^715aj0bByNlmS(X-E_NhkWl8!Su3?!7k2izA}j1m%qt zlgAhGPWF~Yj4m5qq17axgvMu%((Of&R;9cZ*iS$DgMB5s^dc!?UZY%pRt-a%WVJtm zXWuB#l`>?gpT}dn{bpn*_Z3SX)_^PUiPS z?a@|d)>EbKhkT%wk|GmaM_Lwx6dB>R+c7!^&PS}y%xr-#BTNlw=41SACt)7_6z0km ze?3o`Rg<~^yKy=OUE?rG? zsxMq@dVbZDKiKIflu>gb!4Q3tPM*ISkL_h@VHq6UTFNwmpQv7)NLC!~5m_s!nbS#_ zT?YJxi2G|u1^%d8bNwk!51fr0NE%Y`5JmPmNS@Y7HToNDKF6m6M?o3A;f*~|!`X8V z;g!9#RszMf9@C_L9|@l`>h=!Pvy=Y&l*&GKUR9J#Hba<3(C%a`wVp8fdW5Zm{`X%e zc`I5Xb!12s@3cL;#KP?_=vNV@vVm-M8M?eldE=7u#sci*t2!ZVC;#O`xzEA~%JuBCQJUnBmb4qr{#{D?wBn^;7G6MDur)aXREG%}IwY0Tb5~ z&NkZOr;^EK?h|g6?<*NG$jjX9aokdgEt`(rTJ{WjfGn`a9xZ!6smuz-6&!q;l)8Y< zLzFY50)14AL-=8$6dS>g(Czhzb{gTAu&AtFO4k1?*l7e#Ss^c_pHhW=6HwFfMG~Sm z*7fu~y3B@lU;1`Pu9^!TDfpw$?%5!&9-b@R~XeX zM@cmW{YUU`j}e5h31V)7FP2tziPya2U9InkOAK#df4tyDHs*s{_`hBlqb`OaW#ydf zkhYYYDR_;Kh4%_Hf8+awQM}p8!Ak;H`s?HVlLQHFjYQ3x!elGk%>>&1Yy`GN;Dy*$ z08-d}%iEGeyBRoV}Ia=nBLDofh>bPG$@2Ve@`c3v4GL zC8HDeMN0;G<8>RAW;Kseq017#G};Im_0AfGQbx^FM+v{rtCpQj2$UVaG$ii6H4N*J zzt#Gku~)M1sQ3oG&~-$nIR<)dUd4|9hTKa3l1R)ux3kBOyp4KnH z2J}EOt}Zm3w44wC>!a+oh@WPkcrMD;>|+|y%OpAO6Qu@N)-ZdcDgd=j9hEcBO?Dfd zQ~4HZX5tn-4l|(p3ovNI6=~%ga~Q`Ig>$jDKcD04E#rdPsi~FOGSkx|6LJel`&_KB zm)0*>T+h};!EqvKNUAbE5Wr1MI>>v?6*!zDzt*1MrVCuLZ9{9mQSYGLAF*)CC>jhr z&8@=WJFbS2HK5JJ7jz@2pio8myZ#$=dIVECyuz(BRKb11o2T$}$)|Uflj5MXoyk>sKge%>EB^azf>(j^(7|N2G?Q5SlUMArY%#j2(T7m}1)LR`!Xz z?-klYfeyNs@ETE+o{TX2;5X(0lFGlVm7CtDe0H zeL6j!cm4zM0Ono~Jw6uZN%@2~3IKd5Uw5pcqcF!xA$DxPs?ngm=+C-v^zZ%pQj&CFsiy&^0I-5ok&sOmSj^_yZZ+h8*e%RvcKIfiEh@wO6B> zq3>mm(#isI@qAROrpP}}wh^k7{xiShCyol>x;tp=^ed{;dHk>AXvHVBYmn`nG7dLi0KR4!I3F}JjJbw=ZEpfR|f^d zgXHPxRm~>E5#!llnbWVywErs*;3{*r8or?y+F%kDh`mlS8ZexJKT8#?O80^zh8w6R z|2kom9oQNNZGUTr&CN~4(RfcH=cF} zoFt;M+5l9ANQY;vfL6Y2hSVkD%zDfZ2!pTiyM~tD@}|3~VS(vTDd;XL%69z(oJMDA%@fFz@HemrSp3pH}6t>55`Y&ge zOjI(EvXy1c0&Ap@dqqj42V$QhXIjF!-Ew%L1X_*u6jncR#5*Zy(d}+gc%%>?+&he~ z1-`2MxOWBp%`?@Bb5MZBEpnf*BoYlOSUo}9-zf@D5E3o?x?r%WA=0de@MR+tJY(d* z!fUeTSV`?yJlFo(c&LA+>a+&tS`TQiMCwBK8gS4N&mmuAI*7E>$=3C3pL6v@D~A&F z&o!OHDviHXHzCyz?Wh-bk-z&RGXZ#;9qlmDTr6`nYHa!(x0hD>;D;@H#3p=jr>-#; z(c|ff$nCGGN~_ncotTR;vYRH&uEPXLsRMSo7w|g44&Boeti-Qw>O=pNv|1-R z_XuWw#OL)G>WTN`w%g|ap>4-gSF4IbvQ)24z>ZeRVAWvTqdwFkovc$&{&&tka)#hErkwuH zTo=knCEnifjrw$CFlX0l^hr^+DqLFG)?S*ojSqD+mcWlVknfTS$W*8*^-O(5jThbd zqll8se1U%h7k3*$>e8Z1g4bB*W~5k6QL4ixRy|R%?fNO&@~GL1px!N`Xb4)O2p!w< zf<7H{=dk_I10dY0gVPaS*>g7hKoc%aoezClC;ojFLtUleWv`pb=7?SfK2J(?^~f4( zuRPy}_fmTX+cmJru!B%h(-c1l>=UDUf@K2!K091}yiBd0;A*8b%>WGAt;06^2Zi&u zjuxFcg8~4}JM|2DjRY(FTit;MB!g;@hcpU!IrjEEBI^1s5+4#$wk`MrDTFfuaW-qi zXwI24IM}S$)x#9D1e5zni^|HBRCNh^GZ)L48XfbYI4Gk=MwHYU=qAffu&VITfGx<{ zo?y}7GRwobem!hm54OyLIsd4Vz`}2H9N#P?c;ysB0O1g#-{XItFeK!)FC296=u}0S zrQ=3Y?dDn{5BctDDjPXZ8=S8vP75GgsIV#xpI=;DAK)3^GNeOBgpw5t9 z@SZu(=U*)UO*_AR$xG!Upznq-9h*7fWZH z!S@-WxAdODtS|6B%w6w2roRYp4lvbJ)h{+-ny6JWe!5q%j2?)KE3SCq#{ARt z@o>E+Y^$GAA$vL(V`f0uZeVBn@)O1bM036?1cJP)k`gSTeSR$6qooEaOC5#Rqw-6F zAMgs*xKjgadJnZ{Z$xa~RklG{HP`#v51zqQ-iz@5dT0Z>%Lcn&54*SU@fz)?gmm(e z+qBao)M^T<1XDLe1g*7LWrKJUW#pV{LKaj-;*zwWYj7&!b`J4355<*JyUCmJEPQWV zARc+mZxr8l28F<0#sqr*ulV&CEt}Y$-&Hg{34Q?)%!Xy?${waJXnR+8IkZ3SC4LLD)#_6aAL38% zptM z-@ljOHXQgC5*ij4$WyleU4WtBo}R&NLc;?aCZI5|C=L3(4&E@zb2_5{iHGF=!#Hr- zNoL5l01m2HEb%1UwV1OegQQ^(t?pdi$XVIk0v=!SOkHGguO6E&VLEeO08&vo|)DzN1%; zqcYwnWD~00AowoXCvuSHTI*658p_DF(UM07_(R9{SU`CardlQ>+GG1bY#=Bz zf{q1Ns;cx+kOW!*mO&;fzz#R#pT@vq0h!*xo!<$}=i-Zd2&O>0&~dX{@M?gJ-;m@+ zCzM_v^-bXMj$qD5Q8O3pPpO?UYA)tG7xQ>hZP6;gZ+UcAUa%;=Xu+HFq#-I%@RI{s z^s}FgtN^dfXn;Cie83~0vNP}q=|%c}Q87rc(B@%K_225-aR>W(PcdKQoOX4f?`4C- z^eBP}6ro4_>^hpTI!Ox6=%v_UG3@x#nk|0I1XUVPK1UAU`8w}L z?^pu_m}jokLF*UHMh>Xs;T+ul5xiUaQpPjm$(vO0hB#R>$~S$N`!&!Gy(#%nn%j?? zN04_+y)!StE2$rxXT|M(W*OUi@dIbfTP*l6T+JD-e254IySTXsPaj3 znY6W?){Le%C@lWAOq0wWhM>h10O-Y~CttTMsPnj_4Q)5Q;F_4DW4+z|EbV7(unc{X z!f807rbIgZ$DPY6Q}f{ZgZVR{u>RMtZt)L|S|2#M%=T%>h!4IJe5KQR<@F(z@5~YbF@L{N97GZ*kOxbaj>{bv4fFX&~3A2))c=-|ge;C)KC@ z$(7?Rspfwod4WbvlkxEzyZD0#4?vkrIkE!*m*_8DdSmBj_kRVrp!@&R@R6LHyu$yK;q{IG zr@?L*?PF8zbMj^NajSP?vqFtGTwRjOI%_6=Vk@f}KV* zMs51zXxl%9o~>$uRTdZLL&e-B2gJ(bw=D_e7u*L(wfe8=xGdg2-^4%73pZsja5 ze-Y~H7Bdg|A_oT_>0X7b zQh-N-IH10cwY^^=ztnx1-yGx8Qu`yL>dJFV)6?#h)=ewD*;TR#A#Z7GmeDW}yj=ky zr{E}qXLgZQRo|~x7ag049)VdDyhbwp+=PyT#0mze){rCriDb-{q#cC;8Ye*aPY=~U zij%tIuoI=Ln)61WJIc1J&%oCN-X(Ldi`U@e}gB60r4KaE?)HWp0iWG zEnQwam^tNq^#e5(4V&e=e+uv_y{8x;C+9Vn#QS2|qZB_kX9>0aIwxK^*;n?UePUO( zJK$9$&y(G4|2oV}=)%m2;oy?){KCk zuN>7HipPgI6=zyY|8A1LS553vD*)FdtF?XI&SkXG%dZ`4A9LDyXr6hrpo$dyunmEF zwT;id@63G|Swz@7E7QzBkYh}t_fY&5+9UX~fdO!5X=0lptGB#3uMOUAd;_o1PKaC?! zua91OPAaMF=;qwcHFG=lb zUy4~~dDg$oHToJB7(JMcKelY;mm5}^_F9r1M6~Rngiod4&dam}DZLJ_vQ`!gt#pY` zn!f(6+FwMuyU=segK@YdMa0?!nd5gv-&!YQe>I?*Cv#4Gx30q^rKO5a?UC$`OVO0_ zYmcfm3o)}ip*M-8gCPau$rb1QxTPA5U>BpS< zQ0#$RdRg%S_p{@H%x%GL4P6W$=`c(Qy{Q5={%xNHf zuKy+^({xg0;)@@rz1Is#D=yU!$tXtaKT5r&L%J#fOatj)k+yu$yJ;xBc(m0O!qfl7 z@}=x+E0a%yU<$w0sbxVw2f4mlwv}e_%!s|hfpXMkUIKJ zNLfBc|5#Umg?=0brCs3pTI*h(6hesr@$zl) z>Bs2Z7uXWj?dZ?UI=g}1nX8`Ok0{pa`eAs>&K z^cyz=7m=3OQKhxX=;9EezptddzNkEYE|`{sQ5o)cqD$iyC}-2J(szCGJTy%yb!xoD z%7pzWG%)P~fM9==P+*#h-jPr_lRioBNMMULjXF)H)6p>Z1Yiw0-t>Zk!0y_fvl2Yj z*9vSKeyr=~wsA+=R^wLB&uWZD?pVBb*z-Ta{aG1L(zSNGeS{nN{>sbTb~`ZiS6T)* zqIPC|23m7e6i}JjW>0dOv(H5=c^O(EB)`9&opG^Snym&8xF8mJ9kwB1XPfAc@;Crj@@7YRwsIJ8{-Pfn?=qN(a9N?b;=*baPWI@5er zuI0NqPn~B&sM+0~WZpo@{k~t;QBtE%Ri)2O9rjyiZMZSJ4UOm4S@pa1UOM1L=bk4i zM2E)GgAsA~x@wSWz$=oL^9I^2tTd%Y;p0MxzX9zK6PFjt~W6?>!hv_!r8R z&~u%Zn6;U~gTH&v8pX$xLlNfw%IE>^1(e@Nn9Wne??A`Rso2E~H>}gT5(z=t{b~zl zx4XQ4rtC;< zt7gW2>$I^29ZlaIw)J@`q2Oelg>@WQZ(va+6YRZTqPcy04GYwWg{8KZ^Jk4|QG=zM za1g2m`NtH#|KDHMHdm94b5&l*(O=fdUL$32=w{zaf93lyM&Pj%42QJb9 z0{IhGR9ltij$4;4&U$aGs_oGBSeisreqj2Z&W6>hStv)Kgw1D@%sF$vzl^Xgc}jKiaIB3!zxOKHo`s z>)8NZ9GWX7iB-urSn-5P~S&UV-j1qsYRYjRLSq zgO_b!zyMaPNJ-w~=Ls=-`O_GNAw12K&`JXbcJRJ4Ao?&zdd{j`_nN zM(qx6>1}<290b7zrKxq1`63UQ25da;NI7D9>VK<6lAvH0mrAh(YOwvumVCQ>vcl2v z%D&CtmRfH3U*E0lQY^&XyO81w{-Maroy=ek4lzPbb=C32XzZR@o4<8DKTaLx?XUyX zft`BjO5@uFGwNDaINDH{V4Bi^g9gd=vVAoAZ5>$AXCgMr=xxyVO&`gfm=iIEQ8oB+ zIJQDZ!pb@o5cV2f6ITl(*1Zn-oe1#kVv;z?YxV4|wB~9$A-^3FoCWYu1^|P1LLMr; zYLW%%=G&}7e9htG4(_&{D9!drGu31CSKeT;+&1XK8@pxL7V9d~MM^%v!LDZ0i#~@!^|HrAf>5IgYQYb~-t7Pb?`)zd)ea7=U!UZr&=>?ryz*_r zb}RszzD3RLhwM%)C$g&nv41n4z`4%X(|PDR!;;%yK&%sxvvRv|Z>{2k__%H`{M5)M zs9}dIrh0S)kV{#Og;~N?4-X!a(x8e>`)|Q9)qoF;Nm+0eS^QhlHwtmdhtTU}ROd=T zy^l1>J#npb9g3^L9|qW}P57SvDh>M%JGJn*|KvL1Yo>>DCR0H`i)wdj5a_=*x!sd= z$!8BZQOrK4nJ;IzNvG+(M%`7_fI#WylfCk5ZLlMg`fv(IxAEWUJ!gL3$+kSsa1i7%685^e0rQMZ?ZxGJ6& z8`Am9Db2I|S=~85@G?{5cXg^84f(?fl8anQf=i@aH(T8iWuDu}5KMHhw4hPgf&IdL zPm@E;aYs=}lJfDyM%Rw++x(*h;snHh>H+*mqfWc@npm%sE#Wo#bJeI<$l!Ty5_)L_ zgd0wnRU6vQlBs^NgEFJM7j*?x)X?-`5HY zrQaq4sUw}N-D+1_t^s2>TvA+WjGRnE*Q z?po@wps63T8HolYKcuQ;d)=gygkneYdHv*QL6EXA?%M222+nzYbn7`O#Obc5Vw;*` z1tfsD`F%De@do&KGd}B=8O^jlcaY4C|I`>ZpXub)$0G#edam1~&zbe+&UE?eI$>#Y zbf44h2BT{z=4}8d!Dd+5&u!Y_w-H)Hwe98=jrnSejwWQ@J{$}<4ft;)+A>$7p+-$% zy)_$l3!-#N`osRRJ=lLBJCMp@B4o6RvqE6`a4Z_dTA*}y{DN02>fmkB7K`6StEj_KFNVhbMg})L-J91-*uhW!rRxD?v zpcJ3f;Esf-kb`K1C!ysws|BR-%*C*6>Q0vF$tp!;6xnMJ{fmCIOk*w7z^d5@Jg zin+pp4&Cb4U+=>*ES#Z+xAA}DgVkm<$dkV}2(0nJ=Wti`*-Kt@tFsHB)^5wq-lE$B z2QG#AQ1AdqwY|iA%*{~^VnVlyNwqJ4kZ7?W8oJf}_fe-1$)5MXE$0GCr^fmBnlC%e zzc;X<7S0sj+uO~yQln1h%f1ilO2;+GoMA&)FY_$+>I+B-*ASf=@U}O@Xt|4RN`v~cKj6i+r&93Ix;#VDx}0xROHut>**aGG^S?& zQ29D?!)|02bD6wtupFicT;*Sue{fAL9Lr;Q1t`mo_slzxzKREWQBf4owgFTKvdMC8 z*@^xoFiCJGhxj`^Tw>0 zABJvBwifDSZq{(y(S_3P!BlvZG@Q2w3k82}%x$eNA?HtoH;%iU%Y*M7{y@y1{zWk1 zQ>LY-SmX5`1ge9&^2i^V#>n%B0V(z1GuVw0Wl`cZt?_XX-)}tK- z;1Kn|XbuBW2(0dYpwb6D`Y?ky>b(L%*@45-aI;;nMN4f3t9U|iF+@YCdXMo4{LLls z&&Y*z!uI;kXnOR&o)qs9mGOIl(vpA!<|6^zZM8gd{f?2BQ)CpoY-ME(Z1+lH5KSuAJ8^L zxrCQfo5#x4MEbm)zkJX~U|mcZ-T;56L;EL%LzQhUp-oQVfcYF-iH#HFI1gS5>P)h1 zytQnQUq@a6IW6PFXV2O{FH)KSSJYBcU^Ukkq3@K6>}OD$ zZ|EeJC{L3OwYA6NRh!v@PR>lBflZVH*olaAGt>_a_F+cL>rz4Xp7jCKu$9&k2RSqZ zzK=31AqoO zBhPDaaBCDj{CdO|4SqDNyHH@{1AMt#!804`{|nw^xC3NG$^#L#mfpZ-`XgXB0mZ!E z%RAlx@ws%UiB~B*n{K;`1$W|k4@ZOD2LDbm;v?F4h>8^DMks4!JprN{xB*`bIWf`c0w*HSi!oNhIp)F$=Vw@<)`02Q!tZ@0H6Q?F3y z<{UG=V-Z>=KS$V%035R)x~j1Dk@if>^Py`bpIF==hp9wk%ygUTG-kmil|XR2e*kl` za6u1C6{#NpPa*&#!Df&?3Xhl5G!k6kq1Lg@#YjADuz;5yuYjM%<1Coa0d7V0tjfIX zuVCRsyS!O=Pj5nN12XW0nmiFwl~3tD4{S|pC~(5#?-NWc0b&<#>RwgtWyTpU8f~}? z0z1(>MgWg6GU#d$EQKGg1eaeXI}Iy&z_03D0@fBaAhE%V3r(3Bqo-HMzjUgQ*F!RT zwLR)X1W|;heQM%^eTu|<7W81ZIc%Fev7N6FHCk(EJOUbl<~xHsxH}gL_j~7q-#p>Q zVwYXj5OmaTJIK7zTJ~UgSwPzOhn+AZOG@_bje1E>GZwKr4ADRhp@|Oy4lg*#H&Vit zEY9;J3wo25s$|!XQQ(vO%k$)cveDIrYsNLwXds$Q*^YUx?5nIO+`R%Ry+VmhpFzxE z6ySc}$}X;Yb%cf@y30#-3#CLL?Xa@J{z? zl8Ogh0tJ4(-)o`Fw1UxJ@Si7r_-!2wA{WjS#7ti!1IojA*RT#^YCs(yaMxo5eB$i= z4Lh*A_+g|XNfK8{%U!<%d+WJ@hE3XSpj#zrmTgzSI@atG=$80mQbte*A- z`-abU7Ka8g!XPUa9^@E&2qBl@7qEv=N}UZo7eg?`$^lc{SHL!il%pG{y-DgIf4JMThfsMMSN|vDCqtzdM zp0N*cBXtV#1}f_9l+g1ww$8hfDA(1Jlf@^_2x109qY@o$r1s$RGIG~g28<5h_PyHV zu6%d^o+P#m-#8bV0RiQVEN1K0$duGI3S`ZDzL%5suI*HTGYg|oYj(Be(ji8 zRq*IC`9OI2yH~uh3TsgWi}Qol>-fIQ^FgnTZl#C-rmI;4G2oB5VWpWBOn>VgY*?zA={WhclJ?V$kp zg|iIto1MoFxqv#xTyWE9><-sMvHG2RJYF%ZRP`rQfoqul-g#1tTpOu0)D^ws=JIQF z%!M@P+A+d)c=MBVStI&% z>=#H>wK|9o=?2$^L$?a+DUCsQHv0#k?Z7`Z<_hdF1){)SlOB6bJHJ-#f}z_*r4hFG zt9EFFF-M`7AmLasf6PM-Jq9=!N`t}g!bJ+PV?`v?!;mWFNKx9Ch%&K>vn19`>=Vd4j3XHN}G|&&&_ts z=wHQa*HzKBYpadfF%3MAeuf_m1XH1bYqPzU-)GLSX3f^Bv)Zi`R<-zjVB<3jHY(UY z5V;I~D~w~Z$pij|xy|XFvw4{xVvClBM(NH8N?$*~1gG$nJT9b#+v+bll@3>2M?;=S zaBF@3(8*DNWiM&y^1jp5&h9Aq3b8Y?9^||4RH6s&vAdH}379?`wS8cvE4F-|?YKBv zxzpMk+$I&7S+p;v_6rx037ehor{*0MIXr=#5!di$;Rk&%O2y9cVfQZp&zB?^2;YHO zXslnK^MxqCfSpk8wUK&XUG(o@?69j5#eeyOdEaw-Nr2*8l;__qOj_k4Rps-Uo5n8SWYl{K6x zH1#~Dd;av*Z=COcl&O8HCZBe?7U$lmKssKt!?UuT%xfwgVdd}!xD9IEsJ;AzNi2v` zkg>lr*EOrFeCA4Wij_ZJ^*YC^^pW(7`awMW*0Xxct93lH-}Z~tMqsv?G9QTQdA5T% zPIArkS&SetWM+)|S1$(p5QX)pB4O-n=XO2Z5%9TZl{g_J`+Ofdte)(FS9yr^@=a`n zYf4nXk38+cHWz^es%HlPu`axTf%6Zxn4m2z!@PorQX`tMSOCL%*QGDO+n9Wl4_M`R zzk0|^fT6#PEcxJP-?tuj*kl}tardCT2`xr)I4{y-{kgPnaNC>i*|-WgDGm)$|4FfH zQ`LQPx|nNQ8tYLht~&}_h}OqdeqY_mnY_j4u+ufLLeyE2tP5vR7 z;=a1W7-LlL{iH>9(W^)gxA1*^4>W`QnRu{XX(es3cKu!SxEOb4+ zQuJ}5D(qK?Vky6Zr-KQAYTQB6ymw%hZA!+0lL>vax0Lq}>a&0^LXqlH_#|G>SjoE_ zz1kvoIazg>a8ljfT)HvQ*@=hw1TXrPdxg<`n{&n{$8WAcy#xM>PnMc^?tl^zT}{-# z)uXNR!SMNi`0B8l zo=)$L(I5Bz5f`msqUHDav4VJ(G4=D0-Zu!sGIn`4b8fL$rM9g+E2RA-ND+%(o{Jm* z!4m!0!QO|yYOm?jEzLG5eyQY_3NC4O?^&yAow}ue)TV~q{h%v6_MFv4Ev4(QI0#`M z*Ykn4=ffq+p|fxgN4oRV=U*L?^r?Li=ECvB^s-c}P?xZ%UGbIpI63PF<&T{O6eabi z%kD`n-ttH^uoq54-CX@+TYU4Y!;+?;z)kwXAL*YCo94_Nf^NFq33%-s)bvq?3a#J% zcl=k{eER-VV}W2+R;d?sm5vWwctS$V6xu(^JkxT1?)=*COD$c|pENaX$m3s*d5@CjCh^YGaZ^ z63%tt4|XqV)XcrEABF0`UN{GhsaxulkA3)Wt?R?4P|w^V zPHR>Veb{_gls#W&a5-5p5r50#CTCqV;tS5$g61V)$lO&?H|z_==clU7F^Jz$_1Rq~_$dG&w_VtO6yVaF^|2}8>B%Jg$g&m!<#F_MGa!O-fU8!G$X3NI9M1kpQqW$R{ zCS`H-j`4c>`qh}iaau6>?#sLTS|X7WilT9b#^918(DT3Fnav^#?yR`*bxOoFz438Q z9oO~sh(5EdN*N+2t{>eK|%{zI4RCSTD5e2OAzDcDyazXS>(VBe> zVj9`+iKeKE&P4^W)SHht{?GvqHazCGfHBb>16ba?+xOs5xB4FOl%KZH9-k}G-SfRk8{OZHAD*iWBsgu2&$B!vAXEYy0haOiNPp-@;t7V&W`%V|% za*CXKSYHkTfvR*=726Zkl>v%L(mfMcE(X6V*~>#Efsgz-(pLN5xN4=dD6ww|N{e{& zi&AIgls)htT!n2Nyq$aJZ4R>_TMc1;&lMFZeEc z+ls^ghft=GmHV6Hrq?CfIr0AO^%MTbT0*|s>!uAH+4wjU{X`MAdQe_y)as#o!6lRW zQ)e#Rhmt<;QR}Rt3R!Vv|EJ9equxJ{>gy11SeSF4+9%y|$~0fqqN3~95No_0Cc7Ft zZ`2-m^L-P?=AWb;K9bQ~*8Iz&+bqBGU$o1YD=|FK?ajnR@(OqwJxWQlW0&uj_;T^J z{XN!LmllpI`q}Fv&lKeIrE|=a?7X8zi{icy5~H=1$1RMFu8hBrNS?Vbay={YhpcmC z4A-X@2zOl5&k?qf)!pQg&iN&nTz78zyV>}Fj?tp#a}^7JI(be_)_t#}H%<1vPrhDm z=}ZlRBxKm1o$DgX0!3?UT)9?BzzUlN6tlr0h$b zNg&O}XQTnK535Q{R4%h0IP4AW4KyPK8XkXBW+>m|lTovG|M{+rmMk6xSG zoZBpR4qy{_FZ&^)&W25H#kN0A%Tdp*BH@W@T$ObeCrgot!$>c)4D%HuCl0%M3(FV2 zQZLTyqnf)@vH1_82P&UCKv26MUfv&yJDmPcmI}a%Swtr?{FvHGDaxujxZvAuS6y;xqo8YW5aYcIJPQJzWN0@^894 z1*x}>HI!?iw^?}lllp({#vTt|(j5C@agZ`mC~;Ruu7-5* z6Vvnv`V5;a65$&hQ>!rlnGCqTVq=_^P=rc8?wK%7PtPHrsDJ_BXxyC9s9YY@K%Ol6R@4V?b- zs#=T7`=~f*n9$oxi-^W$eY^Z#?xso7llVt9xi__)O|i6NCbgiHa&HCo_cWSXdEa8c z#)qeAaVtgg-#ylL=;qUu32^k-+r84e5~hATu;xl4?UAxQ3SVtfvn4 z-x61PDo{PEO!6$J+k_+jKeyhEZoF&|E#-YNAJwpV-Ia%*&(}YOZ*lTV&aP@!qaRx& z^+xV^#z!~Mos$O|y!n&H2KS$O3O!)e?b@Q6zMfa@cpo^@+kE>*to}`kF(E3a!tlXC zbqmKpWPe499Q)+7Ye$uzdskBH34ANu(WgTtXDhsB(M@f?qKtS{8s*jILisrJiIM`o(GZ8RgE~93fK5T1IK5olUuHQCE z5YshPn!kUb)rJ$+vt)c|KUlc26A=%dh6f~@S~MHmUKY!&8M`j}9?YUFrK7N9zOD88 zdBsp;c_#hV<39!S%T|9ESBB)6Lbx5Wx#NAqqLuE_)a4?MRz##nBdG zOckVW+tQ|#Y!O@STG*(=9P2q{lopGJc|GIx;uGbYj)e8Q8KcT)cHfnX#SGXx)vs7h zhd!=o(RsN#e0f;=(R{<#Xz;eDIOg|$aan8=$0^>!-kxwIde1KpVWL_x@hV*=FdUdf zRxRf&vs{psBpt=il)=YdnE!s~ws^*7*+<}Q7<1mfygoXA)a%I_x0H4L&FDdK*I4Bh z)IGkS7xFBsHVIG;lo8dBAxzy>j32XqERmM~6Tr~Cz_#jAx#Lri0eeHsm{1sfe{sQFq7jwIsx)}if z`@rw0B12d0DUEe2_$2^JLzDW8svAykkW=cwO0y#mqj;HdvKfd`2y!>o@>VYd5 zNZ-E7U9JAJ)qai3%v!@QKI#c+L;O;%{pTK&T#?#WwV-juiLbeXih`g6y2^c3K#b9&f13s`AdD%CMXq7H~I>Cq6Pts+G}tdf4x7 z-HH2soQ5gmge(1{y@IInoIttk2aB7w)^xh;wPHDW0YyK4>R_f4!?27n6az!q>VD52 z{atA~O_QpFSCZpN2CVXoW|%d<&+>P(>TciUD~Zc7%)Y(Ldmv!;&Yf-hc~ZhVQ-%-m z44M*UiqpIAx!epEvrIW(XlH+R&&a*MANM5J@@^Pm%EZoV;Y~|AgS(XG?_tGVa^8RP zHGhkFigm;Tn~Xf{Lqpl*a1T6h=Iq4Aa|@QV!fmyOpDuBXa}ISN_gx;D!gO|XZoQHzZ)95>w%>Y4^NG&ExLx^%0DZ@vuvf*zLSWZYVUE|>yNwj% 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
04q^@=3>fQYBWmk;l^ofSVW87x33 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 literal 228328 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 - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -AMFName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_AMFName_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_AMFName_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_AMFName_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_AMFName_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_AMFName_1_v2c, /* Value to PER code map */ - asn_PER_MAP_AMFName_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_AMFName_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_AMFName = { - "AMFName", - "AMFName", - &asn_OP_PrintableString, - asn_DEF_AMFName_tags_1, - sizeof(asn_DEF_AMFName_tags_1) - /sizeof(asn_DEF_AMFName_tags_1[0]), /* 1 */ - asn_DEF_AMFName_tags_1, /* Same as above */ - sizeof(asn_DEF_AMFName_tags_1) - /sizeof(asn_DEF_AMFName_tags_1[0]), /* 1 */ - { &asn_OER_type_AMFName_constr_1, &asn_PER_type_AMFName_constr_1, AMFName_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/AMFName.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/AMFName.h deleted file mode 100644 index 52eef4d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/AMFName.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _AMFName_H_ -#define _AMFName_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* AMFName */ -typedef PrintableString_t AMFName_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_AMFName_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_AMFName; -asn_struct_free_f AMFName_free; -asn_struct_print_f AMFName_print; -asn_constr_check_f AMFName_constraint; -ber_type_decoder_f AMFName_decode_ber; -der_type_encoder_f AMFName_encode_der; -xer_type_decoder_f AMFName_decode_xer; -xer_type_encoder_f AMFName_encode_xer; -oer_type_decoder_f AMFName_decode_oer; -oer_type_encoder_f AMFName_encode_oer; -per_type_decoder_f AMFName_decode_uper; -per_type_encoder_f AMFName_encode_uper; -per_type_decoder_f AMFName_decode_aper; -per_type_encoder_f AMFName_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _AMFName_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.c deleted file mode 100644 index 0b81557..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.c +++ /dev/null @@ -1,450 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { - sizeof(ANY_t), - offsetof(ANY_t, _asn_ctx), - ASN_OSUBV_ANY -}; -asn_TYPE_operation_t asn_OP_ANY = { - OCTET_STRING_free, - OCTET_STRING_print, - OCTET_STRING_compare, - OCTET_STRING_decode_ber, - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_hex, - ANY_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - 0, - 0, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, 0, 0, 0, -#else - ANY_decode_uper, - ANY_encode_uper, - ANY_decode_aper, - ANY_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - 0, /* Random fill is not defined for ANY type */ - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_ANY = { - "ANY", - "ANY", - &asn_OP_ANY, - 0, 0, 0, 0, - { 0, 0, asn_generic_no_constraint }, /* No constraints */ - 0, 0, /* No members */ - &asn_SPC_ANY_specs, -}; - -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -asn_enc_rval_t -ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - if(flags & XER_F_CANONICAL) { - /* - * Canonical XER-encoding of ANY type is not supported. - */ - ASN__ENCODE_FAILED; - } - - /* Dump as binary */ - return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); -} - -struct _callback_arg { - uint8_t *buffer; - size_t offset; - size_t size; -}; - -static int ANY__consume_bytes(const void *buffer, size_t size, void *key); - -int -ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { - struct _callback_arg arg; - asn_enc_rval_t erval = {0,0,0}; - - if(!st || !td) { - errno = EINVAL; - return -1; - } - - if(!sptr) { - if(st->buf) FREEMEM(st->buf); - st->size = 0; - return 0; - } - - arg.offset = arg.size = 0; - arg.buffer = 0; - - erval = der_encode(td, sptr, ANY__consume_bytes, &arg); - if(erval.encoded == -1) { - if(arg.buffer) FREEMEM(arg.buffer); - return -1; - } - assert((size_t)erval.encoded == arg.offset); - - if(st->buf) FREEMEM(st->buf); - st->buf = arg.buffer; - st->size = arg.offset; - - return 0; -} - -int -ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { - uint8_t *buffer = NULL; - ssize_t erval; - - if(!st || !td) { - errno = EINVAL; - return -1; - } - - if(!sptr) { - if(st->buf) FREEMEM(st->buf); - st->size = 0; - return 0; - } - - erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); - - if(erval == -1) { - if(buffer) FREEMEM(buffer); - return -1; - } - assert((size_t)erval > 0); - - if(st->buf) FREEMEM(st->buf); - st->buf = buffer; - st->size = erval; - - return 0; -} - -ANY_t * -ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { - ANY_t tmp; - ANY_t *st; - - if(!td || !sptr) { - errno = EINVAL; - return 0; - } - - memset(&tmp, 0, sizeof(tmp)); - - if(ANY_fromType(&tmp, td, sptr)) return 0; - - st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); - if(st) { - *st = tmp; - return st; - } else { - FREEMEM(tmp.buf); - return 0; - } -} - -ANY_t * -ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { - ANY_t tmp; - ANY_t *st; - - if(!td || !sptr) { - errno = EINVAL; - return 0; - } - - memset(&tmp, 0, sizeof(tmp)); - - if(ANY_fromType_aper(&tmp, td, sptr)) return 0; - - st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); - if(st) { - *st = tmp; - return st; - } else { - FREEMEM(tmp.buf); - return 0; - } -} - -int -ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { - asn_dec_rval_t rval; - void *newst = 0; - - if(!st || !td || !struct_ptr) { - errno = EINVAL; - return -1; - } - - if(st->buf == 0) { - /* Nothing to convert, make it empty. */ - *struct_ptr = (void *)0; - return 0; - } - - rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); - if(rval.code == RC_OK) { - *struct_ptr = newst; - return 0; - } else { - /* Remove possibly partially decoded data. */ - ASN_STRUCT_FREE(*td, newst); - return -1; - } -} - -int -ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { - asn_dec_rval_t rval; - void *newst = 0; - - if(!st || !td || !struct_ptr) { - errno = EINVAL; - return -1; - } - - if(st->buf == 0) { - /* Nothing to convert, make it empty. */ - *struct_ptr = (void *)0; - return 0; - } - - rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); - if(rval.code == RC_OK) { - *struct_ptr = newst; - return 0; - } else { - /* Remove possibly partially decoded data. */ - ASN_STRUCT_FREE(*td, newst); - return -1; - } -} - -static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { - struct _callback_arg *arg = (struct _callback_arg *)key; - - if((arg->offset + size) >= arg->size) { - size_t nsize = (arg->size ? arg->size << 2 : 16) + size; - void *p = REALLOC(arg->buffer, nsize); - if(!p) return -1; - arg->buffer = (uint8_t *)p; - arg->size = nsize; - } - - memcpy(arg->buffer + arg->offset, buffer, size); - arg->offset += size; - assert(arg->offset < arg->size); - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_ANY_specs; - size_t consumed_myself = 0; - int repeat; - ANY_t *st = (ANY_t *)*sptr; - - (void)opt_codec_ctx; - (void)constraints; - - /* - * Allocate the structure. - */ - if(!st) { - st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("UPER Decoding ANY type"); - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, -1, 0, &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len; - len_bits = len_bytes * 8; - - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += len_bits; - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - RETURN(RC_OK); -} - -asn_enc_rval_t -ANY_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const ANY_t *st = (const ANY_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - const uint8_t *buf; - size_t size; - int ret; - - (void)constraints; - - if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; - - buf = st->buf; - size = st->size; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ret = per_put_many_bits(po, buf, may_save * 8); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save; - size -= may_save; - assert(!(may_save & 0x07) || !size); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size); - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_ANY_specs; - size_t consumed_myself = 0; - int repeat; - ANY_t *st = (ANY_t *)*sptr; - - (void)opt_codec_ctx; - (void)constraints; - - /* - * Allocate the structure. - */ - if(!st) { - st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("APER Decoding ANY type"); - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = aper_get_length(pd, -1, 0, &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len; - len_bits = len_bytes * 8; - - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += len_bits; - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - RETURN(RC_OK); -} - -asn_enc_rval_t -ANY_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const ANY_t *st = (const ANY_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - const uint8_t *buf; - size_t size; - int ret; - - (void)constraints; - - if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; - - buf = st->buf; - size = st->size; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ret = per_put_many_bits(po, buf, may_save * 8); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save; - size -= may_save; - assert(!(may_save & 0x07) || !size); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size); - - ASN__ENCODED_OK(er); -} -#endif /* ASN_DISABLE_PER_SUPPORT */ - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.h deleted file mode 100644 index b30381f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ANY.h +++ /dev/null @@ -1,65 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.c deleted file mode 100644 index e8d7354..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.c +++ /dev/null @@ -1,656 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * BIT STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { - sizeof(BIT_STRING_t), - offsetof(BIT_STRING_t, _asn_ctx), - ASN_OSUBV_BIT -}; -asn_TYPE_operation_t asn_OP_BIT_STRING = { - OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ - BIT_STRING_print, - BIT_STRING_compare, - OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_decode_xer_binary, - BIT_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - BIT_STRING_decode_oer, - BIT_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - BIT_STRING_decode_uper, /* Unaligned PER decoder */ - BIT_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - BIT_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { - "BIT STRING", - "BIT_STRING", - &asn_OP_BIT_STRING, - asn_DEF_BIT_STRING_tags, - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - asn_DEF_BIT_STRING_tags, /* Same as above */ - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - { 0, 0, BIT_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_BIT_STRING_specs -}; - -/* - * BIT STRING generic constraint. - */ -int -BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - - if(st && st->buf) { - if((st->size == 0 && st->bits_unused) - || st->bits_unused < 0 || st->bits_unused > 7) { - ASN__CTFAIL(app_key, td, sptr, - "%s: invalid padding byte (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - return 0; -} - -static const char *_bit_pattern[16] = { - "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", - "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" -}; - -asn_enc_rval_t -BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0, 0, 0}; - char scratch[128]; - char *p = scratch; - char *scend = scratch + (sizeof(scratch) - 10); - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - int xcan = (flags & XER_F_CANONICAL); - uint8_t *buf; - uint8_t *end; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - buf = st->buf; - end = buf + st->size - 1; /* Last byte is special */ - - /* - * Binary dump - */ - for(; buf < end; buf++) { - int v = *buf; - int nline = xcan?0:(((buf - st->buf) % 8) == 0); - if(p >= scend || nline) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - if(nline) ASN__TEXT_INDENT(1, ilevel); - } - memcpy(p + 0, _bit_pattern[v >> 4], 4); - memcpy(p + 4, _bit_pattern[v & 0x0f], 4); - p += 8; - } - - if(!xcan && ((buf - st->buf) % 8) == 0) - ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - - if(buf == end) { - int v = *buf; - int ubits = st->bits_unused; - int i; - for(i = 7; i >= ubits; i--) - *p++ = (v & (1 << i)) ? 0x31 : 0x30; - ASN__CALLBACK(scratch, p - scratch); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - - -/* - * BIT STRING specific contents printer. - */ -int -BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - char scratch[64]; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - uint8_t *buf; - uint8_t *end; - char *p = scratch; - - (void)td; /* Unused argument */ - - if(!st || !st->buf) - return (cb("", 8, app_key) < 0) ? -1 : 0; - - ilevel++; - buf = st->buf; - end = buf + st->size; - - /* - * Hexadecimal dump. - */ - for(; buf < end; buf++) { - if((buf - st->buf) % 16 == 0 && (st->size > 16) - && buf != st->buf) { - _i_INDENT(1); - /* Dump the string */ - if(cb(scratch, p - scratch, app_key) < 0) return -1; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - - if(p > scratch) { - p--; /* Eat the tailing space */ - - if((st->size > 16)) { - _i_INDENT(1); - } - - /* Dump the incomplete 16-bytes row */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - } - - if(st->bits_unused) { - int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", - st->bits_unused, st->bits_unused == 1 ? "" : "s"); - assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); - if(ret > 0 && ret < (ssize_t)sizeof(scratch) - && cb(scratch, ret, app_key) < 0) - return -1; - } - - return 0; -} - -/* - * Non-destructively remove the trailing 0-bits from the given bit string. - */ -static const BIT_STRING_t * -BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { - const uint8_t *b; - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - - if(st->size == 0) { - assert(st->bits_unused == 0); - return st; - } else { - for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { - ; - } - /* b points to the last byte which may contain data */ - if(*b) { - int unused = 7; - uint8_t v = *b; - v &= -(int8_t)v; - if(v & 0x0F) unused -= 4; - if(v & 0x33) unused -= 2; - if(v & 0x55) unused -= 1; - tmp->size = b-st->buf + 1; - tmp->bits_unused = unused; - } else { - tmp->size = b-st->buf; - tmp->bits_unused = 0; - } - - assert(b >= st->buf); - } - - unconst.c_buf = st->buf; - tmp->buf = unconst.nc_buf; - return tmp; -} - -/* - * Lexicographically compare the common prefix of both strings, - * and if it is the same return -1 for the smallest string. - */ -int -BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - /* - * Remove information about trailing bits, since - * X.680 (08/2015) #22.7 "ensure that different semantics are not" - * "associated with [values that differ only in] the trailing 0 bits." - */ - BIT_STRING_t compact_a, compact_b; - const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); - const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); - const asn_OCTET_STRING_specifics_t *specs = td->specifics; - - assert(specs && specs->subvariant == ASN_OSUBV_BIT); - - if(a && b) { - size_t common_prefix_size = a->size <= b->size ? a->size : b->size; - int ret = memcmp(a->buf, b->buf, common_prefix_size); - if(ret == 0) { - /* Figure out which string with equal prefixes is longer. */ - if(a->size < b->size) { - return -1; - } else if(a->size > b->size) { - return 1; - } else { - /* Figure out how many unused bits */ - if(a->bits_unused > b->bits_unused) { - return -1; - } else if(a->bits_unused < b->bits_unused) { - return 1; - } else { - return 0; - } - } - } else { - return ret; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { - APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; - -asn_dec_rval_t -BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - - (void)opt_codec_ctx; - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - - if(specs->subvariant != ASN_OSUBV_BIT) { - ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); - RETURN(RC_FAIL); - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - st->size = (csiz->upper_bound + 7) >> 3; - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += csiz->upper_bound; - st->buf[st->size] = 0; - st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - BIT_STRING_t compact_bstr; /* Do not modify this directly! */ - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - size_t size_in_bits; - const uint8_t *buf; - int ret; - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(specs->subvariant == ASN_OSUBV_BIT) { - if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - /* Figure out the size without the trailing bits */ - st = BIT_STRING__compactify(st, &compact_bstr); - size_in_bits = 8 * st->size - st->bits_unused; - - ASN_DEBUG( - "Encoding %s into %" ASN_PRI_SIZE " bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_bits > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; - ASN_DEBUG( - "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " - "value %" ASN_PRI_SSIZE "", - st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, - add_trailer, - add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); - ret = per_put_few_bits( - po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = per_put_many_bits(po, st->buf, size_in_bits); - if(ret) ASN__ENCODE_FAILED; - if(add_trailer) { - static const uint8_t zeros[16]; - size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; - while(trailing_zero_bits > 0) { - if(trailing_zero_bits > 8 * sizeof(zeros)) { - ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); - trailing_zero_bits -= 8 * sizeof(zeros); - } else { - ret = per_put_many_bits(po, zeros, trailing_zero_bits); - trailing_zero_bits = 0; - } - if(ret) ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - do { - int need_eom = 0; - ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); - if(maySave < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); - - ret = per_put_many_bits(po, buf, maySave); - if(ret) ASN__ENCODE_FAILED; - - buf += maySave >> 3; - size_in_bits -= maySave; - assert(!(maySave & 0x07) || !size_in_bits); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_bits); - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -asn_random_fill_result_t -BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - static unsigned lengths[] = {0, 1, 2, 3, 4, 8, - 126, 127, 128, 16383, 16384, 16385, - 65534, 65535, 65536, 65537}; - uint8_t *buf; - uint8_t *bend; - uint8_t *b; - size_t rnd_bits, rnd_len; - BIT_STRING_t *st; - - if(max_length == 0) return result_skipped; - - switch(specs->subvariant) { - case ASN_OSUBV_ANY: - return result_failed; - case ASN_OSUBV_BIT: - break; - default: - break; - } - - /* Figure out how far we should go */ - rnd_bits = lengths[asn_random_between( - 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_CONSTRAINED) { - long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length - ? pc->upper_bound - : (ssize_t)max_length; - if(max_length < (size_t)pc->lower_bound) { - return result_skipped; - } - if(pc->flags & APC_EXTENSIBLE) { - switch(asn_random_between(0, 5)) { - case 0: - if(pc->lower_bound > 0) { - rnd_bits = pc->lower_bound - 1; - break; - } - /* Fall through */ - case 1: - rnd_bits = pc->upper_bound + 1; - break; - case 2: - /* Keep rnd_bits from the table */ - if(rnd_bits < max_length) { - break; - } - /* Fall through */ - default: - rnd_bits = asn_random_between(pc->lower_bound, - suggested_upper_bound); - } - } else { - rnd_bits = - asn_random_between(pc->lower_bound, suggested_upper_bound); - } - } else { - rnd_bits = asn_random_between(0, max_length - 1); - } - } else if(rnd_bits >= max_length) { - rnd_bits = asn_random_between(0, max_length - 1); - } - - rnd_len = (rnd_bits + 7) / 8; - buf = CALLOC(1, rnd_len + 1); - if(!buf) return result_failed; - - bend = &buf[rnd_len]; - - for(b = buf; b < bend; b++) { - *(uint8_t *)b = asn_random_between(0, 255); - } - *b = 0; /* Zero-terminate just in case. */ - - if(*sptr) { - st = *sptr; - FREEMEM(st->buf); - } else { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) { - FREEMEM(buf); - return result_failed; - } - } - - st->buf = buf; - st->size = rnd_len; - st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; - if(st->bits_unused) { - assert(st->size > 0); - st->buf[st->size-1] &= 0xff << st->bits_unused; - } - - result_ok.length = st->size; - return result_ok; -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.h deleted file mode 100644 index c1bdbbc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING.h +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING_oer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING_oer.c deleted file mode 100644 index aff5075..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/BIT_STRING_oer.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -asn_dec_rval_t -BIT_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - const asn_oer_constraints_t *cts = - constraints ? constraints : td->encoding_constraints.oer_constraints; - ssize_t ct_size = cts ? cts->size : -1; - asn_dec_rval_t rval = {RC_OK, 0}; - size_t expected_length = 0; - - (void)opt_codec_ctx; - - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(ct_size >= 0) { - expected_length = (ct_size + 7) >> 3; - st->bits_unused = (8 - (ct_size & 7)) & 7; - } else { - /* - * X.696 (08/2015) #13.3.1 - * Encode length determinant as _number of octets_, but only - * if upper bound is not equal to lower bound. - */ - ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); - if(len_len > 0) { - ptr = (const char *)ptr + len_len; - size -= len_len; - } else if(len_len == 0) { - ASN__DECODE_STARVED; - } else if(len_len < 0) { - ASN__DECODE_FAILED; - } - - if(expected_length < 1) { - ASN__DECODE_FAILED; - } else if(expected_length > size) { - ASN__DECODE_STARVED; - } - - st->bits_unused = ((const uint8_t *)ptr)[0]; - if(st->bits_unused & ~7) { - ASN_DEBUG("%s: unused bits outside of 0..7 range", td->name); - ASN__DECODE_FAILED; - } - ptr = (const char *)ptr + 1; - size--; - expected_length--; - rval.consumed = len_len + 1; - } - - if(size < expected_length) { - ASN__DECODE_STARVED; - } else { - uint8_t *buf = MALLOC(expected_length + 1); - if(buf == NULL) { - ASN__DECODE_FAILED; - } else { - memcpy(buf, ptr, expected_length); - buf[expected_length] = '\0'; - } - FREEMEM(st->buf); - st->buf = buf; - st->size = expected_length; - if(expected_length > 0) { - buf[expected_length - 1] &= (0xff << st->bits_unused); - } - - rval.consumed += expected_length; - return rval; - } -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -BIT_STRING_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, - void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - asn_enc_rval_t erval = {0, 0, 0}; - const asn_oer_constraints_t *cts = - constraints ? constraints : td->encoding_constraints.oer_constraints; - ssize_t ct_size = cts ? cts->size : -1; - size_t trailing_zeros = 0; - int fix_last_byte = 0; - - if(!st) ASN__ENCODE_FAILED; - - if(st->bits_unused & ~7) { - ASN_DEBUG("BIT STRING unused bits %d out of 0..7 range", - st->bits_unused); - ASN__ENCODE_FAILED; - } - if(st->bits_unused && !(st->size && st->buf)) { - ASN_DEBUG("BIT STRING %s size 0 can't support unused bits %d", td->name, - st->bits_unused); - ASN__ENCODE_FAILED; - } - - if(ct_size >= 0) { - size_t ct_bytes = (ct_size + 7) >> 3; - if(st->size > ct_bytes) { - ASN_DEBUG("More bits in BIT STRING %s (%" ASN_PRI_SSIZE ") than constrained %" ASN_PRI_SSIZE "", - td->name, 8 * st->size - st->bits_unused, ct_size); - ASN__ENCODE_FAILED; - } - trailing_zeros = ct_bytes - st->size; /* Allow larger constraint */ - } else { - uint8_t ub = st->bits_unused & 7; - ssize_t len_len = oer_serialize_length(1 + st->size, cb, app_key); - if(len_len < 0) ASN__ENCODE_FAILED; - if(cb(&ub, 1, app_key) < 0) { - ASN__ENCODE_FAILED; - } - erval.encoded += len_len + 1; - } - - if(st->bits_unused) { - if(st->buf[st->size - 1] & (0xff << st->bits_unused)) { - fix_last_byte = 1; - } - } - - if(cb(st->buf, st->size - fix_last_byte, app_key) < 0) { - ASN__ENCODE_FAILED; - } - - if(fix_last_byte) { - uint8_t b = st->buf[st->size - 1] & (0xff << st->bits_unused); - if(cb(&b, 1, app_key) < 0) { - ASN__ENCODE_FAILED; - } - } - - erval.encoded += st->size; - - if(trailing_zeros) { - static uint8_t zeros[16]; - while(trailing_zeros > 0) { - int ret; - if(trailing_zeros < sizeof(zeros)) { - ret = cb(zeros, trailing_zeros, app_key); - erval.encoded += trailing_zeros; - } else { - ret = cb(zeros, sizeof(zeros), app_key); - erval.encoded += sizeof(zeros); - } - if(ret < 0) ASN__ENCODE_FAILED; - } - } - - return erval; -} - - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.c deleted file mode 100644 index e626083..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "C-RNTI.h" - -int -C_RNTI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 2)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_C_RNTI_constr_1 CC_NOTUSED = { - { 0, 0 }, - 2 /* (SIZE(2..2)) */}; -asn_per_constraints_t asn_PER_type_C_RNTI_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_C_RNTI_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_C_RNTI = { - "C-RNTI", - "C-RNTI", - &asn_OP_OCTET_STRING, - asn_DEF_C_RNTI_tags_1, - sizeof(asn_DEF_C_RNTI_tags_1) - /sizeof(asn_DEF_C_RNTI_tags_1[0]), /* 1 */ - asn_DEF_C_RNTI_tags_1, /* Same as above */ - sizeof(asn_DEF_C_RNTI_tags_1) - /sizeof(asn_DEF_C_RNTI_tags_1[0]), /* 1 */ - { &asn_OER_type_C_RNTI_constr_1, &asn_PER_type_C_RNTI_constr_1, C_RNTI_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.h deleted file mode 100644 index 7366109..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/C-RNTI.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _C_RNTI_H_ -#define _C_RNTI_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* C-RNTI */ -typedef OCTET_STRING_t C_RNTI_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_C_RNTI_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_C_RNTI; -asn_struct_free_f C_RNTI_free; -asn_struct_print_f C_RNTI_print; -asn_constr_check_f C_RNTI_constraint; -ber_type_decoder_f C_RNTI_decode_ber; -der_type_encoder_f C_RNTI_encode_der; -xer_type_decoder_f C_RNTI_decode_xer; -xer_type_encoder_f C_RNTI_encode_xer; -oer_type_decoder_f C_RNTI_decode_oer; -oer_type_encoder_f C_RNTI_encode_oer; -per_type_decoder_f C_RNTI_decode_uper; -per_type_encoder_f C_RNTI_encode_uper; -per_type_decoder_f C_RNTI_decode_aper; -per_type_encoder_f C_RNTI_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _C_RNTI_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CMakeLists.txt b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CMakeLists.txt deleted file mode 100644 index 8ba7111..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -#/***************************************************************************** -# * -# Copyright 2020 AT&T Intellectual Property * -# * -# Licensed under the Apache License, Version 2.0 (the "License"); * -# you may not use this file except in compliance with the License. * -# You may obtain a copy of the License at * -# * -# http://www.apache.org/licenses/LICENSE-2.0 * -# * -# Unless required by applicable law or agreed to in writing, software * -# distributed under the License is distributed on an "AS IS" BASIS, * -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * -# See the License for the specific language governing permissions and * -# limitations under the License. * -# * -#******************************************************************************/ - -# For clarity: this generates object, not a lib as the CM command implies. -# -file(GLOB SOURCES "*.c") -file(GLOB HEADERS "*.h") - -include_directories(.) -add_library( asn1_objects STATIC ${SOURCES} ${HEADERS}) -target_include_directories (asn1_objects PUBLIC - $ - $ - PRIVATE src) - - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c deleted file mode 100644 index c0b6775..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-CP-Usage-Report-CellResourceReportItem.h" - -static int -memb_ueResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 32)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_ueResourceReportList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CU_CP_Usage_Report_UeResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ueResourceReportList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ueResourceReportList_specs_3 = { - sizeof(struct CU_CP_Usage_Report_CellResourceReportItem__ueResourceReportList), - offsetof(struct CU_CP_Usage_Report_CellResourceReportItem__ueResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ueResourceReportList_3 = { - "ueResourceReportList", - "ueResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_ueResourceReportList_tags_3, - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]) - 1, /* 1 */ - asn_DEF_ueResourceReportList_tags_3, /* Same as above */ - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]), /* 2 */ - { &asn_OER_type_ueResourceReportList_constr_3, &asn_PER_type_ueResourceReportList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_ueResourceReportList_3, - 1, /* Single element */ - &asn_SPC_ueResourceReportList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_CellResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_CellResourceReportItem, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_CellResourceReportItem, ueResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_ueResourceReportList_3, - 0, - { &asn_OER_memb_ueResourceReportList_constr_3, &asn_PER_memb_ueResourceReportList_constr_3, memb_ueResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "ueResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_CP_Usage_Report_CellResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_CellResourceReportItem_specs_1 = { - sizeof(struct CU_CP_Usage_Report_CellResourceReportItem), - offsetof(struct CU_CP_Usage_Report_CellResourceReportItem, _asn_ctx), - asn_MAP_CU_CP_Usage_Report_CellResourceReportItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_CellResourceReportItem = { - "CU-CP-Usage-Report-CellResourceReportItem", - "CU-CP-Usage-Report-CellResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1, - sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_CP_Usage_Report_CellResourceReportItem_1, - 2, /* Elements count */ - &asn_SPC_CU_CP_Usage_Report_CellResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h deleted file mode 100644 index 9fb9dd9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_CP_Usage_Report_CellResourceReportItem_H_ -#define _CU_CP_Usage_Report_CellResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "NRCGI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CU_CP_Usage_Report_UeResourceReportItem; - -/* CU-CP-Usage-Report-CellResourceReportItem */ -typedef struct CU_CP_Usage_Report_CellResourceReportItem { - NRCGI_t nRCGI; - struct CU_CP_Usage_Report_CellResourceReportItem__ueResourceReportList { - A_SEQUENCE_OF(struct CU_CP_Usage_Report_UeResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ueResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_CP_Usage_Report_CellResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_CellResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_CellResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_CellResourceReportItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CU-CP-Usage-Report-UeResourceReportItem.h" - -#endif /* _CU_CP_Usage_Report_CellResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.c deleted file mode 100644 index 22055b3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-CP-Usage-Report-Per-UE.h" - -static int -memb_cellResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 16384)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..16384)) */}; -static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..16384)) */}; -static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CU_CP_Usage_Report_CellResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = { - sizeof(struct CU_CP_Usage_Report_Per_UE__cellResourceReportList), - offsetof(struct CU_CP_Usage_Report_Per_UE__cellResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = { - "cellResourceReportList", - "cellResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_cellResourceReportList_tags_2, - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_cellResourceReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_cellResourceReportList_2, - 1, /* Single element */ - &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_Per_UE_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_Per_UE, cellResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_cellResourceReportList_2, - 0, - { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "cellResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_CP_Usage_Report_Per_UE_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_Per_UE_specs_1 = { - sizeof(struct CU_CP_Usage_Report_Per_UE), - offsetof(struct CU_CP_Usage_Report_Per_UE, _asn_ctx), - asn_MAP_CU_CP_Usage_Report_Per_UE_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_Per_UE = { - "CU-CP-Usage-Report-Per-UE", - "CU-CP-Usage-Report-Per-UE", - &asn_OP_SEQUENCE, - asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1, - sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_CP_Usage_Report_Per_UE_1, - 1, /* Elements count */ - &asn_SPC_CU_CP_Usage_Report_Per_UE_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.h deleted file mode 100644 index dad74ca..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-Per-UE.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_CP_Usage_Report_Per_UE_H_ -#define _CU_CP_Usage_Report_Per_UE_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CU_CP_Usage_Report_CellResourceReportItem; - -/* CU-CP-Usage-Report-Per-UE */ -typedef struct CU_CP_Usage_Report_Per_UE { - struct CU_CP_Usage_Report_Per_UE__cellResourceReportList { - A_SEQUENCE_OF(struct CU_CP_Usage_Report_CellResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cellResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_CP_Usage_Report_Per_UE_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_Per_UE; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_Per_UE_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_Per_UE_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CU-CP-Usage-Report-CellResourceReportItem.h" - -#endif /* _CU_CP_Usage_Report_Per_UE_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c deleted file mode 100644 index de4d8de..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-CP-Usage-Report-UeResourceReportItem.h" - -asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_UeResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, c_RNTI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_C_RNTI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "c-RNTI" - }, - { ATF_POINTER, 2, offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, serving_Cell_RF_Type), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "serving-Cell-RF-Type" - }, - { ATF_POINTER, 1, offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, neighbor_Cell_RF), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "neighbor-Cell-RF" - }, -}; -static const int asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* serving-Cell-RF-Type */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* neighbor-Cell-RF */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_UeResourceReportItem_specs_1 = { - sizeof(struct CU_CP_Usage_Report_UeResourceReportItem), - offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, _asn_ctx), - asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_UeResourceReportItem = { - "CU-CP-Usage-Report-UeResourceReportItem", - "CU-CP-Usage-Report-UeResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1, - sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_CP_Usage_Report_UeResourceReportItem_1, - 3, /* Elements count */ - &asn_SPC_CU_CP_Usage_Report_UeResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h deleted file mode 100644 index 11edd99..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_CP_Usage_Report_UeResourceReportItem_H_ -#define _CU_CP_Usage_Report_UeResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "C-RNTI.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* CU-CP-Usage-Report-UeResourceReportItem */ -typedef struct CU_CP_Usage_Report_UeResourceReportItem { - C_RNTI_t c_RNTI; - OCTET_STRING_t *serving_Cell_RF_Type; /* OPTIONAL */ - OCTET_STRING_t *neighbor_Cell_RF; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_CP_Usage_Report_UeResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_UeResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_UeResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_UeResourceReportItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _CU_CP_Usage_Report_UeResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c deleted file mode 100644 index 4781c55..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-UP-Usage-Report-CellResourceReportItem.h" - -static int -memb_ueResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 32)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_ueResourceReportList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CU_UP_Usage_Report_UeResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ueResourceReportList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ueResourceReportList_specs_3 = { - sizeof(struct CU_UP_Usage_Report_CellResourceReportItem__ueResourceReportList), - offsetof(struct CU_UP_Usage_Report_CellResourceReportItem__ueResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ueResourceReportList_3 = { - "ueResourceReportList", - "ueResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_ueResourceReportList_tags_3, - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]) - 1, /* 1 */ - asn_DEF_ueResourceReportList_tags_3, /* Same as above */ - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]), /* 2 */ - { &asn_OER_type_ueResourceReportList_constr_3, &asn_PER_type_ueResourceReportList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_ueResourceReportList_3, - 1, /* Single element */ - &asn_SPC_ueResourceReportList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_CellResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_CellResourceReportItem, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_CellResourceReportItem, ueResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_ueResourceReportList_3, - 0, - { &asn_OER_memb_ueResourceReportList_constr_3, &asn_PER_memb_ueResourceReportList_constr_3, memb_ueResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "ueResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_UP_Usage_Report_CellResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_CellResourceReportItem_specs_1 = { - sizeof(struct CU_UP_Usage_Report_CellResourceReportItem), - offsetof(struct CU_UP_Usage_Report_CellResourceReportItem, _asn_ctx), - asn_MAP_CU_UP_Usage_Report_CellResourceReportItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_CellResourceReportItem = { - "CU-UP-Usage-Report-CellResourceReportItem", - "CU-UP-Usage-Report-CellResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1, - sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_UP_Usage_Report_CellResourceReportItem_1, - 2, /* Elements count */ - &asn_SPC_CU_UP_Usage_Report_CellResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h deleted file mode 100644 index f313f40..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_UP_Usage_Report_CellResourceReportItem_H_ -#define _CU_UP_Usage_Report_CellResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "NRCGI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CU_UP_Usage_Report_UeResourceReportItem; - -/* CU-UP-Usage-Report-CellResourceReportItem */ -typedef struct CU_UP_Usage_Report_CellResourceReportItem { - NRCGI_t nRCGI; - struct CU_UP_Usage_Report_CellResourceReportItem__ueResourceReportList { - A_SEQUENCE_OF(struct CU_UP_Usage_Report_UeResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ueResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_UP_Usage_Report_CellResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_CellResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_CellResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_CellResourceReportItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CU-UP-Usage-Report-UeResourceReportItem.h" - -#endif /* _CU_UP_Usage_Report_CellResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.c deleted file mode 100644 index 5213281..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-UP-Usage-Report-Per-UE.h" - -static int -memb_cellResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 512)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CU_UP_Usage_Report_CellResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = { - sizeof(struct CU_UP_Usage_Report_Per_UE__cellResourceReportList), - offsetof(struct CU_UP_Usage_Report_Per_UE__cellResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = { - "cellResourceReportList", - "cellResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_cellResourceReportList_tags_2, - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_cellResourceReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_cellResourceReportList_2, - 1, /* Single element */ - &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_Per_UE_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_Per_UE, cellResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_cellResourceReportList_2, - 0, - { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "cellResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_UP_Usage_Report_Per_UE_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_Per_UE_specs_1 = { - sizeof(struct CU_UP_Usage_Report_Per_UE), - offsetof(struct CU_UP_Usage_Report_Per_UE, _asn_ctx), - asn_MAP_CU_UP_Usage_Report_Per_UE_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_Per_UE = { - "CU-UP-Usage-Report-Per-UE", - "CU-UP-Usage-Report-Per-UE", - &asn_OP_SEQUENCE, - asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1, - sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_UP_Usage_Report_Per_UE_1, - 1, /* Elements count */ - &asn_SPC_CU_UP_Usage_Report_Per_UE_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.h deleted file mode 100644 index 71e6ed9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-Per-UE.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_UP_Usage_Report_Per_UE_H_ -#define _CU_UP_Usage_Report_Per_UE_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CU_UP_Usage_Report_CellResourceReportItem; - -/* CU-UP-Usage-Report-Per-UE */ -typedef struct CU_UP_Usage_Report_Per_UE { - struct CU_UP_Usage_Report_Per_UE__cellResourceReportList { - A_SEQUENCE_OF(struct CU_UP_Usage_Report_CellResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cellResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_UP_Usage_Report_Per_UE_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_Per_UE; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_Per_UE_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_Per_UE_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CU-UP-Usage-Report-CellResourceReportItem.h" - -#endif /* _CU_UP_Usage_Report_Per_UE_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c deleted file mode 100644 index 1867379..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CU-UP-Usage-Report-UeResourceReportItem.h" - -static int -memb_pDCPBytesDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_UeResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, c_RNTI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_C_RNTI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "c-RNTI" - }, - { ATF_POINTER, 2, offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, pDCPBytesDL), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesDL_constr_3, &asn_PER_memb_pDCPBytesDL_constr_3, memb_pDCPBytesDL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesDL" - }, - { ATF_POINTER, 1, offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, pDCPBytesUL), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesUL_constr_4, &asn_PER_memb_pDCPBytesUL_constr_4, memb_pDCPBytesUL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesUL" - }, -}; -static const int asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pDCPBytesDL */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pDCPBytesUL */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_UeResourceReportItem_specs_1 = { - sizeof(struct CU_UP_Usage_Report_UeResourceReportItem), - offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, _asn_ctx), - asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_UeResourceReportItem = { - "CU-UP-Usage-Report-UeResourceReportItem", - "CU-UP-Usage-Report-UeResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1, - sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CU_UP_Usage_Report_UeResourceReportItem_1, - 3, /* Elements count */ - &asn_SPC_CU_UP_Usage_Report_UeResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h deleted file mode 100644 index 3a3dec7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CU_UP_Usage_Report_UeResourceReportItem_H_ -#define _CU_UP_Usage_Report_UeResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "C-RNTI.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* CU-UP-Usage-Report-UeResourceReportItem */ -typedef struct CU_UP_Usage_Report_UeResourceReportItem { - C_RNTI_t c_RNTI; - INTEGER_t *pDCPBytesDL; /* OPTIONAL */ - INTEGER_t *pDCPBytesUL; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CU_UP_Usage_Report_UeResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_UeResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_UeResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_UeResourceReportItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _CU_UP_Usage_Report_UeResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.c deleted file mode 100644 index bd27283..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CUUPMeasurement-Container.h" - -static int -memb_plmnList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 12)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_plmnList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..12)) */}; -static asn_per_constraints_t asn_PER_type_plmnList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 12 } /* (SIZE(1..12)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_plmnList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..12)) */}; -static asn_per_constraints_t asn_PER_memb_plmnList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 12 } /* (SIZE(1..12)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_plmnList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PlmnID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_plmnList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_plmnList_specs_2 = { - sizeof(struct CUUPMeasurement_Container__plmnList), - offsetof(struct CUUPMeasurement_Container__plmnList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_plmnList_2 = { - "plmnList", - "plmnList", - &asn_OP_SEQUENCE_OF, - asn_DEF_plmnList_tags_2, - sizeof(asn_DEF_plmnList_tags_2) - /sizeof(asn_DEF_plmnList_tags_2[0]) - 1, /* 1 */ - asn_DEF_plmnList_tags_2, /* Same as above */ - sizeof(asn_DEF_plmnList_tags_2) - /sizeof(asn_DEF_plmnList_tags_2[0]), /* 2 */ - { &asn_OER_type_plmnList_constr_2, &asn_PER_type_plmnList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_plmnList_2, - 1, /* Single element */ - &asn_SPC_plmnList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CUUPMeasurement_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CUUPMeasurement_Container, plmnList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_plmnList_2, - 0, - { &asn_OER_memb_plmnList_constr_2, &asn_PER_memb_plmnList_constr_2, memb_plmnList_constraint_1 }, - 0, 0, /* No default value */ - "plmnList" - }, -}; -static const ber_tlv_tag_t asn_DEF_CUUPMeasurement_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CUUPMeasurement_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* plmnList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CUUPMeasurement_Container_specs_1 = { - sizeof(struct CUUPMeasurement_Container), - offsetof(struct CUUPMeasurement_Container, _asn_ctx), - asn_MAP_CUUPMeasurement_Container_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CUUPMeasurement_Container = { - "CUUPMeasurement-Container", - "CUUPMeasurement-Container", - &asn_OP_SEQUENCE, - asn_DEF_CUUPMeasurement_Container_tags_1, - sizeof(asn_DEF_CUUPMeasurement_Container_tags_1) - /sizeof(asn_DEF_CUUPMeasurement_Container_tags_1[0]), /* 1 */ - asn_DEF_CUUPMeasurement_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_CUUPMeasurement_Container_tags_1) - /sizeof(asn_DEF_CUUPMeasurement_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CUUPMeasurement_Container_1, - 1, /* Elements count */ - &asn_SPC_CUUPMeasurement_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.h deleted file mode 100644 index 14aafc3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CUUPMeasurement-Container.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CUUPMeasurement_Container_H_ -#define _CUUPMeasurement_Container_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PlmnID_List; - -/* CUUPMeasurement-Container */ -typedef struct CUUPMeasurement_Container { - struct CUUPMeasurement_Container__plmnList { - A_SEQUENCE_OF(struct PlmnID_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } plmnList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CUUPMeasurement_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CUUPMeasurement_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_CUUPMeasurement_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_CUUPMeasurement_Container_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PlmnID-List.h" - -#endif /* _CUUPMeasurement_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.c deleted file mode 100644 index 8f3f2e8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "Cause.h" - -static asn_oer_constraints_t asn_OER_type_Cause_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_Cause_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_Cause_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricRequest), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseRICrequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricService), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseRICservice, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricService" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.e2Node), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseE2node, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2Node" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseTransport, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "transport" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseProtocol, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocol" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseMisc, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "misc" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_Cause_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* misc */ -}; -asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = { - sizeof(struct Cause), - offsetof(struct Cause, _asn_ctx), - offsetof(struct Cause, present), - sizeof(((struct Cause *)0)->present), - asn_MAP_Cause_tag2el_1, - 6, /* Count of tags in the map */ - 0, 0, - 6 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_Cause = { - "Cause", - "Cause", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_Cause_constr_1, &asn_PER_type_Cause_constr_1, CHOICE_constraint }, - asn_MBR_Cause_1, - 6, /* Elements count */ - &asn_SPC_Cause_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.h deleted file mode 100644 index 79f0aac..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Cause.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _Cause_H_ -#define _Cause_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "CauseRICrequest.h" -#include "CauseRICservice.h" -#include "CauseE2node.h" -#include "CauseTransport.h" -#include "CauseProtocol.h" -#include "CauseMisc.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum Cause_PR { - Cause_PR_NOTHING, /* No components present */ - Cause_PR_ricRequest, - Cause_PR_ricService, - Cause_PR_e2Node, - Cause_PR_transport, - Cause_PR_protocol, - Cause_PR_misc - /* Extensions may appear below */ - -} Cause_PR; - -/* Cause */ -typedef struct Cause { - Cause_PR present; - union Cause_u { - CauseRICrequest_t ricRequest; - CauseRICservice_t ricService; - CauseE2node_t e2Node; - CauseTransport_t transport; - CauseProtocol_t protocol; - CauseMisc_t misc; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} Cause_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_Cause; -extern asn_CHOICE_specifics_t asn_SPC_Cause_specs_1; -extern asn_TYPE_member_t asn_MBR_Cause_1[6]; -extern asn_per_constraints_t asn_PER_type_Cause_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _Cause_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.c deleted file mode 100644 index c52989a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "CauseE2node.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_CauseE2node_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_CauseE2node_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseE2node_value2enum_1[] = { - { 0, 24, "e2node-component-unknown" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseE2node_enum2value_1[] = { - 0 /* e2node-component-unknown(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseE2node_specs_1 = { - asn_MAP_CauseE2node_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseE2node_enum2value_1, /* N => "tag"; sorted by N */ - 1, /* Number of elements in the maps */ - 2, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseE2node_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseE2node = { - "CauseE2node", - "CauseE2node", - &asn_OP_NativeEnumerated, - asn_DEF_CauseE2node_tags_1, - sizeof(asn_DEF_CauseE2node_tags_1) - /sizeof(asn_DEF_CauseE2node_tags_1[0]), /* 1 */ - asn_DEF_CauseE2node_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseE2node_tags_1) - /sizeof(asn_DEF_CauseE2node_tags_1[0]), /* 1 */ - { &asn_OER_type_CauseE2node_constr_1, &asn_PER_type_CauseE2node_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseE2node_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.h deleted file mode 100644 index 483f655..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseE2node.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _CauseE2node_H_ -#define _CauseE2node_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseE2node { - CauseE2node_e2node_component_unknown = 0 - /* - * Enumeration is extensible - */ -} e_CauseE2node; - -/* CauseE2node */ -typedef long CauseE2node_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseE2node_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseE2node; -extern const asn_INTEGER_specifics_t asn_SPC_CauseE2node_specs_1; -asn_struct_free_f CauseE2node_free; -asn_struct_print_f CauseE2node_print; -asn_constr_check_f CauseE2node_constraint; -ber_type_decoder_f CauseE2node_decode_ber; -der_type_encoder_f CauseE2node_encode_der; -xer_type_decoder_f CauseE2node_decode_xer; -xer_type_encoder_f CauseE2node_encode_xer; -oer_type_decoder_f CauseE2node_decode_oer; -oer_type_encoder_f CauseE2node_encode_oer; -per_type_decoder_f CauseE2node_decode_uper; -per_type_encoder_f CauseE2node_encode_uper; -per_type_decoder_f CauseE2node_decode_aper; -per_type_encoder_f CauseE2node_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseE2node_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.c deleted file mode 100644 index d7cb3a3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "CauseMisc.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_CauseMisc_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = { - { 0, 27, "control-processing-overload" }, - { 1, 16, "hardware-failure" }, - { 2, 15, "om-intervention" }, - { 3, 11, "unspecified" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = { - 0, /* control-processing-overload(0) */ - 1, /* hardware-failure(1) */ - 2, /* om-intervention(2) */ - 3 /* unspecified(3) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = { - asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */ - 4, /* Number of elements in the maps */ - 5, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseMisc_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseMisc = { - "CauseMisc", - "CauseMisc", - &asn_OP_NativeEnumerated, - asn_DEF_CauseMisc_tags_1, - sizeof(asn_DEF_CauseMisc_tags_1) - /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ - asn_DEF_CauseMisc_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseMisc_tags_1) - /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ - { &asn_OER_type_CauseMisc_constr_1, &asn_PER_type_CauseMisc_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseMisc_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.h deleted file mode 100644 index a8d2306..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseMisc.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _CauseMisc_H_ -#define _CauseMisc_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseMisc { - CauseMisc_control_processing_overload = 0, - CauseMisc_hardware_failure = 1, - CauseMisc_om_intervention = 2, - CauseMisc_unspecified = 3 - /* - * Enumeration is extensible - */ -} e_CauseMisc; - -/* CauseMisc */ -typedef long CauseMisc_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseMisc_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseMisc; -extern const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1; -asn_struct_free_f CauseMisc_free; -asn_struct_print_f CauseMisc_print; -asn_constr_check_f CauseMisc_constraint; -ber_type_decoder_f CauseMisc_decode_ber; -der_type_encoder_f CauseMisc_encode_der; -xer_type_decoder_f CauseMisc_decode_xer; -xer_type_encoder_f CauseMisc_encode_xer; -oer_type_decoder_f CauseMisc_decode_oer; -oer_type_encoder_f CauseMisc_encode_oer; -per_type_decoder_f CauseMisc_decode_uper; -per_type_encoder_f CauseMisc_encode_uper; -per_type_decoder_f CauseMisc_decode_aper; -per_type_encoder_f CauseMisc_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseMisc_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseProtocol.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseProtocol.c deleted file mode 100644 index 7fdc4c4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseProtocol.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "CauseProtocol.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_CauseProtocol_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseProtocol_value2enum_1[] = { - { 0, 21, "transfer-syntax-error" }, - { 1, 28, "abstract-syntax-error-reject" }, - { 2, 39, "abstract-syntax-error-ignore-and-notify" }, - { 3, 42, "message-not-compatible-with-receiver-state" }, - { 4, 14, "semantic-error" }, - { 5, 49, "abstract-syntax-error-falsely-constructed-message" }, - { 6, 11, "unspecified" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = { - 5, /* abstract-syntax-error-falsely-constructed-message(5) */ - 2, /* abstract-syntax-error-ignore-and-notify(2) */ - 1, /* abstract-syntax-error-reject(1) */ - 3, /* message-not-compatible-with-receiver-state(3) */ - 4, /* semantic-error(4) */ - 0, /* transfer-syntax-error(0) */ - 6 /* unspecified(6) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = { - asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */ - 7, /* Number of elements in the maps */ - 8, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseProtocol_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseProtocol = { - "CauseProtocol", - "CauseProtocol", - &asn_OP_NativeEnumerated, - asn_DEF_CauseProtocol_tags_1, - sizeof(asn_DEF_CauseProtocol_tags_1) - /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ - asn_DEF_CauseProtocol_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseProtocol_tags_1) - /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ - { &asn_OER_type_CauseProtocol_constr_1, &asn_PER_type_CauseProtocol_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseProtocol_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseProtocol.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseProtocol.h deleted file mode 100644 index b6dbc0a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseProtocol.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _CauseProtocol_H_ -#define _CauseProtocol_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseProtocol { - CauseProtocol_transfer_syntax_error = 0, - CauseProtocol_abstract_syntax_error_reject = 1, - CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, - CauseProtocol_message_not_compatible_with_receiver_state = 3, - CauseProtocol_semantic_error = 4, - CauseProtocol_abstract_syntax_error_falsely_constructed_message = 5, - CauseProtocol_unspecified = 6 - /* - * Enumeration is extensible - */ -} e_CauseProtocol; - -/* CauseProtocol */ -typedef long CauseProtocol_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol; -extern const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1; -asn_struct_free_f CauseProtocol_free; -asn_struct_print_f CauseProtocol_print; -asn_constr_check_f CauseProtocol_constraint; -ber_type_decoder_f CauseProtocol_decode_ber; -der_type_encoder_f CauseProtocol_encode_der; -xer_type_decoder_f CauseProtocol_decode_xer; -xer_type_encoder_f CauseProtocol_encode_xer; -oer_type_decoder_f CauseProtocol_decode_oer; -oer_type_encoder_f CauseProtocol_encode_oer; -per_type_decoder_f CauseProtocol_decode_uper; -per_type_encoder_f CauseProtocol_encode_uper; -per_type_decoder_f CauseProtocol_decode_aper; -per_type_encoder_f CauseProtocol_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseProtocol_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICrequest.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICrequest.c deleted file mode 100644 index 4ed2c85..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICrequest.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "CauseRICrequest.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_CauseRICrequest_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_CauseRICrequest_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 13 } /* (0..13,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseRICrequest_value2enum_1[] = { - { 0, 23, "ran-function-id-invalid" }, - { 1, 20, "action-not-supported" }, - { 2, 17, "excessive-actions" }, - { 3, 16, "duplicate-action" }, - { 4, 23, "duplicate-event-trigger" }, - { 5, 23, "function-resource-limit" }, - { 6, 18, "request-id-unknown" }, - { 7, 46, "inconsistent-action-subsequent-action-sequence" }, - { 8, 23, "control-message-invalid" }, - { 9, 27, "ric-call-process-id-invalid" }, - { 10, 21, "control-timer-expired" }, - { 11, 25, "control-failed-to-execute" }, - { 12, 16, "system-not-ready" }, - { 13, 11, "unspecified" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseRICrequest_enum2value_1[] = { - 1, /* action-not-supported(1) */ - 11, /* control-failed-to-execute(11) */ - 8, /* control-message-invalid(8) */ - 10, /* control-timer-expired(10) */ - 3, /* duplicate-action(3) */ - 4, /* duplicate-event-trigger(4) */ - 2, /* excessive-actions(2) */ - 5, /* function-resource-limit(5) */ - 7, /* inconsistent-action-subsequent-action-sequence(7) */ - 0, /* ran-function-id-invalid(0) */ - 6, /* request-id-unknown(6) */ - 9, /* ric-call-process-id-invalid(9) */ - 12, /* system-not-ready(12) */ - 13 /* unspecified(13) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseRICrequest_specs_1 = { - asn_MAP_CauseRICrequest_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseRICrequest_enum2value_1, /* N => "tag"; sorted by N */ - 14, /* Number of elements in the maps */ - 15, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseRICrequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseRICrequest = { - "CauseRICrequest", - "CauseRICrequest", - &asn_OP_NativeEnumerated, - asn_DEF_CauseRICrequest_tags_1, - sizeof(asn_DEF_CauseRICrequest_tags_1) - /sizeof(asn_DEF_CauseRICrequest_tags_1[0]), /* 1 */ - asn_DEF_CauseRICrequest_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseRICrequest_tags_1) - /sizeof(asn_DEF_CauseRICrequest_tags_1[0]), /* 1 */ - { &asn_OER_type_CauseRICrequest_constr_1, &asn_PER_type_CauseRICrequest_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseRICrequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICrequest.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICrequest.h deleted file mode 100644 index 26822c6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICrequest.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _CauseRICrequest_H_ -#define _CauseRICrequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseRICrequest { - CauseRICrequest_ran_function_id_invalid = 0, - CauseRICrequest_action_not_supported = 1, - CauseRICrequest_excessive_actions = 2, - CauseRICrequest_duplicate_action = 3, - CauseRICrequest_duplicate_event_trigger = 4, - CauseRICrequest_function_resource_limit = 5, - CauseRICrequest_request_id_unknown = 6, - CauseRICrequest_inconsistent_action_subsequent_action_sequence = 7, - CauseRICrequest_control_message_invalid = 8, - CauseRICrequest_ric_call_process_id_invalid = 9, - CauseRICrequest_control_timer_expired = 10, - CauseRICrequest_control_failed_to_execute = 11, - CauseRICrequest_system_not_ready = 12, - CauseRICrequest_unspecified = 13 - /* - * Enumeration is extensible - */ -} e_CauseRICrequest; - -/* CauseRICrequest */ -typedef long CauseRICrequest_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseRICrequest_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseRICrequest; -extern const asn_INTEGER_specifics_t asn_SPC_CauseRICrequest_specs_1; -asn_struct_free_f CauseRICrequest_free; -asn_struct_print_f CauseRICrequest_print; -asn_constr_check_f CauseRICrequest_constraint; -ber_type_decoder_f CauseRICrequest_decode_ber; -der_type_encoder_f CauseRICrequest_encode_der; -xer_type_decoder_f CauseRICrequest_decode_xer; -xer_type_encoder_f CauseRICrequest_encode_xer; -oer_type_decoder_f CauseRICrequest_decode_oer; -oer_type_encoder_f CauseRICrequest_encode_oer; -per_type_decoder_f CauseRICrequest_decode_uper; -per_type_encoder_f CauseRICrequest_encode_uper; -per_type_decoder_f CauseRICrequest_decode_aper; -per_type_encoder_f CauseRICrequest_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseRICrequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICservice.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICservice.c deleted file mode 100644 index 094ad14..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICservice.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "CauseRICservice.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_CauseRICservice_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseRICservice_value2enum_1[] = { - { 0, 26, "ran-function-not-supported" }, - { 1, 19, "excessive-functions" }, - { 2, 18, "ric-resource-limit" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseRICservice_enum2value_1[] = { - 1, /* excessive-functions(1) */ - 0, /* ran-function-not-supported(0) */ - 2 /* ric-resource-limit(2) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1 = { - asn_MAP_CauseRICservice_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseRICservice_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseRICservice_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseRICservice = { - "CauseRICservice", - "CauseRICservice", - &asn_OP_NativeEnumerated, - asn_DEF_CauseRICservice_tags_1, - sizeof(asn_DEF_CauseRICservice_tags_1) - /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ - asn_DEF_CauseRICservice_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseRICservice_tags_1) - /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ - { &asn_OER_type_CauseRICservice_constr_1, &asn_PER_type_CauseRICservice_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseRICservice_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICservice.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICservice.h deleted file mode 100644 index 429dd9e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseRICservice.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _CauseRICservice_H_ -#define _CauseRICservice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseRICservice { - CauseRICservice_ran_function_not_supported = 0, - CauseRICservice_excessive_functions = 1, - CauseRICservice_ric_resource_limit = 2 - /* - * Enumeration is extensible - */ -} e_CauseRICservice; - -/* CauseRICservice */ -typedef long CauseRICservice_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseRICservice; -extern const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1; -asn_struct_free_f CauseRICservice_free; -asn_struct_print_f CauseRICservice_print; -asn_constr_check_f CauseRICservice_constraint; -ber_type_decoder_f CauseRICservice_decode_ber; -der_type_encoder_f CauseRICservice_encode_der; -xer_type_decoder_f CauseRICservice_decode_xer; -xer_type_encoder_f CauseRICservice_encode_xer; -oer_type_decoder_f CauseRICservice_decode_oer; -oer_type_encoder_f CauseRICservice_encode_oer; -per_type_decoder_f CauseRICservice_decode_uper; -per_type_encoder_f CauseRICservice_encode_uper; -per_type_decoder_f CauseRICservice_decode_aper; -per_type_encoder_f CauseRICservice_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseRICservice_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseTransport.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseTransport.c deleted file mode 100644 index 58b3d14..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseTransport.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "CauseTransport.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_CauseTransport_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = { - { 0, 11, "unspecified" }, - { 1, 30, "transport-resource-unavailable" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = { - 1, /* transport-resource-unavailable(1) */ - 0 /* unspecified(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = { - asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseTransport_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseTransport = { - "CauseTransport", - "CauseTransport", - &asn_OP_NativeEnumerated, - asn_DEF_CauseTransport_tags_1, - sizeof(asn_DEF_CauseTransport_tags_1) - /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ - asn_DEF_CauseTransport_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseTransport_tags_1) - /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ - { &asn_OER_type_CauseTransport_constr_1, &asn_PER_type_CauseTransport_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseTransport_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseTransport.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseTransport.h deleted file mode 100644 index d4f5450..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CauseTransport.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _CauseTransport_H_ -#define _CauseTransport_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseTransport { - CauseTransport_unspecified = 0, - CauseTransport_transport_resource_unavailable = 1 - /* - * Enumeration is extensible - */ -} e_CauseTransport; - -/* CauseTransport */ -typedef long CauseTransport_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseTransport_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseTransport; -extern const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1; -asn_struct_free_f CauseTransport_free; -asn_struct_print_f CauseTransport_print; -asn_constr_check_f CauseTransport_constraint; -ber_type_decoder_f CauseTransport_decode_ber; -der_type_encoder_f CauseTransport_encode_der; -xer_type_decoder_f CauseTransport_decode_xer; -xer_type_encoder_f CauseTransport_encode_xer; -oer_type_decoder_f CauseTransport_decode_oer; -oer_type_encoder_f CauseTransport_encode_oer; -per_type_decoder_f CauseTransport_decode_uper; -per_type_encoder_f CauseTransport_encode_uper; -per_type_decoder_f CauseTransport_decode_aper; -per_type_encoder_f CauseTransport_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseTransport_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CellResourceReportListItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CellResourceReportListItem.c deleted file mode 100644 index 670d42a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CellResourceReportListItem.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "CellResourceReportListItem.h" - -static int -memb_dl_TotalofAvailablePRBs_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 273)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ul_TotalofAvailablePRBs_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 273)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_servedPlmnPerCellList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 12)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_servedPlmnPerCellList_constr_5 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..12)) */}; -static asn_per_constraints_t asn_PER_type_servedPlmnPerCellList_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 12 } /* (SIZE(1..12)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_dl_TotalofAvailablePRBs_constr_3 CC_NOTUSED = { - { 2, 1 } /* (0..273) */, - -1}; -static asn_per_constraints_t asn_PER_memb_dl_TotalofAvailablePRBs_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 9, 9, 0, 273 } /* (0..273) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ul_TotalofAvailablePRBs_constr_4 CC_NOTUSED = { - { 2, 1 } /* (0..273) */, - -1}; -static asn_per_constraints_t asn_PER_memb_ul_TotalofAvailablePRBs_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 9, 9, 0, 273 } /* (0..273) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_servedPlmnPerCellList_constr_5 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..12)) */}; -static asn_per_constraints_t asn_PER_memb_servedPlmnPerCellList_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 12 } /* (SIZE(1..12)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_servedPlmnPerCellList_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ServedPlmnPerCellListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_servedPlmnPerCellList_tags_5[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_servedPlmnPerCellList_specs_5 = { - sizeof(struct CellResourceReportListItem__servedPlmnPerCellList), - offsetof(struct CellResourceReportListItem__servedPlmnPerCellList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_servedPlmnPerCellList_5 = { - "servedPlmnPerCellList", - "servedPlmnPerCellList", - &asn_OP_SEQUENCE_OF, - asn_DEF_servedPlmnPerCellList_tags_5, - sizeof(asn_DEF_servedPlmnPerCellList_tags_5) - /sizeof(asn_DEF_servedPlmnPerCellList_tags_5[0]) - 1, /* 1 */ - asn_DEF_servedPlmnPerCellList_tags_5, /* Same as above */ - sizeof(asn_DEF_servedPlmnPerCellList_tags_5) - /sizeof(asn_DEF_servedPlmnPerCellList_tags_5[0]), /* 2 */ - { &asn_OER_type_servedPlmnPerCellList_constr_5, &asn_PER_type_servedPlmnPerCellList_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_servedPlmnPerCellList_5, - 1, /* Single element */ - &asn_SPC_servedPlmnPerCellList_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_CellResourceReportListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CellResourceReportListItem, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_POINTER, 2, offsetof(struct CellResourceReportListItem, dl_TotalofAvailablePRBs), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_dl_TotalofAvailablePRBs_constr_3, &asn_PER_memb_dl_TotalofAvailablePRBs_constr_3, memb_dl_TotalofAvailablePRBs_constraint_1 }, - 0, 0, /* No default value */ - "dl-TotalofAvailablePRBs" - }, - { ATF_POINTER, 1, offsetof(struct CellResourceReportListItem, ul_TotalofAvailablePRBs), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ul_TotalofAvailablePRBs_constr_4, &asn_PER_memb_ul_TotalofAvailablePRBs_constr_4, memb_ul_TotalofAvailablePRBs_constraint_1 }, - 0, 0, /* No default value */ - "ul-TotalofAvailablePRBs" - }, - { ATF_NOFLAGS, 0, offsetof(struct CellResourceReportListItem, servedPlmnPerCellList), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - 0, - &asn_DEF_servedPlmnPerCellList_5, - 0, - { &asn_OER_memb_servedPlmnPerCellList_constr_5, &asn_PER_memb_servedPlmnPerCellList_constr_5, memb_servedPlmnPerCellList_constraint_1 }, - 0, 0, /* No default value */ - "servedPlmnPerCellList" - }, -}; -static const int asn_MAP_CellResourceReportListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_CellResourceReportListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CellResourceReportListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-TotalofAvailablePRBs */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ul-TotalofAvailablePRBs */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* servedPlmnPerCellList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CellResourceReportListItem_specs_1 = { - sizeof(struct CellResourceReportListItem), - offsetof(struct CellResourceReportListItem, _asn_ctx), - asn_MAP_CellResourceReportListItem_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_CellResourceReportListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CellResourceReportListItem = { - "CellResourceReportListItem", - "CellResourceReportListItem", - &asn_OP_SEQUENCE, - asn_DEF_CellResourceReportListItem_tags_1, - sizeof(asn_DEF_CellResourceReportListItem_tags_1) - /sizeof(asn_DEF_CellResourceReportListItem_tags_1[0]), /* 1 */ - asn_DEF_CellResourceReportListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_CellResourceReportListItem_tags_1) - /sizeof(asn_DEF_CellResourceReportListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CellResourceReportListItem_1, - 4, /* Elements count */ - &asn_SPC_CellResourceReportListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CellResourceReportListItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CellResourceReportListItem.h deleted file mode 100644 index 91bbf71..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CellResourceReportListItem.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _CellResourceReportListItem_H_ -#define _CellResourceReportListItem_H_ - - -#include - -/* Including external dependencies */ -#include "NRCGI.h" -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ServedPlmnPerCellListItem; - -/* CellResourceReportListItem */ -typedef struct CellResourceReportListItem { - NRCGI_t nRCGI; - long *dl_TotalofAvailablePRBs; /* OPTIONAL */ - long *ul_TotalofAvailablePRBs; /* OPTIONAL */ - struct CellResourceReportListItem__servedPlmnPerCellList { - A_SEQUENCE_OF(struct ServedPlmnPerCellListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } servedPlmnPerCellList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CellResourceReportListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CellResourceReportListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_CellResourceReportListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_CellResourceReportListItem_1[4]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "ServedPlmnPerCellListItem.h" - -#endif /* _CellResourceReportListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.c deleted file mode 100644 index 645d8c0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "Criticality.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_Criticality_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_Criticality_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = { - { 0, 6, "reject" }, - { 1, 6, "ignore" }, - { 2, 6, "notify" } -}; -static const unsigned int asn_MAP_Criticality_enum2value_1[] = { - 1, /* ignore(1) */ - 2, /* notify(2) */ - 0 /* reject(0) */ -}; -const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = { - asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_Criticality = { - "Criticality", - "Criticality", - &asn_OP_NativeEnumerated, - asn_DEF_Criticality_tags_1, - sizeof(asn_DEF_Criticality_tags_1) - /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ - asn_DEF_Criticality_tags_1, /* Same as above */ - sizeof(asn_DEF_Criticality_tags_1) - /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ - { &asn_OER_type_Criticality_constr_1, &asn_PER_type_Criticality_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_Criticality_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.h deleted file mode 100644 index 8a0ab54..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Criticality.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _Criticality_H_ -#define _Criticality_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum Criticality { - Criticality_reject = 0, - Criticality_ignore = 1, - Criticality_notify = 2 -} e_Criticality; - -/* Criticality */ -typedef long Criticality_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_Criticality_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_Criticality; -extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1; -asn_struct_free_f Criticality_free; -asn_struct_print_f Criticality_print; -asn_constr_check_f Criticality_constraint; -ber_type_decoder_f Criticality_decode_ber; -der_type_encoder_f Criticality_encode_der; -xer_type_decoder_f Criticality_decode_xer; -xer_type_encoder_f Criticality_encode_xer; -oer_type_decoder_f Criticality_decode_oer; -oer_type_encoder_f Criticality_encode_oer; -per_type_decoder_f Criticality_decode_uper; -per_type_encoder_f Criticality_encode_uper; -per_type_decoder_f Criticality_decode_aper; -per_type_encoder_f Criticality_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _Criticality_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-Item.c deleted file mode 100644 index bde7c2c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "CriticalityDiagnostics-IE-Item.h" - -asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iECriticality), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "iECriticality" - }, - { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iE_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "iE-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, typeOfError), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TypeOfError, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "typeOfError" - }, -}; -static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* typeOfError */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 = { - sizeof(struct CriticalityDiagnostics_IE_Item), - offsetof(struct CriticalityDiagnostics_IE_Item, _asn_ctx), - asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item = { - "CriticalityDiagnostics-IE-Item", - "CriticalityDiagnostics-IE-Item", - &asn_OP_SEQUENCE, - asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, - sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ - asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CriticalityDiagnostics_IE_Item_1, - 3, /* Elements count */ - &asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-Item.h deleted file mode 100644 index a8c0959..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _CriticalityDiagnostics_IE_Item_H_ -#define _CriticalityDiagnostics_IE_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "Criticality.h" -#include "ProtocolIE-ID.h" -#include "TypeOfError.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* CriticalityDiagnostics-IE-Item */ -typedef struct CriticalityDiagnostics_IE_Item { - Criticality_t iECriticality; - ProtocolIE_ID_t iE_ID; - TypeOfError_t typeOfError; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CriticalityDiagnostics_IE_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _CriticalityDiagnostics_IE_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-List.c deleted file mode 100644 index 3b72770..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "CriticalityDiagnostics-IE-List.h" - -#include "CriticalityDiagnostics-IE-Item.h" -static asn_oer_constraints_t asn_OER_type_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics_IE_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = { - sizeof(struct CriticalityDiagnostics_IE_List), - offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = { - "CriticalityDiagnostics-IE-List", - "CriticalityDiagnostics-IE-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_CriticalityDiagnostics_IE_List_tags_1, - sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ - asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ - sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ - { &asn_OER_type_CriticalityDiagnostics_IE_List_constr_1, &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_CriticalityDiagnostics_IE_List_1, - 1, /* Single element */ - &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-List.h deleted file mode 100644 index 79dc433..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics-IE-List.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _CriticalityDiagnostics_IE_List_H_ -#define _CriticalityDiagnostics_IE_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CriticalityDiagnostics_IE_Item; - -/* CriticalityDiagnostics-IE-List */ -typedef struct CriticalityDiagnostics_IE_List { - A_SEQUENCE_OF(struct CriticalityDiagnostics_IE_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CriticalityDiagnostics_IE_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List; -extern asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1; -extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[1]; -extern asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _CriticalityDiagnostics_IE_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics.c deleted file mode 100644 index b6569e3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "CriticalityDiagnostics.h" - -#include "RICrequestID.h" -#include "CriticalityDiagnostics-IE-List.h" -static asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = { - { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TriggeringMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "triggeringMessage" - }, - { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "procedureCriticality" - }, - { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, ricRequestorID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricRequestorID" - }, - { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CriticalityDiagnostics_IE_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "iEsCriticalityDiagnostics" - }, -}; -static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; -static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ricRequestorID */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iEsCriticalityDiagnostics */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = { - sizeof(struct CriticalityDiagnostics), - offsetof(struct CriticalityDiagnostics, _asn_ctx), - asn_MAP_CriticalityDiagnostics_tag2el_1, - 5, /* Count of tags in the map */ - asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */ - 5, 0, /* Root/Additions */ - 5, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = { - "CriticalityDiagnostics", - "CriticalityDiagnostics", - &asn_OP_SEQUENCE, - asn_DEF_CriticalityDiagnostics_tags_1, - sizeof(asn_DEF_CriticalityDiagnostics_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ - asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */ - sizeof(asn_DEF_CriticalityDiagnostics_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CriticalityDiagnostics_1, - 5, /* Elements count */ - &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics.h deleted file mode 100644 index 652c5c0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/CriticalityDiagnostics.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _CriticalityDiagnostics_H_ -#define _CriticalityDiagnostics_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "TriggeringMessage.h" -#include "Criticality.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RICrequestID; -struct CriticalityDiagnostics_IE_List; - -/* CriticalityDiagnostics */ -typedef struct CriticalityDiagnostics { - ProcedureCode_t *procedureCode; /* OPTIONAL */ - TriggeringMessage_t *triggeringMessage; /* OPTIONAL */ - Criticality_t *procedureCriticality; /* OPTIONAL */ - struct RICrequestID *ricRequestorID; /* OPTIONAL */ - struct CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CriticalityDiagnostics_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics; - -#ifdef __cplusplus -} -#endif - -#endif /* _CriticalityDiagnostics_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-CellResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-CellResourceReportItem.c deleted file mode 100644 index eee9621..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-CellResourceReportItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "DU-Usage-Report-CellResourceReportItem.h" - -static int -memb_ueResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 32)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_memb_ueResourceReportList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_ueResourceReportList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_DU_Usage_Report_UeResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ueResourceReportList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ueResourceReportList_specs_3 = { - sizeof(struct DU_Usage_Report_CellResourceReportItem__ueResourceReportList), - offsetof(struct DU_Usage_Report_CellResourceReportItem__ueResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ueResourceReportList_3 = { - "ueResourceReportList", - "ueResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_ueResourceReportList_tags_3, - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]) - 1, /* 1 */ - asn_DEF_ueResourceReportList_tags_3, /* Same as above */ - sizeof(asn_DEF_ueResourceReportList_tags_3) - /sizeof(asn_DEF_ueResourceReportList_tags_3[0]), /* 2 */ - { &asn_OER_type_ueResourceReportList_constr_3, &asn_PER_type_ueResourceReportList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_ueResourceReportList_3, - 1, /* Single element */ - &asn_SPC_ueResourceReportList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_DU_Usage_Report_CellResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_CellResourceReportItem, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_CellResourceReportItem, ueResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_ueResourceReportList_3, - 0, - { &asn_OER_memb_ueResourceReportList_constr_3, &asn_PER_memb_ueResourceReportList_constr_3, memb_ueResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "ueResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_DU_Usage_Report_CellResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_CellResourceReportItem_specs_1 = { - sizeof(struct DU_Usage_Report_CellResourceReportItem), - offsetof(struct DU_Usage_Report_CellResourceReportItem, _asn_ctx), - asn_MAP_DU_Usage_Report_CellResourceReportItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_CellResourceReportItem = { - "DU-Usage-Report-CellResourceReportItem", - "DU-Usage-Report-CellResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1, - sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_DU_Usage_Report_CellResourceReportItem_1, - 2, /* Elements count */ - &asn_SPC_DU_Usage_Report_CellResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-CellResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-CellResourceReportItem.h deleted file mode 100644 index 4a72572..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-CellResourceReportItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _DU_Usage_Report_CellResourceReportItem_H_ -#define _DU_Usage_Report_CellResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "NRCGI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct DU_Usage_Report_UeResourceReportItem; - -/* DU-Usage-Report-CellResourceReportItem */ -typedef struct DU_Usage_Report_CellResourceReportItem { - NRCGI_t nRCGI; - struct DU_Usage_Report_CellResourceReportItem__ueResourceReportList { - A_SEQUENCE_OF(struct DU_Usage_Report_UeResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ueResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} DU_Usage_Report_CellResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_CellResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_CellResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_DU_Usage_Report_CellResourceReportItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "DU-Usage-Report-UeResourceReportItem.h" - -#endif /* _DU_Usage_Report_CellResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.c deleted file mode 100644 index 9ba13af..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "DU-Usage-Report-Per-UE.h" - -static int -memb_cellResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 512)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_DU_Usage_Report_CellResourceReportItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = { - sizeof(struct DU_Usage_Report_Per_UE__cellResourceReportList), - offsetof(struct DU_Usage_Report_Per_UE__cellResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = { - "cellResourceReportList", - "cellResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_cellResourceReportList_tags_2, - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_cellResourceReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_cellResourceReportList_2, - 1, /* Single element */ - &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_DU_Usage_Report_Per_UE_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_Per_UE, cellResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_cellResourceReportList_2, - 0, - { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "cellResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_DU_Usage_Report_Per_UE_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_DU_Usage_Report_Per_UE_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_Per_UE_specs_1 = { - sizeof(struct DU_Usage_Report_Per_UE), - offsetof(struct DU_Usage_Report_Per_UE, _asn_ctx), - asn_MAP_DU_Usage_Report_Per_UE_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_Per_UE = { - "DU-Usage-Report-Per-UE", - "DU-Usage-Report-Per-UE", - &asn_OP_SEQUENCE, - asn_DEF_DU_Usage_Report_Per_UE_tags_1, - sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - asn_DEF_DU_Usage_Report_Per_UE_tags_1, /* Same as above */ - sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_DU_Usage_Report_Per_UE_1, - 1, /* Elements count */ - &asn_SPC_DU_Usage_Report_Per_UE_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.h deleted file mode 100644 index 2fc44d1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-Per-UE.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _DU_Usage_Report_Per_UE_H_ -#define _DU_Usage_Report_Per_UE_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct DU_Usage_Report_CellResourceReportItem; - -/* DU-Usage-Report-Per-UE */ -typedef struct DU_Usage_Report_Per_UE { - struct DU_Usage_Report_Per_UE__cellResourceReportList { - A_SEQUENCE_OF(struct DU_Usage_Report_CellResourceReportItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cellResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} DU_Usage_Report_Per_UE_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_Per_UE; -extern asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_Per_UE_specs_1; -extern asn_TYPE_member_t asn_MBR_DU_Usage_Report_Per_UE_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "DU-Usage-Report-CellResourceReportItem.h" - -#endif /* _DU_Usage_Report_Per_UE_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-UeResourceReportItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-UeResourceReportItem.c deleted file mode 100644 index 0bcafbe..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-UeResourceReportItem.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "DU-Usage-Report-UeResourceReportItem.h" - -static int -memb_dl_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 1000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ul_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 1000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 30, -1, 0, 1000000000 } /* (0..1000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 30, -1, 0, 1000000000 } /* (0..1000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_DU_Usage_Report_UeResourceReportItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_UeResourceReportItem, c_RNTI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_C_RNTI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "c-RNTI" - }, - { ATF_POINTER, 2, offsetof(struct DU_Usage_Report_UeResourceReportItem, dl_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_dl_PRBUsage_constr_3, &asn_PER_memb_dl_PRBUsage_constr_3, memb_dl_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "dl-PRBUsage" - }, - { ATF_POINTER, 1, offsetof(struct DU_Usage_Report_UeResourceReportItem, ul_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ul_PRBUsage_constr_4, &asn_PER_memb_ul_PRBUsage_constr_4, memb_ul_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "ul-PRBUsage" - }, -}; -static const int asn_MAP_DU_Usage_Report_UeResourceReportItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_DU_Usage_Report_UeResourceReportItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-PRBUsage */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ul-PRBUsage */ -}; -asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_UeResourceReportItem_specs_1 = { - sizeof(struct DU_Usage_Report_UeResourceReportItem), - offsetof(struct DU_Usage_Report_UeResourceReportItem, _asn_ctx), - asn_MAP_DU_Usage_Report_UeResourceReportItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_DU_Usage_Report_UeResourceReportItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_UeResourceReportItem = { - "DU-Usage-Report-UeResourceReportItem", - "DU-Usage-Report-UeResourceReportItem", - &asn_OP_SEQUENCE, - asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1, - sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1, /* Same as above */ - sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1) - /sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_DU_Usage_Report_UeResourceReportItem_1, - 3, /* Elements count */ - &asn_SPC_DU_Usage_Report_UeResourceReportItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-UeResourceReportItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-UeResourceReportItem.h deleted file mode 100644 index e860272..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/DU-Usage-Report-UeResourceReportItem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _DU_Usage_Report_UeResourceReportItem_H_ -#define _DU_Usage_Report_UeResourceReportItem_H_ - - -#include - -/* Including external dependencies */ -#include "C-RNTI.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* DU-Usage-Report-UeResourceReportItem */ -typedef struct DU_Usage_Report_UeResourceReportItem { - C_RNTI_t c_RNTI; - long *dl_PRBUsage; /* OPTIONAL */ - long *ul_PRBUsage; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} DU_Usage_Report_UeResourceReportItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_UeResourceReportItem; -extern asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_UeResourceReportItem_specs_1; -extern asn_TYPE_member_t asn_MBR_DU_Usage_Report_UeResourceReportItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _DU_Usage_Report_UeResourceReportItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.c deleted file mode 100644 index 4e69825..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2AP-PDU.h" - -#include "InitiatingMessage.h" -#include "SuccessfulOutcome.h" -#include "UnsuccessfulOutcome.h" -static asn_oer_constraints_t asn_OER_type_E2AP_PDU_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_E2AP_PDU_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2AP_PDU_1[] = { - { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.initiatingMessage), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_InitiatingMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "initiatingMessage" - }, - { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.successfulOutcome), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SuccessfulOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "successfulOutcome" - }, - { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.unsuccessfulOutcome), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_UnsuccessfulOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "unsuccessfulOutcome" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2AP_PDU_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2AP_PDU_specs_1 = { - sizeof(struct E2AP_PDU), - offsetof(struct E2AP_PDU, _asn_ctx), - offsetof(struct E2AP_PDU, present), - sizeof(((struct E2AP_PDU *)0)->present), - asn_MAP_E2AP_PDU_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2AP_PDU = { - "E2AP-PDU", - "E2AP-PDU", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_E2AP_PDU_constr_1, &asn_PER_type_E2AP_PDU_constr_1, CHOICE_constraint }, - asn_MBR_E2AP_PDU_1, - 3, /* Elements count */ - &asn_SPC_E2AP_PDU_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.h deleted file mode 100644 index 3bf1764..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2AP-PDU.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2AP_PDU_H_ -#define _E2AP_PDU_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2AP_PDU_PR { - E2AP_PDU_PR_NOTHING, /* No components present */ - E2AP_PDU_PR_initiatingMessage, - E2AP_PDU_PR_successfulOutcome, - E2AP_PDU_PR_unsuccessfulOutcome - /* Extensions may appear below */ - -} E2AP_PDU_PR; - -/* Forward declarations */ -struct InitiatingMessage; -struct SuccessfulOutcome; -struct UnsuccessfulOutcome; - -/* E2AP-PDU */ -typedef struct E2AP_PDU { - E2AP_PDU_PR present; - union E2AP_PDU_u { - struct InitiatingMessage *initiatingMessage; - struct SuccessfulOutcome *successfulOutcome; - struct UnsuccessfulOutcome *unsuccessfulOutcome; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2AP_PDU_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2AP_PDU; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2AP_PDU_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.c deleted file mode 100644 index abdf25d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-ActionDefinition.h" - -static asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, ric_Style_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-Style-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-Style-Type */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_specs_1 = { - sizeof(struct E2SM_KPM_ActionDefinition), - offsetof(struct E2SM_KPM_ActionDefinition, _asn_ctx), - asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition = { - "E2SM-KPM-ActionDefinition", - "E2SM-KPM-ActionDefinition", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_ActionDefinition_tags_1, - sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1) - /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_ActionDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1) - /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_ActionDefinition_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_ActionDefinition_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.h deleted file mode 100644 index 70b81dd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-ActionDefinition.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_ActionDefinition_H_ -#define _E2SM_KPM_ActionDefinition_H_ - - -#include - -/* Including external dependencies */ -#include "RIC-Style-Type.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2SM-KPM-ActionDefinition */ -typedef struct E2SM_KPM_ActionDefinition { - RIC_Style_Type_t ric_Style_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_ActionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2SM_KPM_ActionDefinition_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c deleted file mode 100644 index e0b48f2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-EventTriggerDefinition-Format1.h" - -static int -memb_policyTest_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 15)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_policyTest_List_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..15)) */}; -static asn_per_constraints_t asn_PER_type_policyTest_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_policyTest_List_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..15)) */}; -static asn_per_constraints_t asn_PER_memb_policyTest_List_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_policyTest_List_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_Trigger_ConditionIE_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_policyTest_List_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_policyTest_List_specs_2 = { - sizeof(struct E2SM_KPM_EventTriggerDefinition_Format1__policyTest_List), - offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1__policyTest_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_policyTest_List_2 = { - "policyTest-List", - "policyTest-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_policyTest_List_tags_2, - sizeof(asn_DEF_policyTest_List_tags_2) - /sizeof(asn_DEF_policyTest_List_tags_2[0]) - 1, /* 1 */ - asn_DEF_policyTest_List_tags_2, /* Same as above */ - sizeof(asn_DEF_policyTest_List_tags_2) - /sizeof(asn_DEF_policyTest_List_tags_2[0]), /* 2 */ - { &asn_OER_type_policyTest_List_constr_2, &asn_PER_type_policyTest_List_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_policyTest_List_2, - 1, /* Single element */ - &asn_SPC_policyTest_List_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[] = { - { ATF_POINTER, 1, offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, policyTest_List), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_policyTest_List_2, - 0, - { &asn_OER_memb_policyTest_List_constr_2, &asn_PER_memb_policyTest_List_constr_2, memb_policyTest_List_constraint_1 }, - 0, 0, /* No default value */ - "policyTest-List" - }, -}; -static const int asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* policyTest-List */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 = { - sizeof(struct E2SM_KPM_EventTriggerDefinition_Format1), - offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, _asn_ctx), - asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1, - 1, /* Count of tags in the map */ - asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1 = { - "E2SM-KPM-EventTriggerDefinition-Format1", - "E2SM-KPM-EventTriggerDefinition-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1, - sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h deleted file mode 100644 index 44cbd92..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_EventTriggerDefinition_Format1_H_ -#define _E2SM_KPM_EventTriggerDefinition_Format1_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct Trigger_ConditionIE_Item; - -/* E2SM-KPM-EventTriggerDefinition-Format1 */ -typedef struct E2SM_KPM_EventTriggerDefinition_Format1 { - struct E2SM_KPM_EventTriggerDefinition_Format1__policyTest_List { - A_SEQUENCE_OF(struct Trigger_ConditionIE_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *policyTest_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_EventTriggerDefinition_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "Trigger-ConditionIE-Item.h" - -#endif /* _E2SM_KPM_EventTriggerDefinition_Format1_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition.c deleted file mode 100644 index 482e42c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-EventTriggerDefinition.h" - -static asn_oer_constraints_t asn_OER_type_E2SM_KPM_EventTriggerDefinition_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_E2SM_KPM_EventTriggerDefinition_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition, choice.eventDefinition_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eventDefinition-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 = { - sizeof(struct E2SM_KPM_EventTriggerDefinition), - offsetof(struct E2SM_KPM_EventTriggerDefinition, _asn_ctx), - offsetof(struct E2SM_KPM_EventTriggerDefinition, present), - sizeof(((struct E2SM_KPM_EventTriggerDefinition *)0)->present), - asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition = { - "E2SM-KPM-EventTriggerDefinition", - "E2SM-KPM-EventTriggerDefinition", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_E2SM_KPM_EventTriggerDefinition_constr_1, &asn_PER_type_E2SM_KPM_EventTriggerDefinition_constr_1, CHOICE_constraint }, - asn_MBR_E2SM_KPM_EventTriggerDefinition_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition.h deleted file mode 100644 index e96e600..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-EventTriggerDefinition.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_EventTriggerDefinition_H_ -#define _E2SM_KPM_EventTriggerDefinition_H_ - - -#include - -/* Including external dependencies */ -#include "E2SM-KPM-EventTriggerDefinition-Format1.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2SM_KPM_EventTriggerDefinition_PR { - E2SM_KPM_EventTriggerDefinition_PR_NOTHING, /* No components present */ - E2SM_KPM_EventTriggerDefinition_PR_eventDefinition_Format1 - /* Extensions may appear below */ - -} E2SM_KPM_EventTriggerDefinition_PR; - -/* E2SM-KPM-EventTriggerDefinition */ -typedef struct E2SM_KPM_EventTriggerDefinition { - E2SM_KPM_EventTriggerDefinition_PR present; - union E2SM_KPM_EventTriggerDefinition_u { - E2SM_KPM_EventTriggerDefinition_Format1_t eventDefinition_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_EventTriggerDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2SM_KPM_EventTriggerDefinition_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader-Format1.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader-Format1.c deleted file mode 100644 index 2cccf8b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader-Format1.c +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-IndicationHeader-Format1.h" - -static int -memb_fiveQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_qci_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_fiveQI_constr_6 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_fiveQI_constr_6 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_qci_constr_7 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_qci_constr_7 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[] = { - { ATF_POINTER, 10, offsetof(struct E2SM_KPM_IndicationHeader_Format1, id_GlobalKPMnode_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "id-GlobalKPMnode-ID" - }, - { ATF_POINTER, 9, offsetof(struct E2SM_KPM_IndicationHeader_Format1, nRCGI), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCGI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCGI" - }, - { ATF_POINTER, 8, offsetof(struct E2SM_KPM_IndicationHeader_Format1, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_POINTER, 7, offsetof(struct E2SM_KPM_IndicationHeader_Format1, sliceID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SNSSAI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "sliceID" - }, - { ATF_POINTER, 6, offsetof(struct E2SM_KPM_IndicationHeader_Format1, fiveQI), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_fiveQI_constr_6, &asn_PER_memb_fiveQI_constr_6, memb_fiveQI_constraint_1 }, - 0, 0, /* No default value */ - "fiveQI" - }, - { ATF_POINTER, 5, offsetof(struct E2SM_KPM_IndicationHeader_Format1, qci), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_qci_constr_7, &asn_PER_memb_qci_constr_7, memb_qci_constraint_1 }, - 0, 0, /* No default value */ - "qci" - }, - { ATF_POINTER, 4, offsetof(struct E2SM_KPM_IndicationHeader_Format1, message_Type), - (ASN_TAG_CLASS_CONTEXT | (6 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_UE_Report_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "message-Type" - }, - { ATF_POINTER, 3, offsetof(struct E2SM_KPM_IndicationHeader_Format1, gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (7 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-ID" - }, - { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationHeader_Format1, gNB_Name), - (ASN_TAG_CLASS_CONTEXT | (8 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_GNB_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-Name" - }, - { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationHeader_Format1, global_GNB_ID), - (ASN_TAG_CLASS_CONTEXT | (9 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalgNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-GNB-ID" - }, -}; -static const int asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id-GlobalKPMnode-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRCGI */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sliceID */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* fiveQI */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* qci */ - { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* message-Type */ - { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* gNB-DU-ID */ - { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* gNB-Name */ - { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* global-GNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 = { - sizeof(struct E2SM_KPM_IndicationHeader_Format1), - offsetof(struct E2SM_KPM_IndicationHeader_Format1, _asn_ctx), - asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1, - 10, /* Count of tags in the map */ - asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1, /* Optional members */ - 10, 0, /* Root/Additions */ - 10, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1 = { - "E2SM-KPM-IndicationHeader-Format1", - "E2SM-KPM-IndicationHeader-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1, - sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_IndicationHeader_Format1_1, - 10, /* Elements count */ - &asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader-Format1.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader-Format1.h deleted file mode 100644 index c46b715..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader-Format1.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_IndicationHeader_Format1_H_ -#define _E2SM_KPM_IndicationHeader_Format1_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include -#include "UE-Report-Type.h" -#include "GNB-DU-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct GlobalKPMnode_ID; -struct NRCGI; -struct SNSSAI; -struct GNB_Name; -struct GlobalgNB_ID; - -/* E2SM-KPM-IndicationHeader-Format1 */ -typedef struct E2SM_KPM_IndicationHeader_Format1 { - struct GlobalKPMnode_ID *id_GlobalKPMnode_ID; /* OPTIONAL */ - struct NRCGI *nRCGI; /* OPTIONAL */ - PLMN_Identity_t *pLMN_Identity; /* OPTIONAL */ - struct SNSSAI *sliceID; /* OPTIONAL */ - long *fiveQI; /* OPTIONAL */ - long *qci; /* OPTIONAL */ - UE_Report_Type_t *message_Type; /* OPTIONAL */ - GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ - struct GNB_Name *gNB_Name; /* OPTIONAL */ - struct GlobalgNB_ID *global_GNB_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_IndicationHeader_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[10]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "GlobalKPMnode-ID.h" -#include "NRCGI.h" -#include "SNSSAI.h" -#include "GNB-Name.h" -#include "GlobalgNB-ID.h" - -#endif /* _E2SM_KPM_IndicationHeader_Format1_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.c deleted file mode 100644 index c4fe730..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-IndicationHeader.h" - -static asn_oer_constraints_t asn_OER_type_E2SM_KPM_IndicationHeader_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_E2SM_KPM_IndicationHeader_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader, choice.indicationHeader_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2SM_KPM_IndicationHeader_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationHeader-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_specs_1 = { - sizeof(struct E2SM_KPM_IndicationHeader), - offsetof(struct E2SM_KPM_IndicationHeader, _asn_ctx), - offsetof(struct E2SM_KPM_IndicationHeader, present), - sizeof(((struct E2SM_KPM_IndicationHeader *)0)->present), - asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader = { - "E2SM-KPM-IndicationHeader", - "E2SM-KPM-IndicationHeader", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_E2SM_KPM_IndicationHeader_constr_1, &asn_PER_type_E2SM_KPM_IndicationHeader_constr_1, CHOICE_constraint }, - asn_MBR_E2SM_KPM_IndicationHeader_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_IndicationHeader_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.h deleted file mode 100644 index 67dc86d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationHeader.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_IndicationHeader_H_ -#define _E2SM_KPM_IndicationHeader_H_ - - -#include - -/* Including external dependencies */ -#include "E2SM-KPM-IndicationHeader-Format1.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2SM_KPM_IndicationHeader_PR { - E2SM_KPM_IndicationHeader_PR_NOTHING, /* No components present */ - E2SM_KPM_IndicationHeader_PR_indicationHeader_Format1 - /* Extensions may appear below */ - -} E2SM_KPM_IndicationHeader_PR; - -/* E2SM-KPM-IndicationHeader */ -typedef struct E2SM_KPM_IndicationHeader { - E2SM_KPM_IndicationHeader_PR present; - union E2SM_KPM_IndicationHeader_u { - E2SM_KPM_IndicationHeader_Format1_t indicationHeader_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_IndicationHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2SM_KPM_IndicationHeader_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage-Format1.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage-Format1.c deleted file mode 100644 index 7bdebb0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage-Format1.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-IndicationMessage-Format1.h" - -static int -memb_pm_Containers_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 8)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_pm_Containers_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..8)) */}; -static asn_per_constraints_t asn_PER_type_pm_Containers_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pm_Containers_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..8)) */}; -static asn_per_constraints_t asn_PER_memb_pm_Containers_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_pm_Containers_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PM_Containers_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_pm_Containers_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_pm_Containers_specs_2 = { - sizeof(struct E2SM_KPM_IndicationMessage_Format1__pm_Containers), - offsetof(struct E2SM_KPM_IndicationMessage_Format1__pm_Containers, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_pm_Containers_2 = { - "pm-Containers", - "pm-Containers", - &asn_OP_SEQUENCE_OF, - asn_DEF_pm_Containers_tags_2, - sizeof(asn_DEF_pm_Containers_tags_2) - /sizeof(asn_DEF_pm_Containers_tags_2[0]) - 1, /* 1 */ - asn_DEF_pm_Containers_tags_2, /* Same as above */ - sizeof(asn_DEF_pm_Containers_tags_2) - /sizeof(asn_DEF_pm_Containers_tags_2[0]), /* 2 */ - { &asn_OER_type_pm_Containers_constr_2, &asn_PER_type_pm_Containers_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_pm_Containers_2, - 1, /* Single element */ - &asn_SPC_pm_Containers_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format1, pm_Containers), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_pm_Containers_2, - 0, - { &asn_OER_memb_pm_Containers_constr_2, &asn_PER_memb_pm_Containers_constr_2, memb_pm_Containers_constraint_1 }, - 0, 0, /* No default value */ - "pm-Containers" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* pm-Containers */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 = { - sizeof(struct E2SM_KPM_IndicationMessage_Format1), - offsetof(struct E2SM_KPM_IndicationMessage_Format1, _asn_ctx), - asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1 = { - "E2SM-KPM-IndicationMessage-Format1", - "E2SM-KPM-IndicationMessage-Format1", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1, - sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_IndicationMessage_Format1_1, - 1, /* Elements count */ - &asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage-Format1.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage-Format1.h deleted file mode 100644 index a05b652..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage-Format1.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_IndicationMessage_Format1_H_ -#define _E2SM_KPM_IndicationMessage_Format1_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PM_Containers_List; - -/* E2SM-KPM-IndicationMessage-Format1 */ -typedef struct E2SM_KPM_IndicationMessage_Format1 { - struct E2SM_KPM_IndicationMessage_Format1__pm_Containers { - A_SEQUENCE_OF(struct PM_Containers_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } pm_Containers; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_IndicationMessage_Format1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PM-Containers-List.h" - -#endif /* _E2SM_KPM_IndicationMessage_Format1_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage.c deleted file mode 100644 index 2eb4018..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-IndicationMessage.h" - -static asn_oer_constraints_t asn_OER_type_indicationMessage_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_indicationMessage_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_indicationMessage_3[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage, choice.indicationMessage_Format1), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2SM_KPM_IndicationMessage_Format1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationMessage-Format1" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_indicationMessage_tag2el_3[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-Format1 */ -}; -static asn_CHOICE_specifics_t asn_SPC_indicationMessage_specs_3 = { - sizeof(struct E2SM_KPM_IndicationMessage__indicationMessage), - offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage, _asn_ctx), - offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage, present), - sizeof(((struct E2SM_KPM_IndicationMessage__indicationMessage *)0)->present), - asn_MAP_indicationMessage_tag2el_3, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_indicationMessage_3 = { - "indicationMessage", - "indicationMessage", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_indicationMessage_constr_3, &asn_PER_type_indicationMessage_constr_3, CHOICE_constraint }, - asn_MBR_indicationMessage_3, - 1, /* Elements count */ - &asn_SPC_indicationMessage_specs_3 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, ric_Style_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-Style-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, indicationMessage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_indicationMessage_3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "indicationMessage" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-Style-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* indicationMessage */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_specs_1 = { - sizeof(struct E2SM_KPM_IndicationMessage), - offsetof(struct E2SM_KPM_IndicationMessage, _asn_ctx), - asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage = { - "E2SM-KPM-IndicationMessage", - "E2SM-KPM-IndicationMessage", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_IndicationMessage_tags_1, - sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_IndicationMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1) - /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_IndicationMessage_1, - 2, /* Elements count */ - &asn_SPC_E2SM_KPM_IndicationMessage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage.h deleted file mode 100644 index 77d4e3b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-IndicationMessage.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_IndicationMessage_H_ -#define _E2SM_KPM_IndicationMessage_H_ - - -#include - -/* Including external dependencies */ -#include "RIC-Style-Type.h" -#include "E2SM-KPM-IndicationMessage-Format1.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2SM_KPM_IndicationMessage__indicationMessage_PR { - E2SM_KPM_IndicationMessage__indicationMessage_PR_NOTHING, /* No components present */ - E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1 - /* Extensions may appear below */ - -} E2SM_KPM_IndicationMessage__indicationMessage_PR; - -/* E2SM-KPM-IndicationMessage */ -typedef struct E2SM_KPM_IndicationMessage { - RIC_Style_Type_t ric_Style_Type; - struct E2SM_KPM_IndicationMessage__indicationMessage { - E2SM_KPM_IndicationMessage__indicationMessage_PR present; - union E2SM_KPM_IndicationMessage__indicationMessage_u { - E2SM_KPM_IndicationMessage_Format1_t indicationMessage_Format1; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } indicationMessage; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_IndicationMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2SM_KPM_IndicationMessage_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-RANfunction-Description.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-RANfunction-Description.c deleted file mode 100644 index 226d0fb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-RANfunction-Description.c +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "E2SM-KPM-RANfunction-Description.h" - -static int -memb_ric_EventTriggerStyle_List_constraint_3(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ric_ReportStyle_List_constraint_3(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 63)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_ric_EventTriggerStyle_List_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..63)) */}; -static asn_per_constraints_t asn_PER_type_ric_EventTriggerStyle_List_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ric_ReportStyle_List_constr_6 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..63)) */}; -static asn_per_constraints_t asn_PER_type_ric_ReportStyle_List_constr_6 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ric_EventTriggerStyle_List_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..63)) */}; -static asn_per_constraints_t asn_PER_memb_ric_EventTriggerStyle_List_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ric_ReportStyle_List_constr_6 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..63)) */}; -static asn_per_constraints_t asn_PER_memb_ric_ReportStyle_List_constr_6 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_ric_EventTriggerStyle_List_4[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RIC_EventTriggerStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ric_EventTriggerStyle_List_tags_4[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ric_EventTriggerStyle_List_specs_4 = { - sizeof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List), - offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ric_EventTriggerStyle_List_4 = { - "ric-EventTriggerStyle-List", - "ric-EventTriggerStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_ric_EventTriggerStyle_List_tags_4, - sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_4) - /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_4[0]) - 1, /* 1 */ - asn_DEF_ric_EventTriggerStyle_List_tags_4, /* Same as above */ - sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_4) - /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_4[0]), /* 2 */ - { &asn_OER_type_ric_EventTriggerStyle_List_constr_4, &asn_PER_type_ric_EventTriggerStyle_List_constr_4, SEQUENCE_OF_constraint }, - asn_MBR_ric_EventTriggerStyle_List_4, - 1, /* Single element */ - &asn_SPC_ric_EventTriggerStyle_List_specs_4 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_ric_ReportStyle_List_6[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RIC_ReportStyle_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ric_ReportStyle_List_tags_6[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_ric_ReportStyle_List_specs_6 = { - sizeof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List), - offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_ric_ReportStyle_List_6 = { - "ric-ReportStyle-List", - "ric-ReportStyle-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_ric_ReportStyle_List_tags_6, - sizeof(asn_DEF_ric_ReportStyle_List_tags_6) - /sizeof(asn_DEF_ric_ReportStyle_List_tags_6[0]) - 1, /* 1 */ - asn_DEF_ric_ReportStyle_List_tags_6, /* Same as above */ - sizeof(asn_DEF_ric_ReportStyle_List_tags_6) - /sizeof(asn_DEF_ric_ReportStyle_List_tags_6[0]), /* 2 */ - { &asn_OER_type_ric_ReportStyle_List_constr_6, &asn_PER_type_ric_ReportStyle_List_constr_6, SEQUENCE_OF_constraint }, - asn_MBR_ric_ReportStyle_List_6, - 1, /* Single element */ - &asn_SPC_ric_ReportStyle_List_specs_6 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_e2SM_KPM_RANfunction_Item_3[] = { - { ATF_POINTER, 2, offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item, ric_EventTriggerStyle_List), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_ric_EventTriggerStyle_List_4, - 0, - { &asn_OER_memb_ric_EventTriggerStyle_List_constr_4, &asn_PER_memb_ric_EventTriggerStyle_List_constr_4, memb_ric_EventTriggerStyle_List_constraint_3 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-List" - }, - { ATF_POINTER, 1, offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item, ric_ReportStyle_List), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_ric_ReportStyle_List_6, - 0, - { &asn_OER_memb_ric_ReportStyle_List_constr_6, &asn_PER_memb_ric_ReportStyle_List_constr_6, memb_ric_ReportStyle_List_constraint_3 }, - 0, 0, /* No default value */ - "ric-ReportStyle-List" - }, -}; -static const int asn_MAP_e2SM_KPM_RANfunction_Item_oms_3[] = { 0, 1 }; -static const ber_tlv_tag_t asn_DEF_e2SM_KPM_RANfunction_Item_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_e2SM_KPM_RANfunction_Item_tag2el_3[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-List */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-ReportStyle-List */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_e2SM_KPM_RANfunction_Item_specs_3 = { - sizeof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item), - offsetof(struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item, _asn_ctx), - asn_MAP_e2SM_KPM_RANfunction_Item_tag2el_3, - 2, /* Count of tags in the map */ - asn_MAP_e2SM_KPM_RANfunction_Item_oms_3, /* Optional members */ - 2, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_e2SM_KPM_RANfunction_Item_3 = { - "e2SM-KPM-RANfunction-Item", - "e2SM-KPM-RANfunction-Item", - &asn_OP_SEQUENCE, - asn_DEF_e2SM_KPM_RANfunction_Item_tags_3, - sizeof(asn_DEF_e2SM_KPM_RANfunction_Item_tags_3) - /sizeof(asn_DEF_e2SM_KPM_RANfunction_Item_tags_3[0]) - 1, /* 1 */ - asn_DEF_e2SM_KPM_RANfunction_Item_tags_3, /* Same as above */ - sizeof(asn_DEF_e2SM_KPM_RANfunction_Item_tags_3) - /sizeof(asn_DEF_e2SM_KPM_RANfunction_Item_tags_3[0]), /* 2 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_e2SM_KPM_RANfunction_Item_3, - 2, /* Elements count */ - &asn_SPC_e2SM_KPM_RANfunction_Item_specs_3 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_E2SM_KPM_RANfunction_Description_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_RANfunction_Description, ranFunction_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunction_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunction-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_RANfunction_Description, e2SM_KPM_RANfunction_Item), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_e2SM_KPM_RANfunction_Item_3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2SM-KPM-RANfunction-Item" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* e2SM-KPM-RANfunction-Item */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_RANfunction_Description_specs_1 = { - sizeof(struct E2SM_KPM_RANfunction_Description), - offsetof(struct E2SM_KPM_RANfunction_Description, _asn_ctx), - asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description = { - "E2SM-KPM-RANfunction-Description", - "E2SM-KPM-RANfunction-Description", - &asn_OP_SEQUENCE, - asn_DEF_E2SM_KPM_RANfunction_Description_tags_1, - sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1) - /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */ - asn_DEF_E2SM_KPM_RANfunction_Description_tags_1, /* Same as above */ - sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1) - /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2SM_KPM_RANfunction_Description_1, - 2, /* Elements count */ - &asn_SPC_E2SM_KPM_RANfunction_Description_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-RANfunction-Description.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-RANfunction-Description.h deleted file mode 100644 index 79d2dcf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2SM-KPM-RANfunction-Description.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _E2SM_KPM_RANfunction_Description_H_ -#define _E2SM_KPM_RANfunction_Description_H_ - - -#include - -/* Including external dependencies */ -#include "RANfunction-Name.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RIC_EventTriggerStyle_List; -struct RIC_ReportStyle_List; - -/* E2SM-KPM-RANfunction-Description */ -typedef struct E2SM_KPM_RANfunction_Description { - RANfunction_Name_t ranFunction_Name; - struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item { - struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List { - A_SEQUENCE_OF(struct RIC_EventTriggerStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_EventTriggerStyle_List; - struct E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List { - A_SEQUENCE_OF(struct RIC_ReportStyle_List) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } *ric_ReportStyle_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } e2SM_KPM_RANfunction_Item; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2SM_KPM_RANfunction_Description_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "RIC-EventTriggerStyle-List.h" -#include "RIC-ReportStyle-List.h" - -#endif /* _E2SM_KPM_RANfunction_Description_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-Item.c deleted file mode 100644 index f0f45f8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2connectionSetupFailed-Item.h" - -static asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_Item, tnlInformation), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformation" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionSetupFailed_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionSetupFailed_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlInformation */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_Item_specs_1 = { - sizeof(struct E2connectionSetupFailed_Item), - offsetof(struct E2connectionSetupFailed_Item, _asn_ctx), - asn_MAP_E2connectionSetupFailed_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_Item = { - "E2connectionSetupFailed-Item", - "E2connectionSetupFailed-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionSetupFailed_Item_tags_1, - sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1) - /sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1[0]), /* 1 */ - asn_DEF_E2connectionSetupFailed_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1) - /sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionSetupFailed_Item_1, - 2, /* Elements count */ - &asn_SPC_E2connectionSetupFailed_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-Item.h deleted file mode 100644 index a976438..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2connectionSetupFailed_Item_H_ -#define _E2connectionSetupFailed_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "TNLinformation.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionSetupFailed-Item */ -typedef struct E2connectionSetupFailed_Item { - TNLinformation_t tnlInformation; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionSetupFailed_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionSetupFailed_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-List.c deleted file mode 100644 index cd30a64..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2connectionSetupFailed-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2connectionSetupFailed_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_E2connectionSetupFailed_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P6, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionSetupFailed_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2connectionSetupFailed_List_specs_1 = { - sizeof(struct E2connectionSetupFailed_List), - offsetof(struct E2connectionSetupFailed_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_List = { - "E2connectionSetupFailed-List", - "E2connectionSetupFailed-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2connectionSetupFailed_List_tags_1, - sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1) - /sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1[0]), /* 1 */ - asn_DEF_E2connectionSetupFailed_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1) - /sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2connectionSetupFailed_List_constr_1, &asn_PER_type_E2connectionSetupFailed_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2connectionSetupFailed_List_1, - 1, /* Single element */ - &asn_SPC_E2connectionSetupFailed_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-List.h deleted file mode 100644 index 1d31824..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionSetupFailed-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2connectionSetupFailed_List_H_ -#define _E2connectionSetupFailed_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2connectionSetupFailed-List */ -typedef struct E2connectionSetupFailed_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionSetupFailed_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionSetupFailed_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.c deleted file mode 100644 index ca94fb5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2connectionUpdate-Item.h" - -static asn_TYPE_member_t asn_MBR_E2connectionUpdate_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_Item, tnlInformation), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformation" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_Item, tnlUsage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLusage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlUsage" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlInformation */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tnlUsage */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_Item_specs_1 = { - sizeof(struct E2connectionUpdate_Item), - offsetof(struct E2connectionUpdate_Item, _asn_ctx), - asn_MAP_E2connectionUpdate_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_Item = { - "E2connectionUpdate-Item", - "E2connectionUpdate-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdate_Item_tags_1, - sizeof(asn_DEF_E2connectionUpdate_Item_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_Item_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdate_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_Item_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_Item_1, - 2, /* Elements count */ - &asn_SPC_E2connectionUpdate_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.h deleted file mode 100644 index 71a8b7a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2connectionUpdate_Item_H_ -#define _E2connectionUpdate_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "TNLinformation.h" -#include "TNLusage.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdate-Item */ -typedef struct E2connectionUpdate_Item { - TNLinformation_t tnlInformation; - TNLusage_t tnlUsage; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdate_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-List.c deleted file mode 100644 index 018c9f8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2connectionUpdate-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2connectionUpdate_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_E2connectionUpdate_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2connectionUpdate_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P4, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2connectionUpdate_List_specs_1 = { - sizeof(struct E2connectionUpdate_List), - offsetof(struct E2connectionUpdate_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_List = { - "E2connectionUpdate-List", - "E2connectionUpdate-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2connectionUpdate_List_tags_1, - sizeof(asn_DEF_E2connectionUpdate_List_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_List_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdate_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_List_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2connectionUpdate_List_constr_1, &asn_PER_type_E2connectionUpdate_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2connectionUpdate_List_1, - 1, /* Single element */ - &asn_SPC_E2connectionUpdate_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-List.h deleted file mode 100644 index 734d770..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2connectionUpdate_List_H_ -#define _E2connectionUpdate_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2connectionUpdate-List */ -typedef struct E2connectionUpdate_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdate_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate.c deleted file mode 100644 index 1cee810..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2connectionUpdate.h" - -asn_TYPE_member_t asn_MBR_E2connectionUpdate_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P15, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_specs_1 = { - sizeof(struct E2connectionUpdate), - offsetof(struct E2connectionUpdate, _asn_ctx), - asn_MAP_E2connectionUpdate_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate = { - "E2connectionUpdate", - "E2connectionUpdate", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdate_tags_1, - sizeof(asn_DEF_E2connectionUpdate_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdate_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_1, - 1, /* Elements count */ - &asn_SPC_E2connectionUpdate_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate.h deleted file mode 100644 index 102f711..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdate.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2connectionUpdate_H_ -#define _E2connectionUpdate_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdate */ -typedef struct E2connectionUpdate { - ProtocolIE_Container_1917P15_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_specs_1; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdate_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateAcknowledge.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateAcknowledge.c deleted file mode 100644 index ad55786..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2connectionUpdateAcknowledge.h" - -asn_TYPE_member_t asn_MBR_E2connectionUpdateAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P16, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAcknowledge_specs_1 = { - sizeof(struct E2connectionUpdateAcknowledge), - offsetof(struct E2connectionUpdateAcknowledge, _asn_ctx), - asn_MAP_E2connectionUpdateAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAcknowledge = { - "E2connectionUpdateAcknowledge", - "E2connectionUpdateAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateAcknowledge_tags_1, - sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdateAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_E2connectionUpdateAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateAcknowledge.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateAcknowledge.h deleted file mode 100644 index 668ae54..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2connectionUpdateAcknowledge_H_ -#define _E2connectionUpdateAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdateAcknowledge */ -typedef struct E2connectionUpdateAcknowledge { - ProtocolIE_Container_1917P16_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdateAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.c deleted file mode 100644 index 8c8daa4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2connectionUpdateFailure.h" - -asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P17, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_specs_1 = { - sizeof(struct E2connectionUpdateFailure), - offsetof(struct E2connectionUpdateFailure, _asn_ctx), - asn_MAP_E2connectionUpdateFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure = { - "E2connectionUpdateFailure", - "E2connectionUpdateFailure", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateFailure_tags_1, - sizeof(asn_DEF_E2connectionUpdateFailure_tags_1) - /sizeof(asn_DEF_E2connectionUpdateFailure_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdateFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateFailure_tags_1) - /sizeof(asn_DEF_E2connectionUpdateFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateFailure_1, - 1, /* Elements count */ - &asn_SPC_E2connectionUpdateFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.h deleted file mode 100644 index c81d6c8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2connectionUpdateFailure_H_ -#define _E2connectionUpdateFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdateFailure */ -typedef struct E2connectionUpdateFailure { - ProtocolIE_Container_1917P17_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdateFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-Item.c deleted file mode 100644 index 6384820..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-Item.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2connectionUpdateRemove-Item.h" - -static asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_Item, tnlInformation), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformation" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateRemove_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateRemove_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tnlInformation */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_Item_specs_1 = { - sizeof(struct E2connectionUpdateRemove_Item), - offsetof(struct E2connectionUpdateRemove_Item, _asn_ctx), - asn_MAP_E2connectionUpdateRemove_Item_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_Item = { - "E2connectionUpdateRemove-Item", - "E2connectionUpdateRemove-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateRemove_Item_tags_1, - sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1) - /sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdateRemove_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1) - /sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateRemove_Item_1, - 1, /* Elements count */ - &asn_SPC_E2connectionUpdateRemove_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-Item.h deleted file mode 100644 index d161623..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-Item.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2connectionUpdateRemove_Item_H_ -#define _E2connectionUpdateRemove_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "TNLinformation.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdateRemove-Item */ -typedef struct E2connectionUpdateRemove_Item { - TNLinformation_t tnlInformation; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateRemove_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdateRemove_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-List.c deleted file mode 100644 index e5f7f8b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2connectionUpdateRemove-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2connectionUpdateRemove_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_E2connectionUpdateRemove_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P5, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateRemove_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2connectionUpdateRemove_List_specs_1 = { - sizeof(struct E2connectionUpdateRemove_List), - offsetof(struct E2connectionUpdateRemove_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_List = { - "E2connectionUpdateRemove-List", - "E2connectionUpdateRemove-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2connectionUpdateRemove_List_tags_1, - sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1) - /sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdateRemove_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1) - /sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2connectionUpdateRemove_List_constr_1, &asn_PER_type_E2connectionUpdateRemove_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2connectionUpdateRemove_List_1, - 1, /* Single element */ - &asn_SPC_E2connectionUpdateRemove_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-List.h deleted file mode 100644 index 135195d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2connectionUpdateRemove-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2connectionUpdateRemove_List_H_ -#define _E2connectionUpdateRemove_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2connectionUpdateRemove-List */ -typedef struct E2connectionUpdateRemove_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateRemove_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdateRemove_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-Item.c deleted file mode 100644 index 2ad05a1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigAddition-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_Item, e2nodeComponentConfiguration), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfiguration, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfiguration" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAddition_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAddition_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfiguration */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigAddition_Item), - offsetof(struct E2nodeComponentConfigAddition_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigAddition_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_Item = { - "E2nodeComponentConfigAddition-Item", - "E2nodeComponentConfigAddition-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigAddition_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAddition_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAddition_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAddition_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-Item.h deleted file mode 100644 index db691a1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigAddition_Item_H_ -#define _E2nodeComponentConfigAddition_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfiguration.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigAddition-Item */ -typedef struct E2nodeComponentConfigAddition_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfiguration_t e2nodeComponentConfiguration; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAddition_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigAddition_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-List.c deleted file mode 100644 index 3e93cda..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigAddition-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2nodeComponentConfigAddition_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigAddition_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P7, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAddition_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigAddition_List_specs_1 = { - sizeof(struct E2nodeComponentConfigAddition_List), - offsetof(struct E2nodeComponentConfigAddition_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_List = { - "E2nodeComponentConfigAddition-List", - "E2nodeComponentConfigAddition-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigAddition_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAddition_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2nodeComponentConfigAddition_List_constr_1, &asn_PER_type_E2nodeComponentConfigAddition_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigAddition_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigAddition_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-List.h deleted file mode 100644 index 0bed3fd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAddition-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigAddition_List_H_ -#define _E2nodeComponentConfigAddition_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigAddition-List */ -typedef struct E2nodeComponentConfigAddition_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAddition_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigAddition_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.c deleted file mode 100644 index e36ef6f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigAdditionAck-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_Item, e2nodeComponentConfigurationAck), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfigurationAck, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfigurationAck" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAdditionAck_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfigurationAck */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigAdditionAck_Item), - offsetof(struct E2nodeComponentConfigAdditionAck_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigAdditionAck_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_Item = { - "E2nodeComponentConfigAdditionAck-Item", - "E2nodeComponentConfigAdditionAck-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAdditionAck_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAdditionAck_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.h deleted file mode 100644 index 1278256..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigAdditionAck_Item_H_ -#define _E2nodeComponentConfigAdditionAck_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfigurationAck.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigAdditionAck-Item */ -typedef struct E2nodeComponentConfigAdditionAck_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfigurationAck_t e2nodeComponentConfigurationAck; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAdditionAck_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigAdditionAck_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-List.c deleted file mode 100644 index b1dcd18..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigAdditionAck-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2nodeComponentConfigAdditionAck_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigAdditionAck_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P11, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_List_specs_1 = { - sizeof(struct E2nodeComponentConfigAdditionAck_List), - offsetof(struct E2nodeComponentConfigAdditionAck_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_List = { - "E2nodeComponentConfigAdditionAck-List", - "E2nodeComponentConfigAdditionAck-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2nodeComponentConfigAdditionAck_List_constr_1, &asn_PER_type_E2nodeComponentConfigAdditionAck_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigAdditionAck_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigAdditionAck_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-List.h deleted file mode 100644 index 07761c5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigAdditionAck-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigAdditionAck_List_H_ -#define _E2nodeComponentConfigAdditionAck_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigAdditionAck-List */ -typedef struct E2nodeComponentConfigAdditionAck_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAdditionAck_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigAdditionAck_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-Item.c deleted file mode 100644 index eed716f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigRemoval-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemoval_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* e2nodeComponentID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigRemoval_Item), - offsetof(struct E2nodeComponentConfigRemoval_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigRemoval_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_Item = { - "E2nodeComponentConfigRemoval-Item", - "E2nodeComponentConfigRemoval-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemoval_Item_1, - 2, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemoval_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-Item.h deleted file mode 100644 index 65f2788..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigRemoval_Item_H_ -#define _E2nodeComponentConfigRemoval_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigRemoval-Item */ -typedef struct E2nodeComponentConfigRemoval_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemoval_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigRemoval_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-List.c deleted file mode 100644 index 6e8c5a0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigRemoval-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2nodeComponentConfigRemoval_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigRemoval_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P9, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemoval_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigRemoval_List_specs_1 = { - sizeof(struct E2nodeComponentConfigRemoval_List), - offsetof(struct E2nodeComponentConfigRemoval_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_List = { - "E2nodeComponentConfigRemoval-List", - "E2nodeComponentConfigRemoval-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigRemoval_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemoval_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2nodeComponentConfigRemoval_List_constr_1, &asn_PER_type_E2nodeComponentConfigRemoval_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigRemoval_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigRemoval_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-List.h deleted file mode 100644 index c562dfb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemoval-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigRemoval_List_H_ -#define _E2nodeComponentConfigRemoval_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigRemoval-List */ -typedef struct E2nodeComponentConfigRemoval_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemoval_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigRemoval_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.c deleted file mode 100644 index 1b064f4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigRemovalAck-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_Item, e2nodeComponentConfigurationAck), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfigurationAck, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfigurationAck" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemovalAck_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfigurationAck */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigRemovalAck_Item), - offsetof(struct E2nodeComponentConfigRemovalAck_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigRemovalAck_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_Item = { - "E2nodeComponentConfigRemovalAck-Item", - "E2nodeComponentConfigRemovalAck-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemovalAck_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemovalAck_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.h deleted file mode 100644 index cfe64df..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigRemovalAck_Item_H_ -#define _E2nodeComponentConfigRemovalAck_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfigurationAck.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigRemovalAck-Item */ -typedef struct E2nodeComponentConfigRemovalAck_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfigurationAck_t e2nodeComponentConfigurationAck; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemovalAck_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigRemovalAck_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-List.c deleted file mode 100644 index 31f4339..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigRemovalAck-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2nodeComponentConfigRemovalAck_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigRemovalAck_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P13, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_List_specs_1 = { - sizeof(struct E2nodeComponentConfigRemovalAck_List), - offsetof(struct E2nodeComponentConfigRemovalAck_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_List = { - "E2nodeComponentConfigRemovalAck-List", - "E2nodeComponentConfigRemovalAck-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2nodeComponentConfigRemovalAck_List_constr_1, &asn_PER_type_E2nodeComponentConfigRemovalAck_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigRemovalAck_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigRemovalAck_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-List.h deleted file mode 100644 index 632b764..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigRemovalAck-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigRemovalAck_List_H_ -#define _E2nodeComponentConfigRemovalAck_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigRemovalAck-List */ -typedef struct E2nodeComponentConfigRemovalAck_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemovalAck_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigRemovalAck_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-Item.c deleted file mode 100644 index 98ab889..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigUpdate-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_Item, e2nodeComponentConfiguration), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfiguration, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfiguration" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdate_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfiguration */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigUpdate_Item), - offsetof(struct E2nodeComponentConfigUpdate_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigUpdate_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_Item = { - "E2nodeComponentConfigUpdate-Item", - "E2nodeComponentConfigUpdate-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdate_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdate_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-Item.h deleted file mode 100644 index e1ae519..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigUpdate_Item_H_ -#define _E2nodeComponentConfigUpdate_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfiguration.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigUpdate-Item */ -typedef struct E2nodeComponentConfigUpdate_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfiguration_t e2nodeComponentConfiguration; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdate_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigUpdate_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-List.c deleted file mode 100644 index 12d5f1e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigUpdate-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2nodeComponentConfigUpdate_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigUpdate_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P8, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdate_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigUpdate_List_specs_1 = { - sizeof(struct E2nodeComponentConfigUpdate_List), - offsetof(struct E2nodeComponentConfigUpdate_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_List = { - "E2nodeComponentConfigUpdate-List", - "E2nodeComponentConfigUpdate-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigUpdate_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdate_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2nodeComponentConfigUpdate_List_constr_1, &asn_PER_type_E2nodeComponentConfigUpdate_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigUpdate_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigUpdate_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-List.h deleted file mode 100644 index a11a1c8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdate-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigUpdate_List_H_ -#define _E2nodeComponentConfigUpdate_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigUpdate-List */ -typedef struct E2nodeComponentConfigUpdate_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdate_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigUpdate_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.c deleted file mode 100644 index 418210f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigUpdateAck-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_Item, e2nodeComponentConfigurationAck), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfigurationAck, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfigurationAck" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdateAck_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfigurationAck */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigUpdateAck_Item), - offsetof(struct E2nodeComponentConfigUpdateAck_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigUpdateAck_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_Item = { - "E2nodeComponentConfigUpdateAck-Item", - "E2nodeComponentConfigUpdateAck-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdateAck_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdateAck_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.h deleted file mode 100644 index 9b7809e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigUpdateAck_Item_H_ -#define _E2nodeComponentConfigUpdateAck_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfigurationAck.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigUpdateAck-Item */ -typedef struct E2nodeComponentConfigUpdateAck_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfigurationAck_t e2nodeComponentConfigurationAck; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdateAck_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigUpdateAck_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-List.c deleted file mode 100644 index f08c742..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigUpdateAck-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2nodeComponentConfigUpdateAck_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigUpdateAck_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P12, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_List_specs_1 = { - sizeof(struct E2nodeComponentConfigUpdateAck_List), - offsetof(struct E2nodeComponentConfigUpdateAck_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_List = { - "E2nodeComponentConfigUpdateAck-List", - "E2nodeComponentConfigUpdateAck-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2nodeComponentConfigUpdateAck_List_constr_1, &asn_PER_type_E2nodeComponentConfigUpdateAck_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigUpdateAck_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigUpdateAck_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-List.h deleted file mode 100644 index 58961ef..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigUpdateAck-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigUpdateAck_List_H_ -#define _E2nodeComponentConfigUpdateAck_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigUpdateAck-List */ -typedef struct E2nodeComponentConfigUpdateAck_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdateAck_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigUpdateAck_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfiguration.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfiguration.c deleted file mode 100644 index d29312a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfiguration.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfiguration.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfiguration_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfiguration, e2nodeComponentRequestPart), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentRequestPart" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfiguration, e2nodeComponentResponsePart), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentResponsePart" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfiguration_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfiguration_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentRequestPart */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* e2nodeComponentResponsePart */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfiguration_specs_1 = { - sizeof(struct E2nodeComponentConfiguration), - offsetof(struct E2nodeComponentConfiguration, _asn_ctx), - asn_MAP_E2nodeComponentConfiguration_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfiguration = { - "E2nodeComponentConfiguration", - "E2nodeComponentConfiguration", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfiguration_tags_1, - sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfiguration_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfiguration_1, - 2, /* Elements count */ - &asn_SPC_E2nodeComponentConfiguration_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfiguration.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfiguration.h deleted file mode 100644 index 315be3a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfiguration.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfiguration_H_ -#define _E2nodeComponentConfiguration_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfiguration */ -typedef struct E2nodeComponentConfiguration { - OCTET_STRING_t e2nodeComponentRequestPart; - OCTET_STRING_t e2nodeComponentResponsePart; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfiguration_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfiguration; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfiguration_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfiguration_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfiguration_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigurationAck.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigurationAck.c deleted file mode 100644 index 4004d4a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigurationAck.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentConfigurationAck.h" - -#include "Cause.h" -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_updateOutcome_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_updateOutcome_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_updateOutcome_value2enum_2[] = { - { 0, 7, "success" }, - { 1, 7, "failure" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_updateOutcome_enum2value_2[] = { - 1, /* failure(1) */ - 0 /* success(0) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_updateOutcome_specs_2 = { - asn_MAP_updateOutcome_value2enum_2, /* "tag" => N; sorted by tag */ - asn_MAP_updateOutcome_enum2value_2, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_updateOutcome_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_updateOutcome_2 = { - "updateOutcome", - "updateOutcome", - &asn_OP_NativeEnumerated, - asn_DEF_updateOutcome_tags_2, - sizeof(asn_DEF_updateOutcome_tags_2) - /sizeof(asn_DEF_updateOutcome_tags_2[0]) - 1, /* 1 */ - asn_DEF_updateOutcome_tags_2, /* Same as above */ - sizeof(asn_DEF_updateOutcome_tags_2) - /sizeof(asn_DEF_updateOutcome_tags_2[0]), /* 2 */ - { &asn_OER_type_updateOutcome_constr_2, &asn_PER_type_updateOutcome_constr_2, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_updateOutcome_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigurationAck_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigurationAck, updateOutcome), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_updateOutcome_2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "updateOutcome" - }, - { ATF_POINTER, 1, offsetof(struct E2nodeComponentConfigurationAck, failureCause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "failureCause" - }, -}; -static const int asn_MAP_E2nodeComponentConfigurationAck_oms_1[] = { 1 }; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigurationAck_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigurationAck_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* updateOutcome */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* failureCause */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigurationAck_specs_1 = { - sizeof(struct E2nodeComponentConfigurationAck), - offsetof(struct E2nodeComponentConfigurationAck, _asn_ctx), - asn_MAP_E2nodeComponentConfigurationAck_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_E2nodeComponentConfigurationAck_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigurationAck = { - "E2nodeComponentConfigurationAck", - "E2nodeComponentConfigurationAck", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigurationAck_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigurationAck_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigurationAck_1, - 2, /* Elements count */ - &asn_SPC_E2nodeComponentConfigurationAck_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigurationAck.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigurationAck.h deleted file mode 100644 index bf93bfb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentConfigurationAck.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentConfigurationAck_H_ -#define _E2nodeComponentConfigurationAck_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2nodeComponentConfigurationAck__updateOutcome { - E2nodeComponentConfigurationAck__updateOutcome_success = 0, - E2nodeComponentConfigurationAck__updateOutcome_failure = 1 - /* - * Enumeration is extensible - */ -} e_E2nodeComponentConfigurationAck__updateOutcome; - -/* Forward declarations */ -struct Cause; - -/* E2nodeComponentConfigurationAck */ -typedef struct E2nodeComponentConfigurationAck { - long updateOutcome; - struct Cause *failureCause; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigurationAck_t; - -/* Implementation */ -/* extern asn_TYPE_descriptor_t asn_DEF_updateOutcome_2; // (Use -fall-defs-global to expose) */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigurationAck; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigurationAck_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigurationAck_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigurationAck_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentID.c deleted file mode 100644 index cea878d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentID.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentID.h" - -#include "E2nodeComponentInterfaceNG.h" -#include "E2nodeComponentInterfaceXn.h" -#include "E2nodeComponentInterfaceE1.h" -#include "E2nodeComponentInterfaceF1.h" -#include "E2nodeComponentInterfaceW1.h" -#include "E2nodeComponentInterfaceS1.h" -#include "E2nodeComponentInterfaceX2.h" -static asn_oer_constraints_t asn_OER_type_E2nodeComponentID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_E2nodeComponentID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2nodeComponentID_1[] = { - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeNG), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceNG, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeNG" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeXn), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceXn, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeXn" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeE1), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceE1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeE1" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeF1), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceF1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeF1" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeW1), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceW1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeW1" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeS1), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceS1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeS1" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeX2), - (ASN_TAG_CLASS_CONTEXT | (6 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceX2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeX2" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceTypeNG */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentInterfaceTypeXn */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2nodeComponentInterfaceTypeE1 */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e2nodeComponentInterfaceTypeF1 */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* e2nodeComponentInterfaceTypeW1 */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e2nodeComponentInterfaceTypeS1 */ - { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* e2nodeComponentInterfaceTypeX2 */ -}; -asn_CHOICE_specifics_t asn_SPC_E2nodeComponentID_specs_1 = { - sizeof(struct E2nodeComponentID), - offsetof(struct E2nodeComponentID, _asn_ctx), - offsetof(struct E2nodeComponentID, present), - sizeof(((struct E2nodeComponentID *)0)->present), - asn_MAP_E2nodeComponentID_tag2el_1, - 7, /* Count of tags in the map */ - 0, 0, - 7 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentID = { - "E2nodeComponentID", - "E2nodeComponentID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_E2nodeComponentID_constr_1, &asn_PER_type_E2nodeComponentID_constr_1, CHOICE_constraint }, - asn_MBR_E2nodeComponentID_1, - 7, /* Elements count */ - &asn_SPC_E2nodeComponentID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentID.h deleted file mode 100644 index 2c4ac61..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentID.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentID_H_ -#define _E2nodeComponentID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2nodeComponentID_PR { - E2nodeComponentID_PR_NOTHING, /* No components present */ - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeNG, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeXn, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeE1, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeF1, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeW1, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeS1, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeX2 - /* Extensions may appear below */ - -} E2nodeComponentID_PR; - -/* Forward declarations */ -struct E2nodeComponentInterfaceNG; -struct E2nodeComponentInterfaceXn; -struct E2nodeComponentInterfaceE1; -struct E2nodeComponentInterfaceF1; -struct E2nodeComponentInterfaceW1; -struct E2nodeComponentInterfaceS1; -struct E2nodeComponentInterfaceX2; - -/* E2nodeComponentID */ -typedef struct E2nodeComponentID { - E2nodeComponentID_PR present; - union E2nodeComponentID_u { - struct E2nodeComponentInterfaceNG *e2nodeComponentInterfaceTypeNG; - struct E2nodeComponentInterfaceXn *e2nodeComponentInterfaceTypeXn; - struct E2nodeComponentInterfaceE1 *e2nodeComponentInterfaceTypeE1; - struct E2nodeComponentInterfaceF1 *e2nodeComponentInterfaceTypeF1; - struct E2nodeComponentInterfaceW1 *e2nodeComponentInterfaceTypeW1; - struct E2nodeComponentInterfaceS1 *e2nodeComponentInterfaceTypeS1; - struct E2nodeComponentInterfaceX2 *e2nodeComponentInterfaceTypeX2; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentID; -extern asn_CHOICE_specifics_t asn_SPC_E2nodeComponentID_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentID_1[7]; -extern asn_per_constraints_t asn_PER_type_E2nodeComponentID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceE1.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceE1.c deleted file mode 100644 index ddf06fa..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceE1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentInterfaceE1.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceE1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceE1, gNB_CU_CP_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-CP-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceE1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceE1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-CP-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceE1_specs_1 = { - sizeof(struct E2nodeComponentInterfaceE1), - offsetof(struct E2nodeComponentInterfaceE1, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceE1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceE1 = { - "E2nodeComponentInterfaceE1", - "E2nodeComponentInterfaceE1", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceE1_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceE1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceE1_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceE1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceE1.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceE1.h deleted file mode 100644 index d563930..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceE1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentInterfaceE1_H_ -#define _E2nodeComponentInterfaceE1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GNB-CU-UP-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceE1 */ -typedef struct E2nodeComponentInterfaceE1 { - GNB_CU_UP_ID_t gNB_CU_CP_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceE1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceE1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceE1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceE1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceE1_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceF1.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceF1.c deleted file mode 100644 index d93b874..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceF1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentInterfaceF1.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceF1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceF1, gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceF1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceF1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceF1_specs_1 = { - sizeof(struct E2nodeComponentInterfaceF1), - offsetof(struct E2nodeComponentInterfaceF1, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceF1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceF1 = { - "E2nodeComponentInterfaceF1", - "E2nodeComponentInterfaceF1", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceF1_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceF1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceF1_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceF1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceF1.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceF1.h deleted file mode 100644 index 3c8e082..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceF1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentInterfaceF1_H_ -#define _E2nodeComponentInterfaceF1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GNB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceF1 */ -typedef struct E2nodeComponentInterfaceF1 { - GNB_DU_ID_t gNB_DU_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceF1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceF1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceF1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceF1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceF1_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceNG.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceNG.c deleted file mode 100644 index a8a16e3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceNG.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentInterfaceNG.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceNG_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceNG, amf_name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_AMFName, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "amf-name" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceNG_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceNG_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* amf-name */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceNG_specs_1 = { - sizeof(struct E2nodeComponentInterfaceNG), - offsetof(struct E2nodeComponentInterfaceNG, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceNG_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceNG = { - "E2nodeComponentInterfaceNG", - "E2nodeComponentInterfaceNG", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceNG_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceNG_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceNG_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceNG_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceNG.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceNG.h deleted file mode 100644 index cd24525..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceNG.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentInterfaceNG_H_ -#define _E2nodeComponentInterfaceNG_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "AMFName.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceNG */ -typedef struct E2nodeComponentInterfaceNG { - AMFName_t amf_name; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceNG_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceNG; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceNG_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceNG_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceNG_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceS1.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceS1.c deleted file mode 100644 index cc86742..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceS1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentInterfaceS1.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceS1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceS1, mme_name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_MMEname, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "mme-name" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceS1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceS1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mme-name */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceS1_specs_1 = { - sizeof(struct E2nodeComponentInterfaceS1), - offsetof(struct E2nodeComponentInterfaceS1, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceS1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceS1 = { - "E2nodeComponentInterfaceS1", - "E2nodeComponentInterfaceS1", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceS1_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceS1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceS1_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceS1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceS1.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceS1.h deleted file mode 100644 index 97893d2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceS1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentInterfaceS1_H_ -#define _E2nodeComponentInterfaceS1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "MMEname.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceS1 */ -typedef struct E2nodeComponentInterfaceS1 { - MMEname_t mme_name; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceS1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceS1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceS1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceS1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceS1_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceType.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceType.c deleted file mode 100644 index 1db7956..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceType.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentInterfaceType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_E2nodeComponentInterfaceType_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_E2nodeComponentInterfaceType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2nodeComponentInterfaceType_value2enum_1[] = { - { 0, 2, "ng" }, - { 1, 2, "xn" }, - { 2, 2, "e1" }, - { 3, 2, "f1" }, - { 4, 2, "w1" }, - { 5, 2, "s1" }, - { 6, 2, "x2" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2nodeComponentInterfaceType_enum2value_1[] = { - 2, /* e1(2) */ - 3, /* f1(3) */ - 0, /* ng(0) */ - 5, /* s1(5) */ - 4, /* w1(4) */ - 6, /* x2(6) */ - 1 /* xn(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2nodeComponentInterfaceType_specs_1 = { - asn_MAP_E2nodeComponentInterfaceType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2nodeComponentInterfaceType_enum2value_1, /* N => "tag"; sorted by N */ - 7, /* Number of elements in the maps */ - 8, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceType = { - "E2nodeComponentInterfaceType", - "E2nodeComponentInterfaceType", - &asn_OP_NativeEnumerated, - asn_DEF_E2nodeComponentInterfaceType_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceType_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1[0]), /* 1 */ - { &asn_OER_type_E2nodeComponentInterfaceType_constr_1, &asn_PER_type_E2nodeComponentInterfaceType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2nodeComponentInterfaceType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceType.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceType.h deleted file mode 100644 index 8830afb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceType.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentInterfaceType_H_ -#define _E2nodeComponentInterfaceType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2nodeComponentInterfaceType { - E2nodeComponentInterfaceType_ng = 0, - E2nodeComponentInterfaceType_xn = 1, - E2nodeComponentInterfaceType_e1 = 2, - E2nodeComponentInterfaceType_f1 = 3, - E2nodeComponentInterfaceType_w1 = 4, - E2nodeComponentInterfaceType_s1 = 5, - E2nodeComponentInterfaceType_x2 = 6 - /* - * Enumeration is extensible - */ -} e_E2nodeComponentInterfaceType; - -/* E2nodeComponentInterfaceType */ -typedef long E2nodeComponentInterfaceType_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2nodeComponentInterfaceType_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceType; -extern const asn_INTEGER_specifics_t asn_SPC_E2nodeComponentInterfaceType_specs_1; -asn_struct_free_f E2nodeComponentInterfaceType_free; -asn_struct_print_f E2nodeComponentInterfaceType_print; -asn_constr_check_f E2nodeComponentInterfaceType_constraint; -ber_type_decoder_f E2nodeComponentInterfaceType_decode_ber; -der_type_encoder_f E2nodeComponentInterfaceType_encode_der; -xer_type_decoder_f E2nodeComponentInterfaceType_decode_xer; -xer_type_encoder_f E2nodeComponentInterfaceType_encode_xer; -oer_type_decoder_f E2nodeComponentInterfaceType_decode_oer; -oer_type_encoder_f E2nodeComponentInterfaceType_encode_oer; -per_type_decoder_f E2nodeComponentInterfaceType_decode_uper; -per_type_encoder_f E2nodeComponentInterfaceType_encode_uper; -per_type_decoder_f E2nodeComponentInterfaceType_decode_aper; -per_type_encoder_f E2nodeComponentInterfaceType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceW1.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceW1.c deleted file mode 100644 index b25f695..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceW1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentInterfaceW1.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceW1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceW1, ng_eNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NGENB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ng-eNB-DU-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceW1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceW1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ng-eNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceW1_specs_1 = { - sizeof(struct E2nodeComponentInterfaceW1), - offsetof(struct E2nodeComponentInterfaceW1, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceW1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceW1 = { - "E2nodeComponentInterfaceW1", - "E2nodeComponentInterfaceW1", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceW1_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceW1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceW1_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceW1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceW1.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceW1.h deleted file mode 100644 index 29ac2c0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceW1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentInterfaceW1_H_ -#define _E2nodeComponentInterfaceW1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NGENB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceW1 */ -typedef struct E2nodeComponentInterfaceW1 { - NGENB_DU_ID_t ng_eNB_DU_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceW1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceW1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceW1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceW1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceW1_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceX2.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceX2.c deleted file mode 100644 index f271361..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceX2.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentInterfaceX2.h" - -#include "GlobalENB-ID.h" -#include "GlobalenGNB-ID.h" -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceX2_1[] = { - { ATF_POINTER, 2, offsetof(struct E2nodeComponentInterfaceX2, global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, - { ATF_POINTER, 1, offsetof(struct E2nodeComponentInterfaceX2, global_en_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalenGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-en-gNB-ID" - }, -}; -static const int asn_MAP_E2nodeComponentInterfaceX2_oms_1[] = { 0, 1 }; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceX2_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceX2_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global-en-gNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceX2_specs_1 = { - sizeof(struct E2nodeComponentInterfaceX2), - offsetof(struct E2nodeComponentInterfaceX2, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceX2_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_E2nodeComponentInterfaceX2_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceX2 = { - "E2nodeComponentInterfaceX2", - "E2nodeComponentInterfaceX2", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceX2_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceX2_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceX2_1, - 2, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceX2_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceX2.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceX2.h deleted file mode 100644 index d226ea0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceX2.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentInterfaceX2_H_ -#define _E2nodeComponentInterfaceX2_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct GlobalENB_ID; -struct GlobalenGNB_ID; - -/* E2nodeComponentInterfaceX2 */ -typedef struct E2nodeComponentInterfaceX2 { - struct GlobalENB_ID *global_eNB_ID; /* OPTIONAL */ - struct GlobalenGNB_ID *global_en_gNB_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceX2_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceX2; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceX2_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceX2_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceX2_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceXn.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceXn.c deleted file mode 100644 index 0d5646b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceXn.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeComponentInterfaceXn.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceXn_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceXn, global_NG_RAN_Node_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_GlobalNG_RANNode_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-NG-RAN-Node-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceXn_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceXn_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-NG-RAN-Node-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceXn_specs_1 = { - sizeof(struct E2nodeComponentInterfaceXn), - offsetof(struct E2nodeComponentInterfaceXn, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceXn_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceXn = { - "E2nodeComponentInterfaceXn", - "E2nodeComponentInterfaceXn", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceXn_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceXn_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceXn_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceXn_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceXn.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceXn.h deleted file mode 100644 index 5a22510..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeComponentInterfaceXn.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeComponentInterfaceXn_H_ -#define _E2nodeComponentInterfaceXn_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalNG-RANNode-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceXn */ -typedef struct E2nodeComponentInterfaceXn { - GlobalNG_RANNode_ID_t global_NG_RAN_Node_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceXn_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceXn; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceXn_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceXn_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceXn_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.c deleted file mode 100644 index 183a5e7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeConfigurationUpdate.h" - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P18, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdate_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdate_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_specs_1 = { - sizeof(struct E2nodeConfigurationUpdate), - offsetof(struct E2nodeConfigurationUpdate, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdate_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate = { - "E2nodeConfigurationUpdate", - "E2nodeConfigurationUpdate", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdate_tags_1, - sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdate_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdate_1, - 1, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdate_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.h deleted file mode 100644 index 23125a1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdate.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeConfigurationUpdate_H_ -#define _E2nodeConfigurationUpdate_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeConfigurationUpdate */ -typedef struct E2nodeConfigurationUpdate { - ProtocolIE_Container_1917P18_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdate_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeConfigurationUpdate_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.c deleted file mode 100644 index 9a35816..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeConfigurationUpdateAcknowledge.h" - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P19, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_specs_1 = { - sizeof(struct E2nodeConfigurationUpdateAcknowledge), - offsetof(struct E2nodeConfigurationUpdateAcknowledge, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdateAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge = { - "E2nodeConfigurationUpdateAcknowledge", - "E2nodeConfigurationUpdateAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1, - sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdateAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.h deleted file mode 100644 index 6fdec97..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeConfigurationUpdateAcknowledge_H_ -#define _E2nodeConfigurationUpdateAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeConfigurationUpdateAcknowledge */ -typedef struct E2nodeConfigurationUpdateAcknowledge { - ProtocolIE_Container_1917P19_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdateAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeConfigurationUpdateAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateFailure.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateFailure.c deleted file mode 100644 index 3933041..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeConfigurationUpdateFailure.h" - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P20, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_specs_1 = { - sizeof(struct E2nodeConfigurationUpdateFailure), - offsetof(struct E2nodeConfigurationUpdateFailure, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdateFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure = { - "E2nodeConfigurationUpdateFailure", - "E2nodeConfigurationUpdateFailure", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdateFailure_tags_1, - sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdateFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdateFailure_1, - 1, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdateFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateFailure.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateFailure.h deleted file mode 100644 index ddde6a1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeConfigurationUpdateFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeConfigurationUpdateFailure_H_ -#define _E2nodeConfigurationUpdateFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeConfigurationUpdateFailure */ -typedef struct E2nodeConfigurationUpdateFailure { - ProtocolIE_Container_1917P20_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdateFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeConfigurationUpdateFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-Item.c deleted file mode 100644 index c2ecd03..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeTNLassociationRemoval-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_Item, tnlInformation), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformation" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_Item, tnlInformationRIC), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformationRIC" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeTNLassociationRemoval_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlInformation */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tnlInformationRIC */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_Item_specs_1 = { - sizeof(struct E2nodeTNLassociationRemoval_Item), - offsetof(struct E2nodeTNLassociationRemoval_Item, _asn_ctx), - asn_MAP_E2nodeTNLassociationRemoval_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_Item = { - "E2nodeTNLassociationRemoval-Item", - "E2nodeTNLassociationRemoval-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1, - sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeTNLassociationRemoval_Item_1, - 2, /* Elements count */ - &asn_SPC_E2nodeTNLassociationRemoval_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-Item.h deleted file mode 100644 index d31e5b7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-Item.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeTNLassociationRemoval_Item_H_ -#define _E2nodeTNLassociationRemoval_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "TNLinformation.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeTNLassociationRemoval-Item */ -typedef struct E2nodeTNLassociationRemoval_Item { - TNLinformation_t tnlInformation; - TNLinformation_t tnlInformationRIC; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeTNLassociationRemoval_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeTNLassociationRemoval_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-List.c deleted file mode 100644 index 8993424..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2nodeTNLassociationRemoval-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_E2nodeTNLassociationRemoval_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..32)) */}; -static asn_per_constraints_t asn_PER_type_E2nodeTNLassociationRemoval_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P10, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeTNLassociationRemoval_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeTNLassociationRemoval_List_specs_1 = { - sizeof(struct E2nodeTNLassociationRemoval_List), - offsetof(struct E2nodeTNLassociationRemoval_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_List = { - "E2nodeTNLassociationRemoval-List", - "E2nodeTNLassociationRemoval-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeTNLassociationRemoval_List_tags_1, - sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeTNLassociationRemoval_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1[0]), /* 1 */ - { &asn_OER_type_E2nodeTNLassociationRemoval_List_constr_1, &asn_PER_type_E2nodeTNLassociationRemoval_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeTNLassociationRemoval_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeTNLassociationRemoval_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-List.h deleted file mode 100644 index 193e626..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2nodeTNLassociationRemoval-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2nodeTNLassociationRemoval_List_H_ -#define _E2nodeTNLassociationRemoval_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeTNLassociationRemoval-List */ -typedef struct E2nodeTNLassociationRemoval_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeTNLassociationRemoval_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeTNLassociationRemoval_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupFailure.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupFailure.c deleted file mode 100644 index 0b7cab5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2setupFailure.h" - -asn_TYPE_member_t asn_MBR_E2setupFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P14, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1 = { - sizeof(struct E2setupFailure), - offsetof(struct E2setupFailure, _asn_ctx), - asn_MAP_E2setupFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupFailure = { - "E2setupFailure", - "E2setupFailure", - &asn_OP_SEQUENCE, - asn_DEF_E2setupFailure_tags_1, - sizeof(asn_DEF_E2setupFailure_tags_1) - /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ - asn_DEF_E2setupFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_E2setupFailure_tags_1) - /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupFailure_1, - 1, /* Elements count */ - &asn_SPC_E2setupFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupFailure.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupFailure.h deleted file mode 100644 index 0d8c71e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2setupFailure_H_ -#define _E2setupFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2setupFailure */ -typedef struct E2setupFailure { - ProtocolIE_Container_1917P14_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2setupFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_E2setupFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2setupFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupRequest.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupRequest.c deleted file mode 100644 index 4b7af4f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2setupRequest.h" - -asn_TYPE_member_t asn_MBR_E2setupRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P12, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1 = { - sizeof(struct E2setupRequest), - offsetof(struct E2setupRequest, _asn_ctx), - asn_MAP_E2setupRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupRequest = { - "E2setupRequest", - "E2setupRequest", - &asn_OP_SEQUENCE, - asn_DEF_E2setupRequest_tags_1, - sizeof(asn_DEF_E2setupRequest_tags_1) - /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ - asn_DEF_E2setupRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_E2setupRequest_tags_1) - /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupRequest_1, - 1, /* Elements count */ - &asn_SPC_E2setupRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupRequest.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupRequest.h deleted file mode 100644 index 89093d7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2setupRequest_H_ -#define _E2setupRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2setupRequest */ -typedef struct E2setupRequest { - ProtocolIE_Container_1917P12_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2setupRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_E2setupRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2setupRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupResponse.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupResponse.c deleted file mode 100644 index 8e82484..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "E2setupResponse.h" - -asn_TYPE_member_t asn_MBR_E2setupResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P13, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1 = { - sizeof(struct E2setupResponse), - offsetof(struct E2setupResponse, _asn_ctx), - asn_MAP_E2setupResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupResponse = { - "E2setupResponse", - "E2setupResponse", - &asn_OP_SEQUENCE, - asn_DEF_E2setupResponse_tags_1, - sizeof(asn_DEF_E2setupResponse_tags_1) - /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ - asn_DEF_E2setupResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_E2setupResponse_tags_1) - /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupResponse_1, - 1, /* Elements count */ - &asn_SPC_E2setupResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupResponse.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupResponse.h deleted file mode 100644 index d69675d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/E2setupResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _E2setupResponse_H_ -#define _E2setupResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2setupResponse */ -typedef struct E2setupResponse { - ProtocolIE_Container_1917P13_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2setupResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_E2setupResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2setupResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID-Choice.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID-Choice.c deleted file mode 100644 index e3e8c6e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID-Choice.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ENB-ID-Choice.h" - -static int -memb_enb_ID_macro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_enb_ID_shortmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 18)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_enb_ID_longmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 21)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_enb_ID_macro_constr_2 CC_NOTUSED = { - { 0, 0 }, - 20 /* (SIZE(20..20)) */}; -static asn_per_constraints_t asn_PER_memb_enb_ID_macro_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = { - { 0, 0 }, - 18 /* (SIZE(18..18)) */}; -static asn_per_constraints_t asn_PER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = { - { 0, 0 }, - 21 /* (SIZE(21..21)) */}; -static asn_per_constraints_t asn_PER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_macro), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_enb_ID_macro_constr_2, &asn_PER_memb_enb_ID_macro_constr_2, memb_enb_ID_macro_constraint_1 }, - 0, 0, /* No default value */ - "enb-ID-macro" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_shortmacro), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_enb_ID_shortmacro_constr_3, &asn_PER_memb_enb_ID_shortmacro_constr_3, memb_enb_ID_shortmacro_constraint_1 }, - 0, 0, /* No default value */ - "enb-ID-shortmacro" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_longmacro), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_enb_ID_longmacro_constr_4, &asn_PER_memb_enb_ID_longmacro_constr_4, memb_enb_ID_longmacro_constraint_1 }, - 0, 0, /* No default value */ - "enb-ID-longmacro" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_Choice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enb-ID-macro */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* enb-ID-shortmacro */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* enb-ID-longmacro */ -}; -asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1 = { - sizeof(struct ENB_ID_Choice), - offsetof(struct ENB_ID_Choice, _asn_ctx), - offsetof(struct ENB_ID_Choice, present), - sizeof(((struct ENB_ID_Choice *)0)->present), - asn_MAP_ENB_ID_Choice_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice = { - "ENB-ID-Choice", - "ENB-ID-Choice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_ENB_ID_Choice_constr_1, &asn_PER_type_ENB_ID_Choice_constr_1, CHOICE_constraint }, - asn_MBR_ENB_ID_Choice_1, - 3, /* Elements count */ - &asn_SPC_ENB_ID_Choice_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID-Choice.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID-Choice.h deleted file mode 100644 index ee499d8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID-Choice.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ENB_ID_Choice_H_ -#define _ENB_ID_Choice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum ENB_ID_Choice_PR { - ENB_ID_Choice_PR_NOTHING, /* No components present */ - ENB_ID_Choice_PR_enb_ID_macro, - ENB_ID_Choice_PR_enb_ID_shortmacro, - ENB_ID_Choice_PR_enb_ID_longmacro - /* Extensions may appear below */ - -} ENB_ID_Choice_PR; - -/* ENB-ID-Choice */ -typedef struct ENB_ID_Choice { - ENB_ID_Choice_PR present; - union ENB_ID_Choice_u { - BIT_STRING_t enb_ID_macro; - BIT_STRING_t enb_ID_shortmacro; - BIT_STRING_t enb_ID_longmacro; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ENB_ID_Choice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice; -extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1; -extern asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[3]; -extern asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _ENB_ID_Choice_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.c deleted file mode 100644 index 31c7893..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ENB-ID.h" - -static int -memb_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 28)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 18)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 21)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { - { 0, 0 }, - 20 /* (SIZE(20..20)) */}; -static asn_per_constraints_t asn_PER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { - { 0, 0 }, - 28 /* (SIZE(28..28)) */}; -static asn_per_constraints_t asn_PER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { - { 0, 0 }, - 18 /* (SIZE(18..18)) */}; -static asn_per_constraints_t asn_PER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { - { 0, 0 }, - 21 /* (SIZE(21..21)) */}; -static asn_per_constraints_t asn_PER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ENB_ID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_ENB_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ENB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_macro_eNB_ID_constr_2, &asn_PER_memb_macro_eNB_ID_constr_2, memb_macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "macro-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.home_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_home_eNB_ID_constr_3, &asn_PER_memb_home_eNB_ID_constr_3, memb_home_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "home-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.short_Macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_short_Macro_eNB_ID_constr_5, &asn_PER_memb_short_Macro_eNB_ID_constr_5, memb_short_Macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "short-Macro-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.long_Macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_long_Macro_eNB_ID_constr_6, &asn_PER_memb_long_Macro_eNB_ID_constr_6, memb_long_Macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "long-Macro-eNB-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1 = { - sizeof(struct ENB_ID), - offsetof(struct ENB_ID, _asn_ctx), - offsetof(struct ENB_ID, present), - sizeof(((struct ENB_ID *)0)->present), - asn_MAP_ENB_ID_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ENB_ID = { - "ENB-ID", - "ENB-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_ENB_ID_constr_1, &asn_PER_type_ENB_ID_constr_1, CHOICE_constraint }, - asn_MBR_ENB_ID_1, - 4, /* Elements count */ - &asn_SPC_ENB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.h deleted file mode 100644 index 5af5286..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENB-ID.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ENB_ID_H_ -#define _ENB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum ENB_ID_PR { - ENB_ID_PR_NOTHING, /* No components present */ - ENB_ID_PR_macro_eNB_ID, - ENB_ID_PR_home_eNB_ID, - /* Extensions may appear below */ - ENB_ID_PR_short_Macro_eNB_ID, - ENB_ID_PR_long_Macro_eNB_ID -} ENB_ID_PR; - -/* ENB-ID */ -typedef struct ENB_ID { - ENB_ID_PR present; - union ENB_ID_u { - BIT_STRING_t macro_eNB_ID; - BIT_STRING_t home_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - BIT_STRING_t short_Macro_eNB_ID; - BIT_STRING_t long_Macro_eNB_ID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ENB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ENB_ID; -extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_ENB_ID_1[4]; -extern asn_per_constraints_t asn_PER_type_ENB_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _ENB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.c deleted file mode 100644 index 775d556..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ENGNB-ID.h" - -static int -memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size >= 22 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_gNB_ID_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(22..32)) */}; -static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ENGNB_ID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ENGNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ENGNB_ID, choice.gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_gNB_ID_constr_2, &asn_PER_memb_gNB_ID_constr_2, memb_gNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "gNB-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_ENGNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1 = { - sizeof(struct ENGNB_ID), - offsetof(struct ENGNB_ID, _asn_ctx), - offsetof(struct ENGNB_ID, present), - sizeof(((struct ENGNB_ID *)0)->present), - asn_MAP_ENGNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ENGNB_ID = { - "ENGNB-ID", - "ENGNB-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_ENGNB_ID_constr_1, &asn_PER_type_ENGNB_ID_constr_1, CHOICE_constraint }, - asn_MBR_ENGNB_ID_1, - 1, /* Elements count */ - &asn_SPC_ENGNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.h deleted file mode 100644 index 2a7ce8b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ENGNB-ID.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ENGNB_ID_H_ -#define _ENGNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum ENGNB_ID_PR { - ENGNB_ID_PR_NOTHING, /* No components present */ - ENGNB_ID_PR_gNB_ID - /* Extensions may appear below */ - -} ENGNB_ID_PR; - -/* ENGNB-ID */ -typedef struct ENGNB_ID { - ENGNB_ID_PR present; - union ENGNB_ID_u { - BIT_STRING_t gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ENGNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ENGNB_ID; -extern asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_ENGNB_ID_1[1]; -extern asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _ENGNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.c deleted file mode 100644 index d8902f8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "EPC-CUUP-PM-Format.h" - -static int -memb_perQCIReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 256)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_perQCIReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_type_perQCIReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_perQCIReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_memb_perQCIReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_perQCIReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PerQCIReportListItemFormat, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_perQCIReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_perQCIReportList_specs_2 = { - sizeof(struct EPC_CUUP_PM_Format__perQCIReportList), - offsetof(struct EPC_CUUP_PM_Format__perQCIReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_perQCIReportList_2 = { - "perQCIReportList", - "perQCIReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_perQCIReportList_tags_2, - sizeof(asn_DEF_perQCIReportList_tags_2) - /sizeof(asn_DEF_perQCIReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_perQCIReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_perQCIReportList_tags_2) - /sizeof(asn_DEF_perQCIReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_perQCIReportList_constr_2, &asn_PER_type_perQCIReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_perQCIReportList_2, - 1, /* Single element */ - &asn_SPC_perQCIReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_EPC_CUUP_PM_Format_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct EPC_CUUP_PM_Format, perQCIReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_perQCIReportList_2, - 0, - { &asn_OER_memb_perQCIReportList_constr_2, &asn_PER_memb_perQCIReportList_constr_2, memb_perQCIReportList_constraint_1 }, - 0, 0, /* No default value */ - "perQCIReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_EPC_CUUP_PM_Format_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_EPC_CUUP_PM_Format_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* perQCIReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_EPC_CUUP_PM_Format_specs_1 = { - sizeof(struct EPC_CUUP_PM_Format), - offsetof(struct EPC_CUUP_PM_Format, _asn_ctx), - asn_MAP_EPC_CUUP_PM_Format_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_EPC_CUUP_PM_Format = { - "EPC-CUUP-PM-Format", - "EPC-CUUP-PM-Format", - &asn_OP_SEQUENCE, - asn_DEF_EPC_CUUP_PM_Format_tags_1, - sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1) - /sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1[0]), /* 1 */ - asn_DEF_EPC_CUUP_PM_Format_tags_1, /* Same as above */ - sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1) - /sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_EPC_CUUP_PM_Format_1, - 1, /* Elements count */ - &asn_SPC_EPC_CUUP_PM_Format_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.h deleted file mode 100644 index b07125d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-CUUP-PM-Format.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _EPC_CUUP_PM_Format_H_ -#define _EPC_CUUP_PM_Format_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PerQCIReportListItemFormat; - -/* EPC-CUUP-PM-Format */ -typedef struct EPC_CUUP_PM_Format { - struct EPC_CUUP_PM_Format__perQCIReportList { - A_SEQUENCE_OF(struct PerQCIReportListItemFormat) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } perQCIReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} EPC_CUUP_PM_Format_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_EPC_CUUP_PM_Format; -extern asn_SEQUENCE_specifics_t asn_SPC_EPC_CUUP_PM_Format_specs_1; -extern asn_TYPE_member_t asn_MBR_EPC_CUUP_PM_Format_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PerQCIReportListItemFormat.h" - -#endif /* _EPC_CUUP_PM_Format_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.c deleted file mode 100644 index 2ba5440..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "EPC-DU-PM-Container.h" - -static int -memb_perQCIReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 256)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_perQCIReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_type_perQCIReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_perQCIReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_memb_perQCIReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_perQCIReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PerQCIReportListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_perQCIReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_perQCIReportList_specs_2 = { - sizeof(struct EPC_DU_PM_Container__perQCIReportList), - offsetof(struct EPC_DU_PM_Container__perQCIReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_perQCIReportList_2 = { - "perQCIReportList", - "perQCIReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_perQCIReportList_tags_2, - sizeof(asn_DEF_perQCIReportList_tags_2) - /sizeof(asn_DEF_perQCIReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_perQCIReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_perQCIReportList_tags_2) - /sizeof(asn_DEF_perQCIReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_perQCIReportList_constr_2, &asn_PER_type_perQCIReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_perQCIReportList_2, - 1, /* Single element */ - &asn_SPC_perQCIReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_EPC_DU_PM_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct EPC_DU_PM_Container, perQCIReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_perQCIReportList_2, - 0, - { &asn_OER_memb_perQCIReportList_constr_2, &asn_PER_memb_perQCIReportList_constr_2, memb_perQCIReportList_constraint_1 }, - 0, 0, /* No default value */ - "perQCIReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_EPC_DU_PM_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_EPC_DU_PM_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* perQCIReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_EPC_DU_PM_Container_specs_1 = { - sizeof(struct EPC_DU_PM_Container), - offsetof(struct EPC_DU_PM_Container, _asn_ctx), - asn_MAP_EPC_DU_PM_Container_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_EPC_DU_PM_Container = { - "EPC-DU-PM-Container", - "EPC-DU-PM-Container", - &asn_OP_SEQUENCE, - asn_DEF_EPC_DU_PM_Container_tags_1, - sizeof(asn_DEF_EPC_DU_PM_Container_tags_1) - /sizeof(asn_DEF_EPC_DU_PM_Container_tags_1[0]), /* 1 */ - asn_DEF_EPC_DU_PM_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_EPC_DU_PM_Container_tags_1) - /sizeof(asn_DEF_EPC_DU_PM_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_EPC_DU_PM_Container_1, - 1, /* Elements count */ - &asn_SPC_EPC_DU_PM_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.h deleted file mode 100644 index 198982e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/EPC-DU-PM-Container.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _EPC_DU_PM_Container_H_ -#define _EPC_DU_PM_Container_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PerQCIReportListItem; - -/* EPC-DU-PM-Container */ -typedef struct EPC_DU_PM_Container { - struct EPC_DU_PM_Container__perQCIReportList { - A_SEQUENCE_OF(struct PerQCIReportListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } perQCIReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} EPC_DU_PM_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_EPC_DU_PM_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_EPC_DU_PM_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_EPC_DU_PM_Container_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PerQCIReportListItem.h" - -#endif /* _EPC_DU_PM_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ErrorIndication.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ErrorIndication.c deleted file mode 100644 index 209a036..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ErrorIndication.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ErrorIndication.h" - -asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P11, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = { - sizeof(struct ErrorIndication), - offsetof(struct ErrorIndication, _asn_ctx), - asn_MAP_ErrorIndication_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ErrorIndication = { - "ErrorIndication", - "ErrorIndication", - &asn_OP_SEQUENCE, - asn_DEF_ErrorIndication_tags_1, - sizeof(asn_DEF_ErrorIndication_tags_1) - /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ - asn_DEF_ErrorIndication_tags_1, /* Same as above */ - sizeof(asn_DEF_ErrorIndication_tags_1) - /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ErrorIndication_1, - 1, /* Elements count */ - &asn_SPC_ErrorIndication_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ErrorIndication.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ErrorIndication.h deleted file mode 100644 index ed0676e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ErrorIndication.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ErrorIndication_H_ -#define _ErrorIndication_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ErrorIndication */ -typedef struct ErrorIndication { - ProtocolIE_Container_1917P11_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ErrorIndication_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication; -extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1; -extern asn_TYPE_member_t asn_MBR_ErrorIndication_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ErrorIndication_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.c deleted file mode 100644 index d8f7e44..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "FGC-CUUP-PM-Format.h" - -static int -memb_sliceToReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 1024)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_sliceToReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_sliceToReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_sliceToReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_memb_sliceToReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_sliceToReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_SliceToReportListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_sliceToReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_sliceToReportList_specs_2 = { - sizeof(struct FGC_CUUP_PM_Format__sliceToReportList), - offsetof(struct FGC_CUUP_PM_Format__sliceToReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_sliceToReportList_2 = { - "sliceToReportList", - "sliceToReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_sliceToReportList_tags_2, - sizeof(asn_DEF_sliceToReportList_tags_2) - /sizeof(asn_DEF_sliceToReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_sliceToReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_sliceToReportList_tags_2) - /sizeof(asn_DEF_sliceToReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_sliceToReportList_constr_2, &asn_PER_type_sliceToReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_sliceToReportList_2, - 1, /* Single element */ - &asn_SPC_sliceToReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_FGC_CUUP_PM_Format_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct FGC_CUUP_PM_Format, sliceToReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_sliceToReportList_2, - 0, - { &asn_OER_memb_sliceToReportList_constr_2, &asn_PER_memb_sliceToReportList_constr_2, memb_sliceToReportList_constraint_1 }, - 0, 0, /* No default value */ - "sliceToReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_FGC_CUUP_PM_Format_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_FGC_CUUP_PM_Format_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* sliceToReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_FGC_CUUP_PM_Format_specs_1 = { - sizeof(struct FGC_CUUP_PM_Format), - offsetof(struct FGC_CUUP_PM_Format, _asn_ctx), - asn_MAP_FGC_CUUP_PM_Format_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_FGC_CUUP_PM_Format = { - "FGC-CUUP-PM-Format", - "FGC-CUUP-PM-Format", - &asn_OP_SEQUENCE, - asn_DEF_FGC_CUUP_PM_Format_tags_1, - sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1) - /sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1[0]), /* 1 */ - asn_DEF_FGC_CUUP_PM_Format_tags_1, /* Same as above */ - sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1) - /sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_FGC_CUUP_PM_Format_1, - 1, /* Elements count */ - &asn_SPC_FGC_CUUP_PM_Format_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.h deleted file mode 100644 index a6e4aa8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-CUUP-PM-Format.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _FGC_CUUP_PM_Format_H_ -#define _FGC_CUUP_PM_Format_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct SliceToReportListItem; - -/* FGC-CUUP-PM-Format */ -typedef struct FGC_CUUP_PM_Format { - struct FGC_CUUP_PM_Format__sliceToReportList { - A_SEQUENCE_OF(struct SliceToReportListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } sliceToReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} FGC_CUUP_PM_Format_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_FGC_CUUP_PM_Format; -extern asn_SEQUENCE_specifics_t asn_SPC_FGC_CUUP_PM_Format_specs_1; -extern asn_TYPE_member_t asn_MBR_FGC_CUUP_PM_Format_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "SliceToReportListItem.h" - -#endif /* _FGC_CUUP_PM_Format_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.c deleted file mode 100644 index c0429ab..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "FGC-DU-PM-Container.h" - -static int -memb_slicePerPlmnPerCellList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 1024)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_type_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..1024)) */}; -static asn_per_constraints_t asn_PER_memb_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_slicePerPlmnPerCellList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_SlicePerPlmnPerCellListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_slicePerPlmnPerCellList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_slicePerPlmnPerCellList_specs_2 = { - sizeof(struct FGC_DU_PM_Container__slicePerPlmnPerCellList), - offsetof(struct FGC_DU_PM_Container__slicePerPlmnPerCellList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_slicePerPlmnPerCellList_2 = { - "slicePerPlmnPerCellList", - "slicePerPlmnPerCellList", - &asn_OP_SEQUENCE_OF, - asn_DEF_slicePerPlmnPerCellList_tags_2, - sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2) - /sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2[0]) - 1, /* 1 */ - asn_DEF_slicePerPlmnPerCellList_tags_2, /* Same as above */ - sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2) - /sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2[0]), /* 2 */ - { &asn_OER_type_slicePerPlmnPerCellList_constr_2, &asn_PER_type_slicePerPlmnPerCellList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_slicePerPlmnPerCellList_2, - 1, /* Single element */ - &asn_SPC_slicePerPlmnPerCellList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_FGC_DU_PM_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct FGC_DU_PM_Container, slicePerPlmnPerCellList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_slicePerPlmnPerCellList_2, - 0, - { &asn_OER_memb_slicePerPlmnPerCellList_constr_2, &asn_PER_memb_slicePerPlmnPerCellList_constr_2, memb_slicePerPlmnPerCellList_constraint_1 }, - 0, 0, /* No default value */ - "slicePerPlmnPerCellList" - }, -}; -static const ber_tlv_tag_t asn_DEF_FGC_DU_PM_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_FGC_DU_PM_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* slicePerPlmnPerCellList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_FGC_DU_PM_Container_specs_1 = { - sizeof(struct FGC_DU_PM_Container), - offsetof(struct FGC_DU_PM_Container, _asn_ctx), - asn_MAP_FGC_DU_PM_Container_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_FGC_DU_PM_Container = { - "FGC-DU-PM-Container", - "FGC-DU-PM-Container", - &asn_OP_SEQUENCE, - asn_DEF_FGC_DU_PM_Container_tags_1, - sizeof(asn_DEF_FGC_DU_PM_Container_tags_1) - /sizeof(asn_DEF_FGC_DU_PM_Container_tags_1[0]), /* 1 */ - asn_DEF_FGC_DU_PM_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_FGC_DU_PM_Container_tags_1) - /sizeof(asn_DEF_FGC_DU_PM_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_FGC_DU_PM_Container_1, - 1, /* Elements count */ - &asn_SPC_FGC_DU_PM_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.h deleted file mode 100644 index 96debbb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FGC-DU-PM-Container.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _FGC_DU_PM_Container_H_ -#define _FGC_DU_PM_Container_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct SlicePerPlmnPerCellListItem; - -/* FGC-DU-PM-Container */ -typedef struct FGC_DU_PM_Container { - struct FGC_DU_PM_Container__slicePerPlmnPerCellList { - A_SEQUENCE_OF(struct SlicePerPlmnPerCellListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } slicePerPlmnPerCellList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} FGC_DU_PM_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_FGC_DU_PM_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_FGC_DU_PM_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_FGC_DU_PM_Container_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "SlicePerPlmnPerCellListItem.h" - -#endif /* _FGC_DU_PM_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnListItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnListItem.c deleted file mode 100644 index 84d1741..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnListItem.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "FQIPERSlicesPerPlmnListItem.h" - -static int -memb_fiveQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_fiveQI_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_fiveQI_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct FQIPERSlicesPerPlmnListItem, fiveQI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_fiveQI_constr_2, &asn_PER_memb_fiveQI_constr_2, memb_fiveQI_constraint_1 }, - 0, 0, /* No default value */ - "fiveQI" - }, - { ATF_POINTER, 2, offsetof(struct FQIPERSlicesPerPlmnListItem, pDCPBytesDL), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesDL_constr_3, &asn_PER_memb_pDCPBytesDL_constr_3, memb_pDCPBytesDL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesDL" - }, - { ATF_POINTER, 1, offsetof(struct FQIPERSlicesPerPlmnListItem, pDCPBytesUL), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesUL_constr_4, &asn_PER_memb_pDCPBytesUL_constr_4, memb_pDCPBytesUL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesUL" - }, -}; -static const int asn_MAP_FQIPERSlicesPerPlmnListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_FQIPERSlicesPerPlmnListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveQI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pDCPBytesDL */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pDCPBytesUL */ -}; -asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnListItem_specs_1 = { - sizeof(struct FQIPERSlicesPerPlmnListItem), - offsetof(struct FQIPERSlicesPerPlmnListItem, _asn_ctx), - asn_MAP_FQIPERSlicesPerPlmnListItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_FQIPERSlicesPerPlmnListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnListItem = { - "FQIPERSlicesPerPlmnListItem", - "FQIPERSlicesPerPlmnListItem", - &asn_OP_SEQUENCE, - asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1, - sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1) - /sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1[0]), /* 1 */ - asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1) - /sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_FQIPERSlicesPerPlmnListItem_1, - 3, /* Elements count */ - &asn_SPC_FQIPERSlicesPerPlmnListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnListItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnListItem.h deleted file mode 100644 index a87a0d7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnListItem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _FQIPERSlicesPerPlmnListItem_H_ -#define _FQIPERSlicesPerPlmnListItem_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* FQIPERSlicesPerPlmnListItem */ -typedef struct FQIPERSlicesPerPlmnListItem { - long fiveQI; - INTEGER_t *pDCPBytesDL; /* OPTIONAL */ - INTEGER_t *pDCPBytesUL; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} FQIPERSlicesPerPlmnListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnListItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _FQIPERSlicesPerPlmnListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c deleted file mode 100644 index d73d0db..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "FQIPERSlicesPerPlmnPerCellListItem.h" - -static int -memb_fiveQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_dl_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 273)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ul_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 273)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_fiveQI_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_fiveQI_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { 2, 1 } /* (0..273) */, - -1}; -static asn_per_constraints_t asn_PER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 9, 9, 0, 273 } /* (0..273) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { 2, 1 } /* (0..273) */, - -1}; -static asn_per_constraints_t asn_PER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 9, 9, 0, 273 } /* (0..273) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnPerCellListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, fiveQI), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_fiveQI_constr_2, &asn_PER_memb_fiveQI_constr_2, memb_fiveQI_constraint_1 }, - 0, 0, /* No default value */ - "fiveQI" - }, - { ATF_POINTER, 2, offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, dl_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_dl_PRBUsage_constr_3, &asn_PER_memb_dl_PRBUsage_constr_3, memb_dl_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "dl-PRBUsage" - }, - { ATF_POINTER, 1, offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, ul_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ul_PRBUsage_constr_4, &asn_PER_memb_ul_PRBUsage_constr_4, memb_ul_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "ul-PRBUsage" - }, -}; -static const int asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveQI */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-PRBUsage */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ul-PRBUsage */ -}; -asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnPerCellListItem_specs_1 = { - sizeof(struct FQIPERSlicesPerPlmnPerCellListItem), - offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, _asn_ctx), - asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnPerCellListItem = { - "FQIPERSlicesPerPlmnPerCellListItem", - "FQIPERSlicesPerPlmnPerCellListItem", - &asn_OP_SEQUENCE, - asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1, - sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1[0]), /* 1 */ - asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_FQIPERSlicesPerPlmnPerCellListItem_1, - 3, /* Elements count */ - &asn_SPC_FQIPERSlicesPerPlmnPerCellListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h deleted file mode 100644 index 1b22e34..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _FQIPERSlicesPerPlmnPerCellListItem_H_ -#define _FQIPERSlicesPerPlmnPerCellListItem_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* FQIPERSlicesPerPlmnPerCellListItem */ -typedef struct FQIPERSlicesPerPlmnPerCellListItem { - long fiveQI; - long *dl_PRBUsage; /* OPTIONAL */ - long *ul_PRBUsage; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} FQIPERSlicesPerPlmnPerCellListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnPerCellListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnPerCellListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnPerCellListItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _FQIPERSlicesPerPlmnPerCellListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.c deleted file mode 100644 index 029ca92..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-CU-CP-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -GNB_CU_CP_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_GNB_CU_CP_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_GNB_CU_CP_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_CU_CP_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_GNB_CU_CP_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_GNB_CU_CP_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_GNB_CU_CP_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_CU_CP_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_Name = { - "GNB-CU-CP-Name", - "GNB-CU-CP-Name", - &asn_OP_PrintableString, - asn_DEF_GNB_CU_CP_Name_tags_1, - sizeof(asn_DEF_GNB_CU_CP_Name_tags_1) - /sizeof(asn_DEF_GNB_CU_CP_Name_tags_1[0]), /* 1 */ - asn_DEF_GNB_CU_CP_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_CU_CP_Name_tags_1) - /sizeof(asn_DEF_GNB_CU_CP_Name_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_CU_CP_Name_constr_1, &asn_PER_type_GNB_CU_CP_Name_constr_1, GNB_CU_CP_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.h deleted file mode 100644 index 1eb3404..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-CP-Name.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_CU_CP_Name_H_ -#define _GNB_CU_CP_Name_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-CU-CP-Name */ -typedef PrintableString_t GNB_CU_CP_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_CU_CP_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_Name; -asn_struct_free_f GNB_CU_CP_Name_free; -asn_struct_print_f GNB_CU_CP_Name_print; -asn_constr_check_f GNB_CU_CP_Name_constraint; -ber_type_decoder_f GNB_CU_CP_Name_decode_ber; -der_type_encoder_f GNB_CU_CP_Name_encode_der; -xer_type_decoder_f GNB_CU_CP_Name_decode_xer; -xer_type_encoder_f GNB_CU_CP_Name_encode_xer; -oer_type_decoder_f GNB_CU_CP_Name_decode_oer; -oer_type_encoder_f GNB_CU_CP_Name_encode_oer; -per_type_decoder_f GNB_CU_CP_Name_decode_uper; -per_type_encoder_f GNB_CU_CP_Name_encode_uper; -per_type_decoder_f GNB_CU_CP_Name_decode_aper; -per_type_encoder_f GNB_CU_CP_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_CU_CP_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.c deleted file mode 100644 index ce383bd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GNB-CU-UP-ID.h" - -int -GNB_CU_UP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 68719476735)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using INTEGER, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_CU_UP_ID_constr_1 CC_NOTUSED = { - { 8, 1 } /* (0..68719476735) */, - -1}; -asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_CU_UP_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID = { - "GNB-CU-UP-ID", - "GNB-CU-UP-ID", - &asn_OP_INTEGER, - asn_DEF_GNB_CU_UP_ID_tags_1, - sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ - asn_DEF_GNB_CU_UP_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_CU_UP_ID_constr_1, &asn_PER_type_GNB_CU_UP_ID_constr_1, GNB_CU_UP_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.h deleted file mode 100644 index 38093ef..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GNB_CU_UP_ID_H_ -#define _GNB_CU_UP_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "INTEGER.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-CU-UP-ID */ -typedef INTEGER_t GNB_CU_UP_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID; -asn_struct_free_f GNB_CU_UP_ID_free; -asn_struct_print_f GNB_CU_UP_ID_print; -asn_constr_check_f GNB_CU_UP_ID_constraint; -ber_type_decoder_f GNB_CU_UP_ID_decode_ber; -der_type_encoder_f GNB_CU_UP_ID_encode_der; -xer_type_decoder_f GNB_CU_UP_ID_decode_xer; -xer_type_encoder_f GNB_CU_UP_ID_encode_xer; -oer_type_decoder_f GNB_CU_UP_ID_decode_oer; -oer_type_encoder_f GNB_CU_UP_ID_encode_oer; -per_type_decoder_f GNB_CU_UP_ID_decode_uper; -per_type_encoder_f GNB_CU_UP_ID_encode_uper; -per_type_decoder_f GNB_CU_UP_ID_decode_aper; -per_type_encoder_f GNB_CU_UP_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_CU_UP_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.c deleted file mode 100644 index b64d5b1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-CU-UP-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -GNB_CU_UP_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_GNB_CU_UP_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_GNB_CU_UP_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_CU_UP_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_GNB_CU_UP_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_GNB_CU_UP_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_GNB_CU_UP_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_CU_UP_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_Name = { - "GNB-CU-UP-Name", - "GNB-CU-UP-Name", - &asn_OP_PrintableString, - asn_DEF_GNB_CU_UP_Name_tags_1, - sizeof(asn_DEF_GNB_CU_UP_Name_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_Name_tags_1[0]), /* 1 */ - asn_DEF_GNB_CU_UP_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_CU_UP_Name_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_Name_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_CU_UP_Name_constr_1, &asn_PER_type_GNB_CU_UP_Name_constr_1, GNB_CU_UP_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.h deleted file mode 100644 index c1b9d7e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-CU-UP-Name.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_CU_UP_Name_H_ -#define _GNB_CU_UP_Name_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-CU-UP-Name */ -typedef PrintableString_t GNB_CU_UP_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_CU_UP_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_Name; -asn_struct_free_f GNB_CU_UP_Name_free; -asn_struct_print_f GNB_CU_UP_Name_print; -asn_constr_check_f GNB_CU_UP_Name_constraint; -ber_type_decoder_f GNB_CU_UP_Name_decode_ber; -der_type_encoder_f GNB_CU_UP_Name_encode_der; -xer_type_decoder_f GNB_CU_UP_Name_decode_xer; -xer_type_encoder_f GNB_CU_UP_Name_encode_xer; -oer_type_decoder_f GNB_CU_UP_Name_decode_oer; -oer_type_encoder_f GNB_CU_UP_Name_encode_oer; -per_type_decoder_f GNB_CU_UP_Name_decode_uper; -per_type_encoder_f GNB_CU_UP_Name_encode_uper; -per_type_decoder_f GNB_CU_UP_Name_decode_aper; -per_type_encoder_f GNB_CU_UP_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_CU_UP_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.c deleted file mode 100644 index 1296c02..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GNB-DU-ID.h" - -int -GNB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 68719476735)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using INTEGER, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_DU_ID_constr_1 CC_NOTUSED = { - { 8, 1 } /* (0..68719476735) */, - -1}; -asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_DU_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID = { - "GNB-DU-ID", - "GNB-DU-ID", - &asn_OP_INTEGER, - asn_DEF_GNB_DU_ID_tags_1, - sizeof(asn_DEF_GNB_DU_ID_tags_1) - /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ - asn_DEF_GNB_DU_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_DU_ID_tags_1) - /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_DU_ID_constr_1, &asn_PER_type_GNB_DU_ID_constr_1, GNB_DU_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.h deleted file mode 100644 index 0432111..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GNB_DU_ID_H_ -#define _GNB_DU_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "INTEGER.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-DU-ID */ -typedef INTEGER_t GNB_DU_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID; -asn_struct_free_f GNB_DU_ID_free; -asn_struct_print_f GNB_DU_ID_print; -asn_constr_check_f GNB_DU_ID_constraint; -ber_type_decoder_f GNB_DU_ID_decode_ber; -der_type_encoder_f GNB_DU_ID_encode_der; -xer_type_decoder_f GNB_DU_ID_decode_xer; -xer_type_encoder_f GNB_DU_ID_encode_xer; -oer_type_decoder_f GNB_DU_ID_decode_oer; -oer_type_encoder_f GNB_DU_ID_encode_oer; -per_type_decoder_f GNB_DU_ID_decode_uper; -per_type_encoder_f GNB_DU_ID_encode_uper; -per_type_decoder_f GNB_DU_ID_decode_aper; -per_type_encoder_f GNB_DU_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_DU_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.c deleted file mode 100644 index 8ac789d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-DU-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -GNB_DU_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_GNB_DU_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_GNB_DU_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_GNB_DU_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_GNB_DU_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_GNB_DU_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_GNB_DU_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_DU_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_DU_Name = { - "GNB-DU-Name", - "GNB-DU-Name", - &asn_OP_PrintableString, - asn_DEF_GNB_DU_Name_tags_1, - sizeof(asn_DEF_GNB_DU_Name_tags_1) - /sizeof(asn_DEF_GNB_DU_Name_tags_1[0]), /* 1 */ - asn_DEF_GNB_DU_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_DU_Name_tags_1) - /sizeof(asn_DEF_GNB_DU_Name_tags_1[0]), /* 1 */ - { &asn_OER_type_GNB_DU_Name_constr_1, &asn_PER_type_GNB_DU_Name_constr_1, GNB_DU_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.h deleted file mode 100644 index e4994e6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-DU-Name.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_DU_Name_H_ -#define _GNB_DU_Name_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-DU-Name */ -typedef PrintableString_t GNB_DU_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_DU_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_DU_Name; -asn_struct_free_f GNB_DU_Name_free; -asn_struct_print_f GNB_DU_Name_print; -asn_constr_check_f GNB_DU_Name_constraint; -ber_type_decoder_f GNB_DU_Name_decode_ber; -der_type_encoder_f GNB_DU_Name_encode_der; -xer_type_decoder_f GNB_DU_Name_decode_xer; -xer_type_encoder_f GNB_DU_Name_encode_xer; -oer_type_decoder_f GNB_DU_Name_decode_oer; -oer_type_encoder_f GNB_DU_Name_encode_oer; -per_type_decoder_f GNB_DU_Name_decode_uper; -per_type_encoder_f GNB_DU_Name_encode_uper; -per_type_decoder_f GNB_DU_Name_decode_aper; -per_type_encoder_f GNB_DU_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_DU_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-ID-Choice.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-ID-Choice.c deleted file mode 100644 index 274bcec..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-ID-Choice.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GNB-ID-Choice.h" - -static int -memb_gnb_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size >= 22 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_gnb_ID_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(22..32)) */}; -static asn_per_constraints_t asn_PER_memb_gnb_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GNB_ID_Choice, choice.gnb_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_gnb_ID_constr_2, &asn_PER_memb_gnb_ID_constr_2, memb_gnb_ID_constraint_1 }, - 0, 0, /* No default value */ - "gnb-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_Choice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gnb-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1 = { - sizeof(struct GNB_ID_Choice), - offsetof(struct GNB_ID_Choice, _asn_ctx), - offsetof(struct GNB_ID_Choice, present), - sizeof(((struct GNB_ID_Choice *)0)->present), - asn_MAP_GNB_ID_Choice_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice = { - "GNB-ID-Choice", - "GNB-ID-Choice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_GNB_ID_Choice_constr_1, &asn_PER_type_GNB_ID_Choice_constr_1, CHOICE_constraint }, - asn_MBR_GNB_ID_Choice_1, - 1, /* Elements count */ - &asn_SPC_GNB_ID_Choice_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-ID-Choice.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-ID-Choice.h deleted file mode 100644 index 58bc4a5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-ID-Choice.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GNB_ID_Choice_H_ -#define _GNB_ID_Choice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GNB_ID_Choice_PR { - GNB_ID_Choice_PR_NOTHING, /* No components present */ - GNB_ID_Choice_PR_gnb_ID - /* Extensions may appear below */ - -} GNB_ID_Choice_PR; - -/* GNB-ID-Choice */ -typedef struct GNB_ID_Choice { - GNB_ID_Choice_PR present; - union GNB_ID_Choice_u { - BIT_STRING_t gnb_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GNB_ID_Choice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice; -extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1; -extern asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[1]; -extern asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_ID_Choice_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.c deleted file mode 100644 index aeee9d8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GNB-Name.h" - -static asn_oer_constraints_t asn_OER_type_GNB_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_GNB_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_GNB_Name_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GNB_Name, choice.gNB_DU_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct GNB_Name, choice.gNB_CU_CP_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_CP_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-CP-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct GNB_Name, choice.gNB_CU_UP_Name), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-UP-Name" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GNB_Name_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-DU-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-CP-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-CU-UP-Name */ -}; -asn_CHOICE_specifics_t asn_SPC_GNB_Name_specs_1 = { - sizeof(struct GNB_Name), - offsetof(struct GNB_Name, _asn_ctx), - offsetof(struct GNB_Name, present), - sizeof(((struct GNB_Name *)0)->present), - asn_MAP_GNB_Name_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GNB_Name = { - "GNB-Name", - "GNB-Name", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_GNB_Name_constr_1, &asn_PER_type_GNB_Name_constr_1, CHOICE_constraint }, - asn_MBR_GNB_Name_1, - 3, /* Elements count */ - &asn_SPC_GNB_Name_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.h deleted file mode 100644 index 3c69172..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GNB-Name.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GNB_Name_H_ -#define _GNB_Name_H_ - - -#include - -/* Including external dependencies */ -#include "GNB-DU-Name.h" -#include "GNB-CU-CP-Name.h" -#include "GNB-CU-UP-Name.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GNB_Name_PR { - GNB_Name_PR_NOTHING, /* No components present */ - GNB_Name_PR_gNB_DU_Name, - GNB_Name_PR_gNB_CU_CP_Name, - GNB_Name_PR_gNB_CU_UP_Name - /* Extensions may appear below */ - -} GNB_Name_PR; - -/* GNB-Name */ -typedef struct GNB_Name { - GNB_Name_PR present; - union GNB_Name_u { - GNB_DU_Name_t gNB_DU_Name; - GNB_CU_CP_Name_t gNB_CU_CP_Name; - GNB_CU_UP_Name_t gNB_CU_UP_Name; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GNB_Name_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GNB_Name; -extern asn_CHOICE_specifics_t asn_SPC_GNB_Name_specs_1; -extern asn_TYPE_member_t asn_MBR_GNB_Name_1[3]; -extern asn_per_constraints_t asn_PER_type_GNB_Name_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ID.c deleted file mode 100644 index 65bc445..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ID.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalE2node-ID.h" - -#include "GlobalE2node-gNB-ID.h" -#include "GlobalE2node-en-gNB-ID.h" -#include "GlobalE2node-ng-eNB-ID.h" -#include "GlobalE2node-eNB-ID.h" -static asn_oer_constraints_t asn_OER_type_GlobalE2node_ID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_GlobalE2node_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_GlobalE2node_ID_1[] = { - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.gNB), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.en_gNB), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_en_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "en-gNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.ng_eNB), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_ng_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ng-eNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.eNB), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eNB" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */ -}; -static asn_CHOICE_specifics_t asn_SPC_GlobalE2node_ID_specs_1 = { - sizeof(struct GlobalE2node_ID), - offsetof(struct GlobalE2node_ID, _asn_ctx), - offsetof(struct GlobalE2node_ID, present), - sizeof(((struct GlobalE2node_ID *)0)->present), - asn_MAP_GlobalE2node_ID_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, - 4 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID = { - "GlobalE2node-ID", - "GlobalE2node-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_GlobalE2node_ID_constr_1, &asn_PER_type_GlobalE2node_ID_constr_1, CHOICE_constraint }, - asn_MBR_GlobalE2node_ID_1, - 4, /* Elements count */ - &asn_SPC_GlobalE2node_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ID.h deleted file mode 100644 index 9a2da69..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ID.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalE2node_ID_H_ -#define _GlobalE2node_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GlobalE2node_ID_PR { - GlobalE2node_ID_PR_NOTHING, /* No components present */ - GlobalE2node_ID_PR_gNB, - GlobalE2node_ID_PR_en_gNB, - GlobalE2node_ID_PR_ng_eNB, - GlobalE2node_ID_PR_eNB - /* Extensions may appear below */ - -} GlobalE2node_ID_PR; - -/* Forward declarations */ -struct GlobalE2node_gNB_ID; -struct GlobalE2node_en_gNB_ID; -struct GlobalE2node_ng_eNB_ID; -struct GlobalE2node_eNB_ID; - -/* GlobalE2node-ID */ -typedef struct GlobalE2node_ID { - GlobalE2node_ID_PR present; - union GlobalE2node_ID_u { - struct GlobalE2node_gNB_ID *gNB; - struct GlobalE2node_en_gNB_ID *en_gNB; - struct GlobalE2node_ng_eNB_ID *ng_eNB; - struct GlobalE2node_eNB_ID *eNB; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.c deleted file mode 100644 index e4833bc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalE2node-eNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_eNB_ID, global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1 = { - sizeof(struct GlobalE2node_eNB_ID), - offsetof(struct GlobalE2node_eNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_eNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID = { - "GlobalE2node-eNB-ID", - "GlobalE2node-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_eNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalE2node_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.h deleted file mode 100644 index 5f2afe6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-eNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalE2node_eNB_ID_H_ -#define _GlobalE2node_eNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalENB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalE2node-eNB-ID */ -typedef struct GlobalE2node_eNB_ID { - GlobalENB_ID_t global_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_eNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.c deleted file mode 100644 index 43dc3b1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalE2node-en-gNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_en_gNB_ID, global_en_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalenGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-en-gNB-ID" - }, - { ATF_POINTER, 2, offsetof(struct GlobalE2node_en_gNB_ID, en_gNB_CU_UP_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "en-gNB-CU-UP-ID" - }, - { ATF_POINTER, 1, offsetof(struct GlobalE2node_en_gNB_ID, en_gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "en-gNB-DU-ID" - }, -}; -static const int asn_MAP_GlobalE2node_en_gNB_ID_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_en_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-en-gNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB-CU-UP-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* en-gNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1 = { - sizeof(struct GlobalE2node_en_gNB_ID), - offsetof(struct GlobalE2node_en_gNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_GlobalE2node_en_gNB_ID_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID = { - "GlobalE2node-en-gNB-ID", - "GlobalE2node-en-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_en_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_en_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_en_gNB_ID_1, - 3, /* Elements count */ - &asn_SPC_GlobalE2node_en_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.h deleted file mode 100644 index 33d626d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-en-gNB-ID.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalE2node_en_gNB_ID_H_ -#define _GlobalE2node_en_gNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalenGNB-ID.h" -#include "GNB-CU-UP-ID.h" -#include "GNB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalE2node-en-gNB-ID */ -typedef struct GlobalE2node_en_gNB_ID { - GlobalenGNB_ID_t global_en_gNB_ID; - GNB_CU_UP_ID_t *en_gNB_CU_UP_ID; /* OPTIONAL */ - GNB_DU_ID_t *en_gNB_DU_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_en_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_en_gNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.c deleted file mode 100644 index b8a3de2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalE2node-gNB-ID.h" - -#include "GlobalenGNB-ID.h" -asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_gNB_ID, global_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalgNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-gNB-ID" - }, - { ATF_POINTER, 3, offsetof(struct GlobalE2node_gNB_ID, global_en_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalenGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-en-gNB-ID" - }, - { ATF_POINTER, 2, offsetof(struct GlobalE2node_gNB_ID, gNB_CU_UP_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-UP-ID" - }, - { ATF_POINTER, 1, offsetof(struct GlobalE2node_gNB_ID, gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-ID" - }, -}; -static const int asn_MAP_GlobalE2node_gNB_ID_oms_1[] = { 1, 2, 3 }; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* global-en-gNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UP-ID */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* gNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1 = { - sizeof(struct GlobalE2node_gNB_ID), - offsetof(struct GlobalE2node_gNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_gNB_ID_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_GlobalE2node_gNB_ID_oms_1, /* Optional members */ - 3, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID = { - "GlobalE2node-gNB-ID", - "GlobalE2node-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_gNB_ID_1, - 4, /* Elements count */ - &asn_SPC_GlobalE2node_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.h deleted file mode 100644 index fc8c33b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-gNB-ID.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalE2node_gNB_ID_H_ -#define _GlobalE2node_gNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalgNB-ID.h" -#include "GNB-CU-UP-ID.h" -#include "GNB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct GlobalenGNB_ID; - -/* GlobalE2node-gNB-ID */ -typedef struct GlobalE2node_gNB_ID { - GlobalgNB_ID_t global_gNB_ID; - struct GlobalenGNB_ID *global_en_gNB_ID; /* OPTIONAL */ - GNB_CU_UP_ID_t *gNB_CU_UP_ID; /* OPTIONAL */ - GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_gNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.c deleted file mode 100644 index 605fa18..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalE2node-ng-eNB-ID.h" - -#include "GlobalENB-ID.h" -asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_ng_eNB_ID, global_ng_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalngeNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-ng-eNB-ID" - }, - { ATF_POINTER, 2, offsetof(struct GlobalE2node_ng_eNB_ID, global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, - { ATF_POINTER, 1, offsetof(struct GlobalE2node_ng_eNB_ID, ngENB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NGENB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ngENB-DU-ID" - }, -}; -static const int asn_MAP_GlobalE2node_ng_eNB_ID_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-ng-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* global-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ngENB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 = { - sizeof(struct GlobalE2node_ng_eNB_ID), - offsetof(struct GlobalE2node_ng_eNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_GlobalE2node_ng_eNB_ID_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID = { - "GlobalE2node-ng-eNB-ID", - "GlobalE2node-ng-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_ng_eNB_ID_1, - 3, /* Elements count */ - &asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.h deleted file mode 100644 index a4475c5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalE2node-ng-eNB-ID.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalE2node_ng_eNB_ID_H_ -#define _GlobalE2node_ng_eNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalngeNB-ID.h" -#include "NGENB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct GlobalENB_ID; - -/* GlobalE2node-ng-eNB-ID */ -typedef struct GlobalE2node_ng_eNB_ID { - GlobalngeNB_ID_t global_ng_eNB_ID; - struct GlobalENB_ID *global_eNB_ID; /* OPTIONAL */ - NGENB_DU_ID_t *ngENB_DU_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_ng_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_ng_eNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalENB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalENB-ID.c deleted file mode 100644 index 01f06cf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalENB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalENB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_ENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = { - sizeof(struct GlobalENB_ID), - offsetof(struct GlobalENB_ID, _asn_ctx), - asn_MAP_GlobalENB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID = { - "GlobalENB-ID", - "GlobalENB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalENB_ID_tags_1, - sizeof(asn_DEF_GlobalENB_ID_tags_1) - /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalENB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalENB_ID_tags_1) - /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalENB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalENB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalENB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalENB-ID.h deleted file mode 100644 index dae3d51..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalENB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalENB_ID_H_ -#define _GlobalENB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "ENB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalENB-ID */ -typedef struct GlobalENB_ID { - PLMN_Identity_t pLMN_Identity; - ENB_ID_t eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalENB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalENB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.c deleted file mode 100644 index 5202400..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-ID.h" - -static asn_oer_constraints_t asn_OER_type_GlobalKPMnode_ID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_GlobalKPMnode_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_GlobalKPMnode_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.gNB), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.en_gNB), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_en_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "en-gNB" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.ng_eNB), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_ng_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ng-eNB" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.eNB), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalKPMnode_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eNB" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */ -}; -asn_CHOICE_specifics_t asn_SPC_GlobalKPMnode_ID_specs_1 = { - sizeof(struct GlobalKPMnode_ID), - offsetof(struct GlobalKPMnode_ID, _asn_ctx), - offsetof(struct GlobalKPMnode_ID, present), - sizeof(((struct GlobalKPMnode_ID *)0)->present), - asn_MAP_GlobalKPMnode_ID_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, - 4 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ID = { - "GlobalKPMnode-ID", - "GlobalKPMnode-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_GlobalKPMnode_ID_constr_1, &asn_PER_type_GlobalKPMnode_ID_constr_1, CHOICE_constraint }, - asn_MBR_GlobalKPMnode_ID_1, - 4, /* Elements count */ - &asn_SPC_GlobalKPMnode_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.h deleted file mode 100644 index a93e881..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ID.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_ID_H_ -#define _GlobalKPMnode_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalKPMnode-gNB-ID.h" -#include "GlobalKPMnode-en-gNB-ID.h" -#include "GlobalKPMnode-ng-eNB-ID.h" -#include "GlobalKPMnode-eNB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GlobalKPMnode_ID_PR { - GlobalKPMnode_ID_PR_NOTHING, /* No components present */ - GlobalKPMnode_ID_PR_gNB, - GlobalKPMnode_ID_PR_en_gNB, - GlobalKPMnode_ID_PR_ng_eNB, - GlobalKPMnode_ID_PR_eNB - /* Extensions may appear below */ - -} GlobalKPMnode_ID_PR; - -/* GlobalKPMnode-ID */ -typedef struct GlobalKPMnode_ID { - GlobalKPMnode_ID_PR present; - union GlobalKPMnode_ID_u { - GlobalKPMnode_gNB_ID_t gNB; - GlobalKPMnode_en_gNB_ID_t en_gNB; - GlobalKPMnode_ng_eNB_ID_t ng_eNB; - GlobalKPMnode_eNB_ID_t eNB; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ID; -extern asn_CHOICE_specifics_t asn_SPC_GlobalKPMnode_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_ID_1[4]; -extern asn_per_constraints_t asn_PER_type_GlobalKPMnode_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.c deleted file mode 100644 index e4039b9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-eNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalKPMnode_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_eNB_ID, global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_eNB_ID_specs_1 = { - sizeof(struct GlobalKPMnode_eNB_ID), - offsetof(struct GlobalKPMnode_eNB_ID, _asn_ctx), - asn_MAP_GlobalKPMnode_eNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_eNB_ID = { - "GlobalKPMnode-eNB-ID", - "GlobalKPMnode-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalKPMnode_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalKPMnode_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalKPMnode_eNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalKPMnode_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.h deleted file mode 100644 index 9941095..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-eNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_eNB_ID_H_ -#define _GlobalKPMnode_eNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalENB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalKPMnode-eNB-ID */ -typedef struct GlobalKPMnode_eNB_ID { - GlobalENB_ID_t global_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_eNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_eNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.c deleted file mode 100644 index 68e34d7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-en-gNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalKPMnode_en_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_en_gNB_ID, global_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalenGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-gNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_en_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-gNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_en_gNB_ID_specs_1 = { - sizeof(struct GlobalKPMnode_en_gNB_ID), - offsetof(struct GlobalKPMnode_en_gNB_ID, _asn_ctx), - asn_MAP_GlobalKPMnode_en_gNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_en_gNB_ID = { - "GlobalKPMnode-en-gNB-ID", - "GlobalKPMnode-en-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalKPMnode_en_gNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalKPMnode_en_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.h deleted file mode 100644 index 7994b62..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-en-gNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_en_gNB_ID_H_ -#define _GlobalKPMnode_en_gNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalenGNB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalKPMnode-en-gNB-ID */ -typedef struct GlobalKPMnode_en_gNB_ID { - GlobalenGNB_ID_t global_gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_en_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_en_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_en_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_en_gNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_en_gNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.c deleted file mode 100644 index 49e21ba..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-gNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalKPMnode_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_gNB_ID, global_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalgNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-gNB-ID" - }, - { ATF_POINTER, 2, offsetof(struct GlobalKPMnode_gNB_ID, gNB_CU_UP_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-UP-ID" - }, - { ATF_POINTER, 1, offsetof(struct GlobalKPMnode_gNB_ID, gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-ID" - }, -}; -static const int asn_MAP_GlobalKPMnode_gNB_ID_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-UP-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_gNB_ID_specs_1 = { - sizeof(struct GlobalKPMnode_gNB_ID), - offsetof(struct GlobalKPMnode_gNB_ID, _asn_ctx), - asn_MAP_GlobalKPMnode_gNB_ID_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_GlobalKPMnode_gNB_ID_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_gNB_ID = { - "GlobalKPMnode-gNB-ID", - "GlobalKPMnode-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalKPMnode_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalKPMnode_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalKPMnode_gNB_ID_1, - 3, /* Elements count */ - &asn_SPC_GlobalKPMnode_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.h deleted file mode 100644 index facef92..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-gNB-ID.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_gNB_ID_H_ -#define _GlobalKPMnode_gNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalgNB-ID.h" -#include "GNB-CU-UP-ID.h" -#include "GNB-DU-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalKPMnode-gNB-ID */ -typedef struct GlobalKPMnode_gNB_ID { - GlobalgNB_ID_t global_gNB_ID; - GNB_CU_UP_ID_t *gNB_CU_UP_ID; /* OPTIONAL */ - GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_gNB_ID_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_gNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.c deleted file mode 100644 index 299fb25..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "GlobalKPMnode-ng-eNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalKPMnode_ng_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ng_eNB_ID, global_ng_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalngeNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-ng-eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_ng_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-ng-eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_ng_eNB_ID_specs_1 = { - sizeof(struct GlobalKPMnode_ng_eNB_ID), - offsetof(struct GlobalKPMnode_ng_eNB_ID, _asn_ctx), - asn_MAP_GlobalKPMnode_ng_eNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ng_eNB_ID = { - "GlobalKPMnode-ng-eNB-ID", - "GlobalKPMnode-ng-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalKPMnode_ng_eNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalKPMnode_ng_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.h deleted file mode 100644 index 9ad8057..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalKPMnode-ng-eNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _GlobalKPMnode_ng_eNB_ID_H_ -#define _GlobalKPMnode_ng_eNB_ID_H_ - - -#include - -/* Including external dependencies */ -#include "GlobalngeNB-ID.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalKPMnode-ng-eNB-ID */ -typedef struct GlobalKPMnode_ng_eNB_ID { - GlobalngeNB_ID_t global_ng_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalKPMnode_ng_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ng_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_ng_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalKPMnode_ng_eNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalKPMnode_ng_eNB_ID_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.c deleted file mode 100644 index 9e810a9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalNG-RANNode-ID.h" - -#include "GlobalgNB-ID.h" -#include "GlobalngeNB-ID.h" -static asn_oer_constraints_t asn_OER_type_GlobalNG_RANNode_ID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_GlobalNG_RANNode_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_GlobalNG_RANNode_ID_1[] = { - { ATF_POINTER, 0, offsetof(struct GlobalNG_RANNode_ID, choice.gNB), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalgNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalNG_RANNode_ID, choice.ng_eNB), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalngeNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ng-eNB" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalNG_RANNode_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-eNB */ -}; -asn_CHOICE_specifics_t asn_SPC_GlobalNG_RANNode_ID_specs_1 = { - sizeof(struct GlobalNG_RANNode_ID), - offsetof(struct GlobalNG_RANNode_ID, _asn_ctx), - offsetof(struct GlobalNG_RANNode_ID, present), - sizeof(((struct GlobalNG_RANNode_ID *)0)->present), - asn_MAP_GlobalNG_RANNode_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalNG_RANNode_ID = { - "GlobalNG-RANNode-ID", - "GlobalNG-RANNode-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_GlobalNG_RANNode_ID_constr_1, &asn_PER_type_GlobalNG_RANNode_ID_constr_1, CHOICE_constraint }, - asn_MBR_GlobalNG_RANNode_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalNG_RANNode_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.h deleted file mode 100644 index 9759e9f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalNG-RANNode-ID.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalNG_RANNode_ID_H_ -#define _GlobalNG_RANNode_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GlobalNG_RANNode_ID_PR { - GlobalNG_RANNode_ID_PR_NOTHING, /* No components present */ - GlobalNG_RANNode_ID_PR_gNB, - GlobalNG_RANNode_ID_PR_ng_eNB - /* Extensions may appear below */ - -} GlobalNG_RANNode_ID_PR; - -/* Forward declarations */ -struct GlobalgNB_ID; -struct GlobalngeNB_ID; - -/* GlobalNG-RANNode-ID */ -typedef struct GlobalNG_RANNode_ID { - GlobalNG_RANNode_ID_PR present; - union GlobalNG_RANNode_ID_u { - struct GlobalgNB_ID *gNB; - struct GlobalngeNB_ID *ng_eNB; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalNG_RANNode_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalNG_RANNode_ID; -extern asn_CHOICE_specifics_t asn_SPC_GlobalNG_RANNode_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalNG_RANNode_ID_1[2]; -extern asn_per_constraints_t asn_PER_type_GlobalNG_RANNode_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalNG_RANNode_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalRIC-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalRIC-ID.c deleted file mode 100644 index b4c99cf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalRIC-ID.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalRIC-ID.h" - -static int -memb_ric_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_ric_ID_constr_3 CC_NOTUSED = { - { 0, 0 }, - 20 /* (SIZE(20..20)) */}; -static asn_per_constraints_t asn_PER_memb_ric_ID_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_GlobalRIC_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, ric_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_ric_ID_constr_3, &asn_PER_memb_ric_ID_constr_3, memb_ric_ID_constraint_1 }, - 0, 0, /* No default value */ - "ric-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalRIC_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalRIC_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-ID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_GlobalRIC_ID_specs_1 = { - sizeof(struct GlobalRIC_ID), - offsetof(struct GlobalRIC_ID, _asn_ctx), - asn_MAP_GlobalRIC_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID = { - "GlobalRIC-ID", - "GlobalRIC-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalRIC_ID_tags_1, - sizeof(asn_DEF_GlobalRIC_ID_tags_1) - /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalRIC_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalRIC_ID_tags_1) - /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalRIC_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalRIC_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalRIC-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalRIC-ID.h deleted file mode 100644 index 435e9a1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalRIC-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalRIC_ID_H_ -#define _GlobalRIC_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "BIT_STRING.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalRIC-ID */ -typedef struct GlobalRIC_ID { - PLMN_Identity_t pLMN_Identity; - BIT_STRING_t ric_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalRIC_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalRIC_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalenGNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalenGNB-ID.c deleted file mode 100644 index d86c807..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalenGNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalenGNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_ENGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalenGNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalenGNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1 = { - sizeof(struct GlobalenGNB_ID), - offsetof(struct GlobalenGNB_ID, _asn_ctx), - asn_MAP_GlobalenGNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID = { - "GlobalenGNB-ID", - "GlobalenGNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalenGNB_ID_tags_1, - sizeof(asn_DEF_GlobalenGNB_ID_tags_1) - /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalenGNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalenGNB_ID_tags_1) - /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalenGNB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalenGNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalenGNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalenGNB-ID.h deleted file mode 100644 index 9ed6e07..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalenGNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalenGNB_ID_H_ -#define _GlobalenGNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "ENGNB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalenGNB-ID */ -typedef struct GlobalenGNB_ID { - PLMN_Identity_t pLMN_Identity; - ENGNB_ID_t gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalenGNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalenGNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalgNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalgNB-ID.c deleted file mode 100644 index 1a31649..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalgNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalgNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, plmn_id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "plmn-id" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, gnb_id), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_GNB_ID_Choice, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gnb-id" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalgNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalgNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gnb-id */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1 = { - sizeof(struct GlobalgNB_ID), - offsetof(struct GlobalgNB_ID, _asn_ctx), - asn_MAP_GlobalgNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID = { - "GlobalgNB-ID", - "GlobalgNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalgNB_ID_tags_1, - sizeof(asn_DEF_GlobalgNB_ID_tags_1) - /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalgNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalgNB_ID_tags_1) - /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalgNB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalgNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalgNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalgNB-ID.h deleted file mode 100644 index 721f5a9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalgNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalgNB_ID_H_ -#define _GlobalgNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "GNB-ID-Choice.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalgNB-ID */ -typedef struct GlobalgNB_ID { - PLMN_Identity_t plmn_id; - GNB_ID_Choice_t gnb_id; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalgNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalgNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalngeNB-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalngeNB-ID.c deleted file mode 100644 index 5a4023a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalngeNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "GlobalngeNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, plmn_id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "plmn-id" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, enb_id), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_ENB_ID_Choice, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "enb-id" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalngeNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalngeNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* enb-id */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1 = { - sizeof(struct GlobalngeNB_ID), - offsetof(struct GlobalngeNB_ID, _asn_ctx), - asn_MAP_GlobalngeNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID = { - "GlobalngeNB-ID", - "GlobalngeNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalngeNB_ID_tags_1, - sizeof(asn_DEF_GlobalngeNB_ID_tags_1) - /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalngeNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalngeNB_ID_tags_1) - /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalngeNB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalngeNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalngeNB-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalngeNB-ID.h deleted file mode 100644 index 6858ec0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/GlobalngeNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _GlobalngeNB_ID_H_ -#define _GlobalngeNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "ENB-ID-Choice.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalngeNB-ID */ -typedef struct GlobalngeNB_ID { - PLMN_Identity_t plmn_id; - ENB_ID_Choice_t enb_id; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalngeNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalngeNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.c deleted file mode 100644 index 2a2f4d7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.c +++ /dev/null @@ -1,1735 +0,0 @@ -/*- - * Copyright (c) 2003-2014 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* Encoder and decoder of a primitive type */ -#include - -/* - * INTEGER basic type description. - */ -static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_INTEGER = { - INTEGER_free, - INTEGER_print, - INTEGER_compare, - ber_decode_primitive, - INTEGER_encode_der, - INTEGER_decode_xer, - INTEGER_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - INTEGER_decode_oer, /* OER decoder */ - INTEGER_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - INTEGER_decode_uper, /* Unaligned PER decoder */ - INTEGER_encode_uper, /* Unaligned PER encoder */ - INTEGER_decode_aper, /* Aligned PER decoder */ - INTEGER_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - INTEGER_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_INTEGER = { - "INTEGER", - "INTEGER", - &asn_OP_INTEGER, - asn_DEF_INTEGER_tags, - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - asn_DEF_INTEGER_tags, /* Same as above */ - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Encode INTEGER type using DER. - */ -asn_enc_rval_t -INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t rval; - INTEGER_t effective_integer; - - ASN_DEBUG("%s %s as INTEGER (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - /* - * Canonicalize integer in the buffer. - * (Remove too long sign extension, remove some first 0x00 bytes) - */ - if(st->buf) { - uint8_t *buf = st->buf; - uint8_t *end1 = buf + st->size - 1; - int shift; - - /* Compute the number of superfluous leading bytes */ - for(; buf < end1; buf++) { - /* - * If the contents octets of an integer value encoding - * consist of more than one octet, then the bits of the - * first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - switch(*buf) { - case 0x00: if((buf[1] & 0x80) == 0) - continue; - break; - case 0xff: if((buf[1] & 0x80)) - continue; - break; - } - break; - } - - /* Remove leading superfluous bytes from the integer */ - shift = buf - st->buf; - if(shift) { - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - unconst.c_buf = st->buf; - effective_integer.buf = unconst.nc_buf + shift; - effective_integer.size = st->size - shift; - - st = &effective_integer; - } - } - - rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); - if(rval.structure_ptr == &effective_integer) { - rval.structure_ptr = sptr; - } - return rval; -} - -static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( - const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop); - -/* - * INTEGER specific human-readable output. - */ -static ssize_t -INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; - uint8_t *buf = st->buf; - uint8_t *buf_end = st->buf + st->size; - intmax_t value; - ssize_t wrote = 0; - char *p; - int ret; - - if(specs && specs->field_unsigned) - ret = asn_INTEGER2umax(st, (uintmax_t *)&value); - else - ret = asn_INTEGER2imax(st, &value); - - /* Simple case: the integer size is small */ - if(ret == 0) { - const asn_INTEGER_enum_map_t *el; - el = (value >= 0 || !specs || !specs->field_unsigned) - ? INTEGER_map_value2enum(specs, value) : 0; - if(el) { - if(plainOrXER == 0) - return asn__format_to_callback(cb, app_key, - "%" ASN_PRIdMAX " (%s)", value, el->enum_name); - else - return asn__format_to_callback(cb, app_key, - "<%s/>", el->enum_name); - } else if(plainOrXER && specs && specs->strict_enumeration) { - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } else { - return asn__format_to_callback(cb, app_key, - (specs && specs->field_unsigned) - ? "%" ASN_PRIuMAX - : "%" ASN_PRIdMAX, - value); - } - } else if(plainOrXER && specs && specs->strict_enumeration) { - /* - * Here and earlier, we cannot encode the ENUMERATED values - * if there is no corresponding identifier. - */ - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } - - /* Output in the long xx:yy:zz... format */ - /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ - for(p = scratch; buf < buf_end; buf++) { - const char * const h2c = "0123456789ABCDEF"; - if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { - /* Flush buffer */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - wrote += p - scratch; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x3a; /* ":" */ - } - if(p != scratch) - p--; /* Remove the last ":" */ - - wrote += p - scratch; - return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; -} - -/* - * INTEGER specific human-readable output. - */ -int -INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - ssize_t ret; - - (void)ilevel; - - if(!st || !st->buf) - ret = cb("", 8, app_key); - else - ret = INTEGER__dump(td, st, cb, app_key, 0); - - return (ret < 0) ? -1 : 0; -} - -struct e2v_key { - const char *start; - const char *stop; - const asn_INTEGER_enum_map_t *vemap; - const unsigned int *evmap; -}; -static int -INTEGER__compar_enum2value(const void *kp, const void *am) { - const struct e2v_key *key = (const struct e2v_key *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - const char *ptr, *end, *name; - - /* Remap the element (sort by different criterion) */ - el = key->vemap + key->evmap[el - key->vemap]; - - /* Compare strings */ - for(ptr = key->start, end = key->stop, name = el->enum_name; - ptr < end; ptr++, name++) { - if(*ptr != *name || !*name) - return *(const unsigned char *)ptr - - *(const unsigned char *)name; - } - return name[0] ? -1 : 0; -} - -static const asn_INTEGER_enum_map_t * -INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop) { - const asn_INTEGER_enum_map_t *el_found; - int count = specs ? specs->map_count : 0; - struct e2v_key key; - const char *lp; - - if(!count) return NULL; - - /* Guaranteed: assert(lstart < lstop); */ - /* Figure out the tag name */ - for(lstart++, lp = lstart; lp < lstop; lp++) { - switch(*lp) { - case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ - case 0x2f: /* '/' */ case 0x3e: /* '>' */ - break; - default: - continue; - } - break; - } - if(lp == lstop) return NULL; /* No tag found */ - lstop = lp; - - key.start = lstart; - key.stop = lstop; - key.vemap = specs->value2enum; - key.evmap = specs->enum2value; - el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, - specs->value2enum, count, sizeof(specs->value2enum[0]), - INTEGER__compar_enum2value); - if(el_found) { - /* Remap enum2value into value2enum */ - el_found = key.vemap + key.evmap[el_found - key.vemap]; - } - return el_found; -} - -static int -INTEGER__compar_value2enum(const void *kp, const void *am) { - long a = *(const long *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - long b = el->nat_value; - if(a < b) return -1; - else if(a == b) return 0; - else return 1; -} - -const asn_INTEGER_enum_map_t * -INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { - int count = specs ? specs->map_count : 0; - if(!count) return 0; - return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, - count, sizeof(specs->value2enum[0]), - INTEGER__compar_value2enum); -} - -static int -INTEGER_st_prealloc(INTEGER_t *st, int min_size) { - void *p = MALLOC(min_size + 1); - if(p) { - void *b = st->buf; - st->size = 0; - st->buf = p; - FREEMEM(b); - return 0; - } else { - return -1; - } -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -static enum xer_pbd_rval -INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, - const void *chunk_buf, size_t chunk_size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - INTEGER_t *st = (INTEGER_t *)sptr; - intmax_t dec_value; - intmax_t hex_value = 0; - const char *lp; - const char *lstart = (const char *)chunk_buf; - const char *lstop = lstart + chunk_size; - enum { - ST_LEADSPACE, - ST_SKIPSPHEX, - ST_WAITDIGITS, - ST_DIGITS, - ST_DIGITS_TRAILSPACE, - ST_HEXDIGIT1, - ST_HEXDIGIT2, - ST_HEXDIGITS_TRAILSPACE, - ST_HEXCOLON, - ST_END_ENUM, - ST_UNEXPECTED - } state = ST_LEADSPACE; - const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ - const char *dec_value_end = 0; - - if(chunk_size) - ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", - (long)chunk_size, *lstart, lstop[-1]); - - if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) - return XPBD_SYSTEM_FAILURE; - - /* - * We may have received a tag here. It will be processed inline. - * Use strtoul()-like code and serialize the result. - */ - for(lp = lstart; lp < lstop; lp++) { - int lv = *lp; - switch(lv) { - case 0x09: case 0x0a: case 0x0d: case 0x20: - switch(state) { - case ST_LEADSPACE: - case ST_DIGITS_TRAILSPACE: - case ST_HEXDIGITS_TRAILSPACE: - case ST_SKIPSPHEX: - continue; - case ST_DIGITS: - dec_value_end = lp; - state = ST_DIGITS_TRAILSPACE; - continue; - case ST_HEXCOLON: - state = ST_HEXDIGITS_TRAILSPACE; - continue; - default: - break; - } - break; - case 0x2d: /* '-' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x2b: /* '+' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: - switch(state) { - case ST_DIGITS: continue; - case ST_SKIPSPHEX: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = (lv - 0x30) << 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += (lv - 0x30); - state = ST_HEXCOLON; - st->buf[st->size++] = (uint8_t)hex_value; - continue; - case ST_HEXCOLON: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - dec_value = 0; - dec_value_start = lp; - /* FALL THROUGH */ - case ST_WAITDIGITS: - state = ST_DIGITS; - continue; - default: - break; - } - break; - case 0x3c: /* '<', start of XML encoded enumeration */ - if(state == ST_LEADSPACE) { - const asn_INTEGER_enum_map_t *el; - el = INTEGER_map_enum2value( - (const asn_INTEGER_specifics_t *) - td->specifics, lstart, lstop); - if(el) { - ASN_DEBUG("Found \"%s\" => %ld", - el->enum_name, el->nat_value); - dec_value = el->nat_value; - state = ST_END_ENUM; - lp = lstop - 1; - continue; - } - ASN_DEBUG("Unknown identifier for INTEGER"); - } - return XPBD_BROKEN_ENCODING; - case 0x3a: /* ':' */ - if(state == ST_HEXCOLON) { - /* This colon is expected */ - state = ST_HEXDIGIT1; - continue; - } else if(state == ST_DIGITS) { - /* The colon here means that we have - * decoded the first two hexadecimal - * places as a decimal value. - * Switch decoding mode. */ - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - } else { - ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); - break; - } - /* [A-Fa-f] */ - case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: - case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: - switch(state) { - case ST_SKIPSPHEX: - case ST_LEADSPACE: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - hex_value <<= 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - st->buf[st->size++] = (uint8_t)hex_value; - state = ST_HEXCOLON; - continue; - case ST_DIGITS: - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - default: - break; - } - break; - } - - /* Found extra non-numeric stuff */ - ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", - lv, (long)(lp - lstart)); - state = ST_UNEXPECTED; - break; - } - - switch(state) { - case ST_END_ENUM: - /* Got a complete and valid enumeration encoded as a tag. */ - break; - case ST_DIGITS: - dec_value_end = lstop; - /* FALL THROUGH */ - case ST_DIGITS_TRAILSPACE: - /* The last symbol encountered was a digit. */ - switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { - case ASN_STRTOX_OK: - if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { - break; - } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { - break; - } else { - /* - * We model INTEGER on long for XER, - * to avoid rewriting all the tests at once. - */ - ASN_DEBUG("INTEGER exceeds long range"); - } - /* Fall through */ - case ASN_STRTOX_ERROR_RANGE: - ASN_DEBUG("INTEGER decode %s hit range limit", td->name); - return XPBD_DECODER_LIMIT; - case ASN_STRTOX_ERROR_INVAL: - case ASN_STRTOX_EXPECT_MORE: - case ASN_STRTOX_EXTRA_DATA: - return XPBD_BROKEN_ENCODING; - } - break; - case ST_HEXCOLON: - case ST_HEXDIGITS_TRAILSPACE: - st->buf[st->size] = 0; /* Just in case termination */ - return XPBD_BODY_CONSUMED; - case ST_HEXDIGIT1: - case ST_HEXDIGIT2: - case ST_SKIPSPHEX: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - /* Content not found */ - return XPBD_NOT_BODY_IGNORE; - case ST_WAITDIGITS: - case ST_UNEXPECTED: - ASN_DEBUG("INTEGER: No useful digits (state %d)", state); - return XPBD_BROKEN_ENCODING; /* No digits */ - } - - /* - * Convert the result of parsing of enumeration or a straight - * decimal value into a BER representation. - */ - if(asn_imax2INTEGER(st, dec_value)) { - ASN_DEBUG("INTEGER decode %s conversion failed", td->name); - return XPBD_SYSTEM_FAILURE; - } - - return XPBD_BODY_CONSUMED; -} - -asn_dec_rval_t -INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return xer_decode_primitive(opt_codec_ctx, td, - sptr, sizeof(INTEGER_t), opt_mname, - buf_ptr, size, INTEGER__xer_body_decode); -} - -asn_enc_rval_t -INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t er = {0,0,0}; - - (void)ilevel; - (void)flags; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = INTEGER__dump(td, st, cb, app_key, 1); - if(er.encoded < 0) ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691-2008/11, #13.2.2, constrained whole number */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #11.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) - ASN__DECODE_FAILED; - - if(specs && specs->field_unsigned) { - unsigned long uvalue = 0; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - uvalue += ct->lower_bound; - if(asn_ulong2INTEGER(st, uvalue)) - ASN__DECODE_FAILED; - } else { - unsigned long uvalue = 0; - long svalue; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - if(per_long_range_unrebase(uvalue, ct->lower_bound, - ct->upper_bound, &svalue) - || asn_long2INTEGER(st, svalue)) { - ASN__DECODE_FAILED; - } - } - return rval; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len = 0; - void *p = NULL; - int ret = 0; - - /* Get the PER length */ - len = uper_get_length(pd, -1, 0, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value = 0; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_imax2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - - /* X.691-11/2008, #13.2.2, test if constrained whole number */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - /* #11.5.6 -> #11.3 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - if(specs && specs->field_unsigned) { - if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) - || ((unsigned long)value < (unsigned long)ct->lower_bound)) - || ((unsigned long)value > (unsigned long)ct->upper_bound) - ) { - ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", - value, ct->lower_bound, ct->upper_bound); - ASN__ENCODE_FAILED; - } - v = (unsigned long)value - (unsigned long)ct->lower_bound; - } else { - if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { - ASN__ENCODE_FAILED; - } - } - if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - int need_eom = 0; - ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; - } - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #10.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if (ct->range_bits > 16) { - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - int length = 0, i; - long value = 0; - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, - max_range_bytes, i); - - if ((length = per_get_few_bits(pd, i)) < 0) - ASN__DECODE_FAILED; - - /* X.691 #12.2.6 length determinant + lb (1) */ - length += 1; - ASN_DEBUG("Got length %d", length); - if (aper_get_align(pd) != 0) - ASN__DECODE_FAILED; - while (length--) { - int buf = per_get_few_bits(pd, 8); - if (buf < 0) - ASN__DECODE_FAILED; - value += (((long)buf) << (8 * length)); - } - - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_uint642INTEGER(st, (unsigned long)value) - : asn_int642INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } else { - long value = 0; - if (ct->range_bits < 8) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else if (ct->range_bits == 8) { - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else { - /* Align */ - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, 16); - if(value < 0) ASN__DECODE_STARVED; - } - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_ulong2INTEGER(st, value) - : asn_long2INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } - return rval; - } else { - ASN__DECODE_FAILED; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len; - void *p; - int ret; - - /* Get the PER length */ - len = aper_get_length(pd, -1, -1, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_long2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - - /* #10.5.6 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - - v = value - ct->lower_bound; - - /* #12 <= 8 -> alignment ? */ - if (ct->range_bits < 8) { - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits == 8) { - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits <= 16) { - /* Consume the bytes to align on octet */ - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x0000 | v, - 16)) - ASN__ENCODE_FAILED; - } else { - /* TODO: extend to >64 bits */ - int64_t v64 = v; - int i, j; - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - - for (j = sizeof(int64_t) -1; j != 0; j--) { - int64_t val; - val = v64 >> (j * 8); - if (val != 0) - break; - } - - /* Putting length in the minimum number of bits ex: 5 = 3bits */ - if (per_put_few_bits(po, j, i)) - ASN__ENCODE_FAILED; - - /* Consume the bits to align on octet */ - if (aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - /* Put the value */ - for (i = 0; i <= j; i++) { - if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) - ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - ssize_t mayEncode = aper_put_length(po, -1, end - buf); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - } - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -static intmax_t -asn__integer_convert(const uint8_t *b, const uint8_t *end) { - uintmax_t value; - - /* Perform the sign initialization */ - /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ - if((*b >> 7)) { - value = (uintmax_t)(-1); - } else { - value = 0; - } - - /* Conversion engine */ - for(; b < end; b++) { - value = (value << 8) | *b; - } - - return value; -} - -int -asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { - uint8_t *b, *end; - size_t size; - - /* Sanity checking */ - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - /* Cache the begin/end of the buffer */ - b = iptr->buf; /* Start of the INTEGER buffer */ - size = iptr->size; - end = b + size; /* Where to stop */ - - if(size > sizeof(intmax_t)) { - uint8_t *end1 = end - 1; - /* - * Slightly more advanced processing, - * able to process INTEGERs with >sizeof(intmax_t) bytes - * when the actual value is small, e.g. for intmax_t == int32_t - * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) - */ - /* Skip out the insignificant leading bytes */ - for(; b < end1; b++) { - switch(*b) { - case 0x00: if((b[1] & 0x80) == 0) continue; break; - case 0xff: if((b[1] & 0x80) != 0) continue; break; - } - break; - } - - size = end - b; - if(size > sizeof(intmax_t)) { - /* Still cannot fit the sizeof(intmax_t) */ - errno = ERANGE; - return -1; - } - } - - /* Shortcut processing of a corner case */ - if(end == b) { - *lptr = 0; - return 0; - } - - *lptr = asn__integer_convert(b, end); - return 0; -} - -/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ -int -asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { - uint8_t *b, *end; - uintmax_t value; - size_t size; - - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - b = iptr->buf; - size = iptr->size; - end = b + size; - - /* If all extra leading bytes are zeroes, ignore them */ - for(; size > sizeof(value); b++, size--) { - if(*b) { - /* Value won't fit into uintmax_t */ - errno = ERANGE; - return -1; - } - } - - /* Conversion engine */ - for(value = 0; b < end; b++) - value = (value << 8) | *b; - - *lptr = value; - return 0; -} - -int -asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= ((~(uintmax_t)0) >> 1)) { - return asn_imax2INTEGER(st, value); - } - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ - for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)(long *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -int -asn_INTEGER2long(const INTEGER_t *iptr, long *l) { - intmax_t v; - if(asn_INTEGER2imax(iptr, &v) == 0) { - if(v < LONG_MIN || v > LONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { - uintmax_t v; - if(asn_INTEGER2umax(iptr, &v) == 0) { - if(v > ULONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_long2INTEGER(INTEGER_t *st, long value) { - return asn_imax2INTEGER(st, value); -} - -int -asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { - return asn_imax2INTEGER(st, value); -} - - -int -asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= INT64_MAX) - return asn_int642INTEGER(st, value); - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; - for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_int642INTEGER(INTEGER_t *st, int64_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtol/strtoimax(3). - */ -enum asn_strtox_result_e -asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { - int sign = 1; - intmax_t value; - -#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) - const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; - intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; -#undef ASN1_INTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - last_digit_max++; - sign = -1; - /* FALL THROUGH */ - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - if(sign > 0) { - value = value * 10 + d; - } else { - sign = 1; - value = -value * 10 - d; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *intp = sign * value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *intp = sign * value; - return ASN_STRTOX_OK; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtoul/strtoumax(3). - */ -enum asn_strtox_result_e -asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { - uintmax_t value; - -#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) - const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; - uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; -#undef ASN1_UINTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - return ASN_STRTOX_ERROR_INVAL; - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - unsigned int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - value = value * 10 + d; - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *uintp = value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *uintp = value; - return ASN_STRTOX_OK; -} - -enum asn_strtox_result_e -asn_strtol_lim(const char *str, const char **end, long *lp) { - intmax_t value; - switch(asn_strtoimax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -enum asn_strtox_result_e -asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { - uintmax_t value; - switch(asn_strtoumax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -int -INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const INTEGER_t *a = aptr; - const INTEGER_t *b = bptr; - - (void)td; - - if(a && b) { - if(a->size && b->size) { - int sign_a = (a->buf[0] & 0x80) ? -1 : 1; - int sign_b = (b->buf[0] & 0x80) ? -1 : 1; - - if(sign_a < sign_b) return -1; - if(sign_a > sign_b) return 1; - - /* The shortest integer wins, unless comparing negatives */ - if(a->size < b->size) { - return -1 * sign_a; - } else if(a->size > b->size) { - return 1 * sign_b; - } - - return sign_a * memcmp(a->buf, b->buf, a->size); - } else if(a->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (1) * sign; - } else if(b->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (-1) * sign; - } else { - return 0; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } - -} - -asn_random_fill_result_t -INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - INTEGER_t *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (INTEGER_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - if(asn_imax2INTEGER(st, value)) { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return result_failed; - } else { - *sptr = st; - result_ok.length = st->size; - return result_ok; - } -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.h deleted file mode 100644 index f776c07..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER.h +++ /dev/null @@ -1,108 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER_oer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER_oer.c deleted file mode 100644 index 110689b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/INTEGER_oer.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -asn_dec_rval_t -INTEGER_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = {RC_OK, 0}; - INTEGER_t *st = (INTEGER_t *)*sptr; - struct asn_oer_constraint_number_s ct = {0, 0}; - size_t req_bytes; - - (void)opt_codec_ctx; - (void)specs; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - - if(!constraints) constraints = td->encoding_constraints.oer_constraints; - if(constraints) ct = constraints->value; - - if(ct.width) { - req_bytes = ct.width; - } else { - /* No lower bound and no upper bound, effectively */ - - ssize_t consumed = oer_fetch_length(ptr, size, &req_bytes); - if(consumed == 0) { - ASN__DECODE_STARVED; - } else if(consumed == -1) { - ASN__DECODE_FAILED; - } - rval.consumed += consumed; - ptr = (const char *)ptr + consumed; - size -= consumed; - } - - if(req_bytes > size) { - ASN__DECODE_STARVED; - } - - if(ct.positive) { - /* X.969 08/2015 10.2(a) */ - unsigned msb; /* Most significant bit */ - size_t useful_size; - - /* Check most significant bit */ - msb = *(const uint8_t *)ptr >> 7; /* yields 0 or 1 */ - useful_size = msb + req_bytes; - st->buf = (uint8_t *)MALLOC(useful_size + 1); - if(!st->buf) { - ASN__DECODE_FAILED; - } - - /* - * Record a large unsigned in a way not to confuse it - * with signed value. - */ - st->buf[0] = '\0'; - memcpy(st->buf + msb, ptr, req_bytes); - st->buf[useful_size] = '\0'; /* Just in case, 0-terminate */ - st->size = useful_size; - - rval.consumed += req_bytes; - return rval; - } else { - /* X.969 08/2015 10.2(b) */ - st->buf = (uint8_t *)MALLOC(req_bytes + 1); - if(!st->buf) { - ASN__DECODE_FAILED; - } - - memcpy(st->buf, ptr, req_bytes); - st->buf[req_bytes] = '\0'; /* Just in case, 0-terminate */ - st->size = req_bytes; - - rval.consumed += req_bytes; - return rval; - } -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -INTEGER_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = sptr; - asn_enc_rval_t er = {0,0,0}; - struct asn_oer_constraint_number_s ct = {0, 0}; - const uint8_t *buf; - const uint8_t *end; - size_t useful_bytes; - size_t req_bytes = 0; - int sign = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.oer_constraints; - if(constraints) ct = constraints->value; - - er.encoded = 0; - - buf = st->buf; - end = buf + st->size; - - sign = (buf && buf < end) ? buf[0] & 0x80 : 0; - - /* Ignore 9 leading zeroes or ones */ - if(ct.positive) { - if(sign) { - /* The value given is a signed value. Can't proceed. */ - ASN__ENCODE_FAILED; - } - /* Remove leading zeros. */ - for(; buf + 1 < end; buf++) { - if(buf[0] != 0x0) break; - } - } else { - for(; buf + 1 < end; buf++) { - if(buf[0] == 0x0 && (buf[1] & 0x80) == 0) { - continue; - } else if(buf[0] == 0xff && (buf[1] & 0x80) != 0) { - continue; - } - break; - } - } - - useful_bytes = end - buf; - if(ct.width) { - req_bytes = ct.width; - } else { - ssize_t r = oer_serialize_length(useful_bytes, cb, app_key); - if(r < 0) { - ASN__ENCODE_FAILED; - } - er.encoded += r; - req_bytes = useful_bytes; - } - - if(req_bytes < useful_bytes) { - ASN__ENCODE_FAILED; - } - - er.encoded += req_bytes; - - for(; req_bytes > useful_bytes; req_bytes--) { - if(cb(sign?"\xff":"\0", 1, app_key) < 0) { - ASN__ENCODE_FAILED; - } - } - - if(cb(buf, useful_bytes, app_key) < 0) { - ASN__ENCODE_FAILED; - } - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/InitiatingMessage.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/InitiatingMessage.c deleted file mode 100644 index d29e2a2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/InitiatingMessage.c +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "InitiatingMessage.h" - -static const long asn_VAL_1_id_RICsubscription = 8; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_2_id_RICsubscriptionDelete = 9; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_3_id_RICserviceUpdate = 7; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_4_id_RICcontrol = 4; -static const long asn_VAL_4_reject = 0; -static const long asn_VAL_5_id_E2setup = 1; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_6_id_E2nodeConfigurationUpdate = 10; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_7_id_E2connectionUpdate = 11; -static const long asn_VAL_7_reject = 0; -static const long asn_VAL_8_id_Reset = 3; -static const long asn_VAL_8_reject = 0; -static const long asn_VAL_9_id_RICindication = 5; -static const long asn_VAL_9_ignore = 1; -static const long asn_VAL_10_id_RICserviceQuery = 6; -static const long asn_VAL_10_ignore = 1; -static const long asn_VAL_11_id_ErrorIndication = 2; -static const long asn_VAL_11_ignore = 1; -static const long asn_VAL_12_id_RICsubscriptionDeleteRequired = 12; -static const long asn_VAL_12_ignore = 1; -static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2nodeConfigurationUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_E2nodeConfigurationUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2connectionUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_E2connectionUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_Reset }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_RICindication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_RICserviceQuery }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ErrorIndication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequired }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_RICsubscriptionDeleteRequired }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore } -}; -static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { - { 12, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } -}; -static int -memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_InitiatingMessage_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 4; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_InitiatingMessage_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 0; /* &InitiatingMessage */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_oer_constraints_t asn_OER_memb_procedureCode_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceUpdate), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdate, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceUpdate" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICcontrolRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2setupRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2setupRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2nodeConfigurationUpdate), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdate, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeConfigurationUpdate" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2connectionUpdate), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdate" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResetRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ResetRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICindication), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICindication, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindication" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceQuery), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceQuery, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceQuery" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ErrorIndication), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ErrorIndication, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ErrorIndication" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequired), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequired, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteRequired" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 11 }, /* RICsubscriptionRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 10 }, /* RICsubscriptionDeleteRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 9 }, /* RICserviceUpdate */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 8 }, /* RICcontrolRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 7 }, /* E2setupRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 6 }, /* E2nodeConfigurationUpdate */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 5 }, /* E2connectionUpdate */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 4 }, /* ResetRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 3 }, /* RICindication */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 2 }, /* RICserviceQuery */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 1 }, /* ErrorIndication */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -11, 0 } /* RICsubscriptionDeleteRequired */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct InitiatingMessage__value), - offsetof(struct InitiatingMessage__value, _asn_ctx), - offsetof(struct InitiatingMessage__value, present), - sizeof(((struct InitiatingMessage__value *)0)->present), - asn_MAP_value_tag2el_4, - 12, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 12, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { &asn_OER_memb_procedureCode_constr_2, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_InitiatingMessage_criticality_type, - { &asn_OER_memb_criticality_constr_3, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_InitiatingMessage_value_type, - { &asn_OER_memb_value_constr_4, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = { - sizeof(struct InitiatingMessage), - offsetof(struct InitiatingMessage, _asn_ctx), - asn_MAP_InitiatingMessage_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = { - "InitiatingMessage", - "InitiatingMessage", - &asn_OP_SEQUENCE, - asn_DEF_InitiatingMessage_tags_1, - sizeof(asn_DEF_InitiatingMessage_tags_1) - /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ - asn_DEF_InitiatingMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_InitiatingMessage_tags_1) - /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_InitiatingMessage_1, - 3, /* Elements count */ - &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/InitiatingMessage.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/InitiatingMessage.h deleted file mode 100644 index d474edc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/InitiatingMessage.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _InitiatingMessage_H_ -#define _InitiatingMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICsubscriptionRequest.h" -#include "RICsubscriptionResponse.h" -#include "RICsubscriptionFailure.h" -#include "RICsubscriptionDeleteRequest.h" -#include "RICsubscriptionDeleteResponse.h" -#include "RICsubscriptionDeleteFailure.h" -#include "RICserviceUpdate.h" -#include "RICserviceUpdateAcknowledge.h" -#include "RICserviceUpdateFailure.h" -#include "RICcontrolRequest.h" -#include "RICcontrolAcknowledge.h" -#include "RICcontrolFailure.h" -#include "E2setupRequest.h" -#include "E2setupResponse.h" -#include "E2setupFailure.h" -#include "E2nodeConfigurationUpdate.h" -#include "E2nodeConfigurationUpdateAcknowledge.h" -#include "E2nodeConfigurationUpdateFailure.h" -#include "E2connectionUpdate.h" -#include "E2connectionUpdateAcknowledge.h" -#include "E2connectionUpdateFailure.h" -#include "ResetRequest.h" -#include "ResetResponse.h" -#include "RICindication.h" -#include "RICserviceQuery.h" -#include "ErrorIndication.h" -#include "RICsubscriptionDeleteRequired.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum InitiatingMessage__value_PR { - InitiatingMessage__value_PR_NOTHING, /* No components present */ - InitiatingMessage__value_PR_RICsubscriptionRequest, - InitiatingMessage__value_PR_RICsubscriptionDeleteRequest, - InitiatingMessage__value_PR_RICserviceUpdate, - InitiatingMessage__value_PR_RICcontrolRequest, - InitiatingMessage__value_PR_E2setupRequest, - InitiatingMessage__value_PR_E2nodeConfigurationUpdate, - InitiatingMessage__value_PR_E2connectionUpdate, - InitiatingMessage__value_PR_ResetRequest, - InitiatingMessage__value_PR_RICindication, - InitiatingMessage__value_PR_RICserviceQuery, - InitiatingMessage__value_PR_ErrorIndication, - InitiatingMessage__value_PR_RICsubscriptionDeleteRequired -} InitiatingMessage__value_PR; - -/* InitiatingMessage */ -typedef struct InitiatingMessage { - ProcedureCode_t procedureCode; - Criticality_t criticality; - struct InitiatingMessage__value { - InitiatingMessage__value_PR present; - union InitiatingMessage__value_u { - RICsubscriptionRequest_t RICsubscriptionRequest; - RICsubscriptionDeleteRequest_t RICsubscriptionDeleteRequest; - RICserviceUpdate_t RICserviceUpdate; - RICcontrolRequest_t RICcontrolRequest; - E2setupRequest_t E2setupRequest; - E2nodeConfigurationUpdate_t E2nodeConfigurationUpdate; - E2connectionUpdate_t E2connectionUpdate; - ResetRequest_t ResetRequest; - RICindication_t RICindication; - RICserviceQuery_t RICserviceQuery; - ErrorIndication_t ErrorIndication; - RICsubscriptionDeleteRequired_t RICsubscriptionDeleteRequired; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} InitiatingMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage; -extern asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1; -extern asn_TYPE_member_t asn_MBR_InitiatingMessage_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _InitiatingMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.c deleted file mode 100644 index 76890a7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "MMEname.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -MMEname_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_MMEname_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_MMEname_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_MMEname_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_MMEname_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_MMEname_1_v2c, /* Value to PER code map */ - asn_PER_MAP_MMEname_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_MMEname_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_MMEname = { - "MMEname", - "MMEname", - &asn_OP_PrintableString, - asn_DEF_MMEname_tags_1, - sizeof(asn_DEF_MMEname_tags_1) - /sizeof(asn_DEF_MMEname_tags_1[0]), /* 1 */ - asn_DEF_MMEname_tags_1, /* Same as above */ - sizeof(asn_DEF_MMEname_tags_1) - /sizeof(asn_DEF_MMEname_tags_1[0]), /* 1 */ - { &asn_OER_type_MMEname_constr_1, &asn_PER_type_MMEname_constr_1, MMEname_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.h deleted file mode 100644 index 82b1fdc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/MMEname.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _MMEname_H_ -#define _MMEname_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* MMEname */ -typedef PrintableString_t MMEname_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_MMEname_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_MMEname; -asn_struct_free_f MMEname_free; -asn_struct_print_f MMEname_print; -asn_constr_check_f MMEname_constraint; -ber_type_decoder_f MMEname_decode_ber; -der_type_encoder_f MMEname_encode_der; -xer_type_decoder_f MMEname_decode_xer; -xer_type_encoder_f MMEname_encode_xer; -oer_type_decoder_f MMEname_decode_oer; -oer_type_encoder_f MMEname_encode_oer; -per_type_decoder_f MMEname_decode_uper; -per_type_encoder_f MMEname_encode_uper; -per_type_decoder_f MMEname_decode_aper; -per_type_encoder_f MMEname_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _MMEname_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Makefile.am.asn1convert b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Makefile.am.asn1convert deleted file mode 100644 index 62c2707..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Makefile.am.asn1convert +++ /dev/null @@ -1,14 +0,0 @@ -include ./Makefile.am.libasncodec - -bin_PROGRAMS += asn1convert -asn1convert_CFLAGS = $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION -asn1convert_CPPFLAGS = -I$(top_srcdir)/./ -asn1convert_LDADD = libasncodec.la -asn1convert_SOURCES = \ - ./converter-example.c\ - ./pdu_collection.c -regen: regenerate-from-asn1-source - -regenerate-from-asn1-source: - asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -D . /root/e2ap-v01.00.00.asn - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.c deleted file mode 100644 index f82c8b0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "NGENB-DU-ID.h" - -int -NGENB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 68719476735)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using INTEGER, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_NGENB_DU_ID_constr_1 CC_NOTUSED = { - { 8, 1 } /* (0..68719476735) */, - -1}; -asn_per_constraints_t asn_PER_type_NGENB_DU_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_NGENB_DU_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_NGENB_DU_ID = { - "NGENB-DU-ID", - "NGENB-DU-ID", - &asn_OP_INTEGER, - asn_DEF_NGENB_DU_ID_tags_1, - sizeof(asn_DEF_NGENB_DU_ID_tags_1) - /sizeof(asn_DEF_NGENB_DU_ID_tags_1[0]), /* 1 */ - asn_DEF_NGENB_DU_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_NGENB_DU_ID_tags_1) - /sizeof(asn_DEF_NGENB_DU_ID_tags_1[0]), /* 1 */ - { &asn_OER_type_NGENB_DU_ID_constr_1, &asn_PER_type_NGENB_DU_ID_constr_1, NGENB_DU_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.h deleted file mode 100644 index 9a491db..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NGENB-DU-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _NGENB_DU_ID_H_ -#define _NGENB_DU_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "INTEGER.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* NGENB-DU-ID */ -typedef INTEGER_t NGENB_DU_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_NGENB_DU_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_NGENB_DU_ID; -asn_struct_free_f NGENB_DU_ID_free; -asn_struct_print_f NGENB_DU_ID_print; -asn_constr_check_f NGENB_DU_ID_constraint; -ber_type_decoder_f NGENB_DU_ID_decode_ber; -der_type_encoder_f NGENB_DU_ID_encode_der; -xer_type_decoder_f NGENB_DU_ID_decode_xer; -xer_type_encoder_f NGENB_DU_ID_encode_xer; -oer_type_decoder_f NGENB_DU_ID_decode_oer; -oer_type_encoder_f NGENB_DU_ID_encode_oer; -per_type_decoder_f NGENB_DU_ID_decode_uper; -per_type_encoder_f NGENB_DU_ID_encode_uper; -per_type_decoder_f NGENB_DU_ID_decode_aper; -per_type_encoder_f NGENB_DU_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _NGENB_DU_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.c deleted file mode 100644 index 1162fd8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "NI-Type.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_NI_Type_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_NI_Type_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_NI_Type_value2enum_1[] = { - { 0, 4, "x2-u" }, - { 1, 4, "xn-u" }, - { 2, 4, "f1-u" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_NI_Type_enum2value_1[] = { - 2, /* f1-u(2) */ - 0, /* x2-u(0) */ - 1 /* xn-u(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_NI_Type_specs_1 = { - asn_MAP_NI_Type_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_NI_Type_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_NI_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_NI_Type = { - "NI-Type", - "NI-Type", - &asn_OP_NativeEnumerated, - asn_DEF_NI_Type_tags_1, - sizeof(asn_DEF_NI_Type_tags_1) - /sizeof(asn_DEF_NI_Type_tags_1[0]), /* 1 */ - asn_DEF_NI_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_NI_Type_tags_1) - /sizeof(asn_DEF_NI_Type_tags_1[0]), /* 1 */ - { &asn_OER_type_NI_Type_constr_1, &asn_PER_type_NI_Type_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_NI_Type_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.h deleted file mode 100644 index c696a44..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NI-Type.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _NI_Type_H_ -#define _NI_Type_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum NI_Type { - NI_Type_x2_u = 0, - NI_Type_xn_u = 1, - NI_Type_f1_u = 2 - /* - * Enumeration is extensible - */ -} e_NI_Type; - -/* NI-Type */ -typedef long NI_Type_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_NI_Type_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_NI_Type; -extern const asn_INTEGER_specifics_t asn_SPC_NI_Type_specs_1; -asn_struct_free_f NI_Type_free; -asn_struct_print_f NI_Type_print; -asn_constr_check_f NI_Type_constraint; -ber_type_decoder_f NI_Type_decode_ber; -der_type_encoder_f NI_Type_encode_der; -xer_type_decoder_f NI_Type_decode_xer; -xer_type_encoder_f NI_Type_encode_xer; -oer_type_decoder_f NI_Type_decode_oer; -oer_type_encoder_f NI_Type_encode_oer; -per_type_decoder_f NI_Type_decode_uper; -per_type_encoder_f NI_Type_encode_uper; -per_type_decoder_f NI_Type_decode_aper; -per_type_encoder_f NI_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _NI_Type_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.c deleted file mode 100644 index 94d8d4b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "NRCGI.h" - -asn_TYPE_member_t asn_MBR_NRCGI_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct NRCGI, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct NRCGI, nRCellIdentity), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NRCellIdentity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "nRCellIdentity" - }, -}; -static const ber_tlv_tag_t asn_DEF_NRCGI_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_NRCGI_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nRCellIdentity */ -}; -asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1 = { - sizeof(struct NRCGI), - offsetof(struct NRCGI, _asn_ctx), - asn_MAP_NRCGI_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_NRCGI = { - "NRCGI", - "NRCGI", - &asn_OP_SEQUENCE, - asn_DEF_NRCGI_tags_1, - sizeof(asn_DEF_NRCGI_tags_1) - /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ - asn_DEF_NRCGI_tags_1, /* Same as above */ - sizeof(asn_DEF_NRCGI_tags_1) - /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_NRCGI_1, - 2, /* Elements count */ - &asn_SPC_NRCGI_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.h deleted file mode 100644 index b4938d0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCGI.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _NRCGI_H_ -#define _NRCGI_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "NRCellIdentity.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* NRCGI */ -typedef struct NRCGI { - PLMN_Identity_t pLMN_Identity; - NRCellIdentity_t nRCellIdentity; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} NRCGI_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_NRCGI; -extern asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1; -extern asn_TYPE_member_t asn_MBR_NRCGI_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _NRCGI_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCellIdentity.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCellIdentity.c deleted file mode 100644 index 8e0310e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCellIdentity.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "NRCellIdentity.h" - -int -NRCellIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 36)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using BIT_STRING, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_NRCellIdentity_constr_1 CC_NOTUSED = { - { 0, 0 }, - 36 /* (SIZE(36..36)) */}; -asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 36, 36 } /* (SIZE(36..36)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_NRCellIdentity_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_NRCellIdentity = { - "NRCellIdentity", - "NRCellIdentity", - &asn_OP_BIT_STRING, - asn_DEF_NRCellIdentity_tags_1, - sizeof(asn_DEF_NRCellIdentity_tags_1) - /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */ - asn_DEF_NRCellIdentity_tags_1, /* Same as above */ - sizeof(asn_DEF_NRCellIdentity_tags_1) - /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */ - { &asn_OER_type_NRCellIdentity_constr_1, &asn_PER_type_NRCellIdentity_constr_1, NRCellIdentity_constraint }, - 0, 0, /* No members */ - &asn_SPC_BIT_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCellIdentity.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCellIdentity.h deleted file mode 100644 index 701f381..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NRCellIdentity.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _NRCellIdentity_H_ -#define _NRCellIdentity_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* NRCellIdentity */ -typedef BIT_STRING_t NRCellIdentity_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_NRCellIdentity; -asn_struct_free_f NRCellIdentity_free; -asn_struct_print_f NRCellIdentity_print; -asn_constr_check_f NRCellIdentity_constraint; -ber_type_decoder_f NRCellIdentity_decode_ber; -der_type_encoder_f NRCellIdentity_encode_der; -xer_type_decoder_f NRCellIdentity_decode_xer; -xer_type_encoder_f NRCellIdentity_encode_xer; -oer_type_decoder_f NRCellIdentity_decode_oer; -oer_type_encoder_f NRCellIdentity_encode_oer; -per_type_decoder_f NRCellIdentity_decode_uper; -per_type_encoder_f NRCellIdentity_encode_uper; -per_type_decoder_f NRCellIdentity_decode_aper; -per_type_encoder_f NRCellIdentity_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _NRCellIdentity_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated.c deleted file mode 100644 index 50ffb1d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated.c +++ /dev/null @@ -1,367 +0,0 @@ -/*- - * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeEnumerated basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeEnumerated = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeEnumerated_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeEnumerated_decode_oer, - NativeEnumerated_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeEnumerated_decode_uper, - NativeEnumerated_encode_uper, - NativeEnumerated_decode_aper, - NativeEnumerated_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeEnumerated_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { - "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ - "ENUMERATED", - &asn_OP_NativeEnumerated, - asn_DEF_NativeEnumerated_tags, - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - asn_DEF_NativeEnumerated_tags, /* Same as above */ - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -asn_enc_rval_t -NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - const asn_INTEGER_enum_map_t *el; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - el = INTEGER_map_value2enum(specs, *native); - if(el) { - er.encoded = - asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); - if(er.encoded < 0) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } else { - ASN_DEBUG( - "ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - long *native = (long *)*sptr; - const asn_per_constraint_t *ct = NULL; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -static int -NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { - const asn_INTEGER_enum_map_t *a = ap; - const asn_INTEGER_enum_map_t *b = bp; - if(a->nat_value == b->nat_value) - return 0; - if(a->nat_value < b->nat_value) - return -1; - return 1; -} - -asn_enc_rval_t -NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct = NULL; - int inext = 0; - asn_INTEGER_enum_map_t key; - const asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct && ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct && 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 = NULL; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - /* Deal with APER padding */ - if(ct && ct->upper_bound >= 255) { - int padding = 0; - padding = (8 - (pd->moved % 8)) % 8; - ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); - ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); - if(padding > 0) - per_get_few_bits(pd, padding); - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -asn_enc_rval_t -NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct = NULL; - int inext = 0; - asn_INTEGER_enum_map_t key; - asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - if(native < 0) ASN__ENCODE_FAILED; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct && ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct && 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated.h deleted file mode 100644 index 459f0e6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated_oer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated_oer.c deleted file mode 100644 index ee3c189..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeEnumerated_oer.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -static long -asn__nativeenumerated_convert(const uint8_t *b, const uint8_t *end) { - unsigned long value; - - /* Perform the sign initialization */ - /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ - if((*b >> 7)) { - value = (unsigned long)(-1); - } else { - value = 0; - } - - /* Conversion engine */ - for(; b < end; b++) { - value = (value << 8) | *b; - } - - return value; -} - -asn_dec_rval_t -NativeEnumerated_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - void **nint_ptr, const void *ptr, size_t size) { - asn_dec_rval_t rval = {RC_OK, 0}; - long *native = (long *)*nint_ptr; - const uint8_t *b = ptr; - - (void)opt_codec_ctx; - (void)constraints; - - if(size < 1) { - ASN__DECODE_STARVED; - } - - if((*b & 0x80) == 0) { - /* - * X.696 (08/2015) #11.2 Short form for Enumerated. - */ - if(!native) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - *native = *b; - rval.consumed = 1; - } else { - /* - * X.696 (08/2015) #11.4 Long form for Enumerated. - */ - size_t length = *b & 0x7f; - const uint8_t *bend; - long value; - - if(length < 1 || length > sizeof(*native)) { - ASN__DECODE_FAILED; - } - if((1 + length) > size) { - ASN__DECODE_STARVED; - } - b++; - bend = b + length; - - value = asn__nativeenumerated_convert(b, bend); - if(value < 0) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - if(specs && specs->field_unsigned) { - ASN__DECODE_FAILED; - } - } - - if(!native) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - *native = value; - - rval.consumed = (1 + length); - } - - return rval; -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -NativeEnumerated_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0,0,0}; - long native; - - (void)constraints; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - if(native >= 0 && native <= 127) { - /* #11.2 Short form */ - uint8_t b = native; - er.encoded = 1; - if(cb(&b, er.encoded, app_key) < 0) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } else { - /* #11.2 Long form */ - uint8_t buf[1 + sizeof(native)]; - uint8_t *b = &buf[sizeof(native)]; /* Last addressable */ - long final_pattern = -1 * (native < 0); - - for(;;) { - *b-- = native; - native >>= 8; - if(native == final_pattern) { - if(final_pattern) { - if((b[1] & 0x80)) break; - } else { - if(!(b[1] & 0x80)) break; - } - } - } - *b = 0x80 | (&buf[sizeof(native)] - b); - er.encoded = 1 + (&buf[sizeof(native)] - b); - if(cb(b, er.encoded, app_key) < 0) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger.c deleted file mode 100644 index 316e872..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger.c +++ /dev/null @@ -1,550 +0,0 @@ -/*- - * Copyright (c) 2004, 2005, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeInteger basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeInteger = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeInteger_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeInteger_decode_oer, /* OER decoder */ - NativeInteger_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeInteger_decode_uper, /* Unaligned PER decoder */ - NativeInteger_encode_uper, /* Unaligned PER encoder */ - NativeInteger_decode_aper, /* Aligned PER decoder */ - NativeInteger_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeInteger_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeInteger = { - "INTEGER", /* The ASN.1 type is still INTEGER */ - "INTEGER", - &asn_OP_NativeInteger, - asn_DEF_NativeInteger_tags, - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - asn_DEF_NativeInteger_tags, /* Same as above */ - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Decode INTEGER type. - */ -asn_dec_rval_t -NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **nint_ptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - long *native = (long *)*nint_ptr; - asn_dec_rval_t rval; - ber_tlv_len_t length; - - /* - * If the structure is not there, allocate it. - */ - if(native == NULL) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(native == NULL) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - } - - ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", - td->name, tag_mode); - - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - /* - * ASN.1 encoded INTEGER: buf_ptr, length - * Fill the native, at the same time checking for overflow. - * If overflow occured, return with RC_FAIL. - */ - { - INTEGER_t tmp; - union { - const void *constbuf; - void *nonconstbuf; - } unconst_buf; - long l; - - unconst_buf.constbuf = buf_ptr; - tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; - tmp.size = length; - - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&tmp, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - - *native = l; - } - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", - (long)rval.consumed, (long)length, td->name, (long)*native); - - return rval; -} - -/* - * Encode the NativeInteger using the standard INTEGER type DER encoder. - */ -asn_enc_rval_t -NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ - asn_enc_rval_t erval = {0,0,0}; - INTEGER_t tmp; - -#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ - - tmp.buf = (uint8_t *)&native; - tmp.size = sizeof(native); - -#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ - uint8_t buf[sizeof(native)]; - uint8_t *p; - - /* Prepare a fake INTEGER */ - for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) - *p = (uint8_t)native; - - tmp.buf = buf; - tmp.size = sizeof(buf); -#endif /* WORDS_BIGENDIAN */ - - /* Encode fake INTEGER */ - erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); - if(erval.structure_ptr == &tmp) { - erval.structure_ptr = ptr; - } - return erval; -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -asn_dec_rval_t -NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - INTEGER_t st; - void *st_ptr = (void *)&st; - long *native = (long *)*sptr; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&st, 0, sizeof(st)); - rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, - opt_mname, buf_ptr, size); - if(rval.code == RC_OK) { - long l; - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&st, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - } else { - *native = l; - } - } else { - /* - * Cannot restart from the middle; - * there is no place to save state in the native type. - * Request a continuation from the very beginning. - */ - rval.consumed = 0; - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); - return rval; -} - - -asn_enc_rval_t -NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; /* Enough for 64-bit int */ - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - er.encoded = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) - ? "%lu" : "%ld", *native); - if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) - || cb(scratch, er.encoded, app_key) < 0) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_uper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -asn_dec_rval_t -NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_aper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -/* - * INTEGER specific human-readable output. - */ -int -NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - const long *native = (const long *)sptr; - char scratch[32]; /* Enough for 64-bit int */ - int ret; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(native) { - long value = *native; - ret = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) ? "%lu" : "%ld", value); - assert(ret > 0 && (size_t)ret < sizeof(scratch)); - if(cb(scratch, ret, app_key) < 0) return -1; - if(specs && (value >= 0 || !specs->field_unsigned)) { - const asn_INTEGER_enum_map_t *el = - INTEGER_map_value2enum(specs, value); - if(el) { - if(cb(" (", 2, app_key) < 0) return -1; - if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; - if(cb(")", 1, app_key) < 0) return -1; - } - } - return 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", - td->name, method, ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, sizeof(long)); - break; - } -} - -int -NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - (void)td; - - if(aptr && bptr) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - if(specs && specs->field_unsigned) { - const unsigned long *a = aptr; - const unsigned long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } else { - const long *a = aptr; - const long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } - } else if(!aptr) { - return -1; - } else { - return 1; - } -} - -asn_random_fill_result_t -NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - long *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (long *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - *sptr = st; - *st = value; - return result_ok; -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger.h deleted file mode 100644 index c74406a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger.h +++ /dev/null @@ -1,46 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger_oer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger_oer.c deleted file mode 100644 index 411413a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/NativeInteger_oer.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -asn_dec_rval_t -NativeInteger_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - void **nint_ptr, const void *ptr, size_t size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = {RC_OK, 0}; - long *native = (long *)*nint_ptr; - INTEGER_t tmpint; - INTEGER_t *tmpintptr = &tmpint; - - memset(&tmpint, 0, sizeof(tmpint)); - - if(!native) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - /* - * OPTIMIZATION: Encode directly rather than passing through INTEGER. - * Saves a memory allocation. - */ - rval = INTEGER_decode_oer(opt_codec_ctx, td, constraints, - (void **)&tmpintptr, ptr, size); - if(rval.code != RC_OK) { - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return rval; - } - - if(specs && specs->field_unsigned) { - unsigned long ul; - int ok = asn_INTEGER2ulong(&tmpint, &ul) == 0; - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - if(ok) { - *native = ul; - } else { - rval.code = RC_FAIL; - return rval; - } - } else { - long l; - int ok = asn_INTEGER2long(&tmpint, &l) == 0; - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - if(ok) { - *native = l; - } else { - rval.code = RC_FAIL; - return rval; - } - } - - return rval; -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -NativeInteger_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - INTEGER_t tmpint; - long native; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - memset(&tmpint, 0, sizeof(tmpint)); - - ASN_DEBUG("Encoding %s %ld as NativeInteger", td ? td->name : "", native); - - if((specs && specs->field_unsigned) ? asn_ulong2INTEGER(&tmpint, native) - : asn_long2INTEGER(&tmpint, native)) { - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - ASN__ENCODE_FAILED; - } else { - asn_enc_rval_t er = - INTEGER_encode_oer(td, constraints, &tmpint, cb, app_key); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING.c deleted file mode 100644 index ae34c96..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING.c +++ /dev/null @@ -1,2411 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* for .bits_unused member */ -#include - -/* - * OCTET STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { - sizeof(OCTET_STRING_t), - offsetof(OCTET_STRING_t, _asn_ctx), - ASN_OSUBV_STR -}; - -asn_TYPE_operation_t asn_OP_OCTET_STRING = { - OCTET_STRING_free, - OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ - OCTET_STRING_compare, - OCTET_STRING_decode_ber, - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_hex, - OCTET_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - OCTET_STRING_decode_oer, - OCTET_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - OCTET_STRING_decode_uper, /* Unaligned PER decoder */ - OCTET_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - OCTET_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { - "OCTET STRING", /* Canonical name */ - "OCTET_STRING", /* XML tag name */ - &asn_OP_OCTET_STRING, - asn_DEF_OCTET_STRING_tags, - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - asn_DEF_OCTET_STRING_tags, /* Same as above */ - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs -}; - -#undef _CH_PHASE -#undef NEXT_PHASE -#undef PREV_PHASE -#define _CH_PHASE(ctx, inc) do { \ - if(ctx->phase == 0) \ - ctx->context = 0; \ - ctx->phase += inc; \ - } while(0) -#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) -#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -#undef APPEND -#define APPEND(bufptr, bufsize) do { \ - size_t _bs = (bufsize); /* Append size */ \ - size_t _ns = ctx->context; /* Allocated now */ \ - size_t _es = st->size + _bs; /* Expected size */ \ - /* int is really a typeof(st->size): */ \ - if((int)_es < 0) RETURN(RC_FAIL); \ - if(_ns <= _es) { \ - void *ptr; \ - /* Be nice and round to the memory allocator */ \ - do { _ns = _ns ? _ns << 1 : 16; } \ - while(_ns <= _es); \ - /* int is really a typeof(st->size): */ \ - if((int)_ns < 0) RETURN(RC_FAIL); \ - ptr = REALLOC(st->buf, _ns); \ - if(ptr) { \ - st->buf = (uint8_t *)ptr; \ - ctx->context = _ns; \ - } else { \ - RETURN(RC_FAIL); \ - } \ - ASN_DEBUG("Reallocating into %ld", (long)_ns); \ - } \ - memcpy(st->buf + st->size, bufptr, _bs); \ - /* Convenient nul-termination */ \ - st->buf[_es] = '\0'; \ - st->size = _es; \ - } while(0) - -/* - * The main reason why ASN.1 is still alive is that too much time and effort - * is necessary for learning it more or less adequately, thus creating a gut - * necessity to demonstrate that aquired skill everywhere afterwards. - * No, I am not going to explain what the following stuff is. - */ -struct _stack_el { - ber_tlv_len_t left; /* What's left to read (or -1) */ - ber_tlv_len_t got; /* What was actually processed */ - unsigned cont_level; /* Depth of subcontainment */ - int want_nulls; /* Want null "end of content" octets? */ - int bits_chopped; /* Flag in BIT STRING mode */ - ber_tlv_tag_t tag; /* For debugging purposes */ - struct _stack_el *prev; - struct _stack_el *next; -}; -struct _stack { - struct _stack_el *tail; - struct _stack_el *cur_ptr; -}; - -static struct _stack_el * -OS__add_stack_el(struct _stack *st) { - struct _stack_el *nel; - - /* - * Reuse the old stack frame or allocate a new one. - */ - if(st->cur_ptr && st->cur_ptr->next) { - nel = st->cur_ptr->next; - nel->bits_chopped = 0; - nel->got = 0; - /* Retain the nel->cont_level, it's correct. */ - } else { - nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); - if(nel == NULL) - return NULL; - - if(st->tail) { - /* Increase a subcontainment depth */ - nel->cont_level = st->tail->cont_level + 1; - st->tail->next = nel; - } - nel->prev = st->tail; - st->tail = nel; - } - - st->cur_ptr = nel; - - return nel; -} - -static struct _stack * -_new_stack(void) { - return (struct _stack *)CALLOC(1, sizeof(struct _stack)); -} - -/* - * Decode OCTET STRING type. - */ -asn_dec_rval_t -OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - asn_dec_rval_t rval; - asn_struct_ctx_t *ctx; - ssize_t consumed_myself = 0; - struct _stack *stck; /* Expectations stack structure */ - struct _stack_el *sel = 0; /* Stack element */ - int tlv_constr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - - ASN_DEBUG("Decoding %s as %s (frame %ld)", - td->name, - (type_variant == ASN_OSUBV_STR) ? - "OCTET STRING" : "OS-SpecialCase", - (long)size); - - /* - * Create the string if does not exist. - */ - if(st == NULL) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) RETURN(RC_FAIL); - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - switch(ctx->phase) { - case 0: - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, ctx, - buf_ptr, size, tag_mode, -1, - &ctx->left, &tlv_constr); - if(rval.code != RC_OK) - return rval; - - if(tlv_constr) { - /* - * Complex operation, requires stack of expectations. - */ - ctx->ptr = _new_stack(); - if(!ctx->ptr) { - RETURN(RC_FAIL); - } - } else { - /* - * Jump into stackless primitive decoding. - */ - _CH_PHASE(ctx, 3); - if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) - APPEND(buf_ptr, rval.consumed); - ADVANCE(rval.consumed); - goto phase3; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - phase1: - /* - * Fill the stack with expectations. - */ - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - do { - ber_tlv_tag_t tlv_tag; - ber_tlv_len_t tlv_len; - ber_tlv_tag_t expected_tag; - ssize_t tl, ll, tlvl; - /* This one works even if (sel->left == -1) */ - size_t Left = ((!sel||(size_t)sel->left >= size) - ?size:(size_t)sel->left); - - - ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)(sel?sel->got:0) - ); - if(sel && sel->left <= 0 && sel->want_nulls == 0) { - if(sel->prev) { - struct _stack_el *prev = sel->prev; - if(prev->left != -1) { - if(prev->left < sel->got) - RETURN(RC_FAIL); - prev->left -= sel->got; - } - prev->got += sel->got; - sel = stck->cur_ptr = prev; - if(!sel) break; - tlv_constr = 1; - continue; - } else { - sel = stck->cur_ptr = 0; - break; /* Nothing to wait */ - } - } - - tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); - ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", - (long)size, (long)Left, sel?"":"!", - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)tl); - switch(tl) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); - - ll = ber_fetch_length(tlv_constr, - (const char *)buf_ptr + tl,Left - tl,&tlv_len); - ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", - ber_tlv_tag_string(tlv_tag), tlv_constr, - (long)Left, (long)tl, (long)tlv_len, (long)ll); - switch(ll) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - if(sel && sel->want_nulls - && ((const uint8_t *)buf_ptr)[0] == 0 - && ((const uint8_t *)buf_ptr)[1] == 0) - { - - ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); - - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND("\0\0", 2); - - ADVANCE(2); - sel->got += 2; - if(sel->left != -1) { - sel->left -= 2; /* assert(sel->left >= 2) */ - } - - sel->want_nulls--; - if(sel->want_nulls == 0) { - /* Move to the next expectation */ - sel->left = 0; - tlv_constr = 1; - } - - continue; - } - - /* - * Set up expected tags, - * depending on ASN.1 type being decoded. - */ - switch(type_variant) { - case ASN_OSUBV_BIT: - /* X.690: 8.6.4.1, NOTE 2 */ - /* Fall through */ - case ASN_OSUBV_STR: - default: - if(sel) { - unsigned level = sel->cont_level; - if(level < td->all_tags_count) { - expected_tag = td->all_tags[level]; - break; - } else if(td->all_tags_count) { - expected_tag = td->all_tags - [td->all_tags_count - 1]; - break; - } - /* else, Fall through */ - } - /* Fall through */ - case ASN_OSUBV_ANY: - expected_tag = tlv_tag; - break; - } - - - if(tlv_tag != expected_tag) { - char buf[2][32]; - ber_tlv_tag_snprint(tlv_tag, - buf[0], sizeof(buf[0])); - ber_tlv_tag_snprint(td->tags[td->tags_count-1], - buf[1], sizeof(buf[1])); - ASN_DEBUG("Tag does not match expectation: %s != %s", - buf[0], buf[1]); - RETURN(RC_FAIL); - } - - tlvl = tl + ll; /* Combined length of T and L encoding */ - if((tlv_len + tlvl) < 0) { - /* tlv_len value is too big */ - ASN_DEBUG("TLV encoding + length (%ld) is too big", - (long)tlv_len); - RETURN(RC_FAIL); - } - - /* - * Append a new expectation. - */ - sel = OS__add_stack_el(stck); - if(!sel) RETURN(RC_FAIL); - - sel->tag = tlv_tag; - - sel->want_nulls = (tlv_len==-1); - if(sel->prev && sel->prev->left != -1) { - /* Check that the parent frame is big enough */ - if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) - RETURN(RC_FAIL); - if(tlv_len == -1) - sel->left = sel->prev->left - tlvl; - else - sel->left = tlv_len; - } else { - sel->left = tlv_len; - } - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND(buf_ptr, tlvl); - sel->got += tlvl; - ADVANCE(tlvl); - - ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", - (long)sel->got, (long)sel->left, - sel->want_nulls, sel->cont_level); - - } while(tlv_constr); - if(sel == NULL) { - /* Finished operation, "phase out" */ - ASN_DEBUG("Phase out"); - _CH_PHASE(ctx, +3); - break; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 2: - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", - (long)sel->left, (long)size, (long)sel->got, - sel->want_nulls); - { - ber_tlv_len_t len; - - assert(sel->left >= 0); - - len = ((ber_tlv_len_t)size < sel->left) - ? (ber_tlv_len_t)size : sel->left; - if(len > 0) { - if(type_variant == ASN_OSUBV_BIT - && sel->bits_chopped == 0) { - /* Put the unused-bits-octet away */ - st->bits_unused = *(const uint8_t *)buf_ptr; - APPEND(((const char *)buf_ptr+1), (len - 1)); - sel->bits_chopped = 1; - } else { - APPEND(buf_ptr, len); - } - ADVANCE(len); - sel->left -= len; - sel->got += len; - } - - if(sel->left) { - ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", - (long)sel->left, (long)size, sel->want_nulls); - RETURN(RC_WMORE); - } - - PREV_PHASE(ctx); - goto phase1; - } - break; - case 3: - phase3: - /* - * Primitive form, no stack required. - */ - assert(ctx->left >= 0); - - if(size < (size_t)ctx->left) { - if(!size) RETURN(RC_WMORE); - if(type_variant == ASN_OSUBV_BIT && !ctx->context) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, size); - assert(ctx->context > 0); - ctx->left -= size; - ADVANCE(size); - RETURN(RC_WMORE); - } else { - if(type_variant == ASN_OSUBV_BIT - && !ctx->context && ctx->left) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, ctx->left); - ADVANCE(ctx->left); - ctx->left = 0; - - NEXT_PHASE(ctx); - } - break; - } - - if(sel) { - ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", - (void *)sel->prev, sel->want_nulls, - (long)sel->left, (long)sel->got, (long)size); - if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { - RETURN(RC_WMORE); - } - } - - /* - * BIT STRING-specific processing. - */ - if(type_variant == ASN_OSUBV_BIT) { - if(st->size) { - if(st->bits_unused < 0 || st->bits_unused > 7) { - RETURN(RC_FAIL); - } - /* Finalize BIT STRING: zero out unused bits. */ - st->buf[st->size-1] &= 0xff << st->bits_unused; - } else { - if(st->bits_unused) { - RETURN(RC_FAIL); - } - } - } - - ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", - (long)consumed_myself, td->name, - (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", - (long)st->size); - - - RETURN(RC_OK); -} - -/* - * Encode OCTET STRING type using DER. - */ -asn_enc_rval_t -OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = { 0, 0, 0 }; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - int fix_last_byte = 0; - - ASN_DEBUG("%s %s as OCTET STRING", - cb?"Estimating":"Encoding", td->name); - - /* - * Write tags. - */ - if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { - er.encoded = der_write_tags(td, - (type_variant == ASN_OSUBV_BIT) + st->size, - tag_mode, type_variant == ASN_OSUBV_ANY, tag, - cb, app_key); - if(er.encoded == -1) { - er.failed_type = td; - er.structure_ptr = sptr; - return er; - } - } else { - /* Disallow: [] IMPLICIT ANY */ - assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); - er.encoded = 0; - } - - if(!cb) { - er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; - ASN__ENCODED_OK(er); - } - - /* - * Prepare to deal with the last octet of BIT STRING. - */ - if(type_variant == ASN_OSUBV_BIT) { - uint8_t b = st->bits_unused & 0x07; - if(b && st->size) fix_last_byte = 1; - ASN__CALLBACK(&b, 1); - } - - /* Invoke callback for the main part of the buffer */ - ASN__CALLBACK(st->buf, st->size - fix_last_byte); - - /* The last octet should be stripped off the unused bits */ - if(fix_last_byte) { - uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); - ASN__CALLBACK(&b, 1); - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_enc_rval_t -OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - char scratch[16 * 3 + 4]; - char *p = scratch; - uint8_t *buf; - uint8_t *end; - size_t i; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - /* - * Dump the contents of the buffer in hexadecimal. - */ - buf = st->buf; - end = buf + st->size; - if(flags & XER_F_CANONICAL) { - char *scend = scratch + (sizeof(scratch) - 2); - for(; buf < end; buf++) { - if(p >= scend) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - } - - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - } else { - for(i = 0; buf < end; buf++, i++) { - if(!(i % 16) && (i || st->size > 16)) { - ASN__CALLBACK(scratch, p-scratch); - p = scratch; - ASN__TEXT_INDENT(1, ilevel); - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - if(p - scratch) { - p--; /* Remove the tail space */ - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - if(st->size > 16) - ASN__TEXT_INDENT(1, ilevel-1); - } - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -static const struct OCTET_STRING__xer_escape_table_s { - const char *string; - int size; -} OCTET_STRING__xer_escape_table[] = { -#define OSXET(s) { s, sizeof(s) - 1 } - OSXET("\074\156\165\154\057\076"), /* */ - OSXET("\074\163\157\150\057\076"), /* */ - OSXET("\074\163\164\170\057\076"), /* */ - OSXET("\074\145\164\170\057\076"), /* */ - OSXET("\074\145\157\164\057\076"), /* */ - OSXET("\074\145\156\161\057\076"), /* */ - OSXET("\074\141\143\153\057\076"), /* */ - OSXET("\074\142\145\154\057\076"), /* */ - OSXET("\074\142\163\057\076"), /* */ - OSXET("\011"), /* \t */ - OSXET("\012"), /* \n */ - OSXET("\074\166\164\057\076"), /* */ - OSXET("\074\146\146\057\076"), /* */ - OSXET("\015"), /* \r */ - OSXET("\074\163\157\057\076"), /* */ - OSXET("\074\163\151\057\076"), /* */ - OSXET("\074\144\154\145\057\076"), /* */ - OSXET("\074\144\143\061\057\076"), /* */ - OSXET("\074\144\143\062\057\076"), /* */ - OSXET("\074\144\143\063\057\076"), /* */ - OSXET("\074\144\143\064\057\076"), /* */ - OSXET("\074\156\141\153\057\076"), /* */ - OSXET("\074\163\171\156\057\076"), /* */ - OSXET("\074\145\164\142\057\076"), /* */ - OSXET("\074\143\141\156\057\076"), /* */ - OSXET("\074\145\155\057\076"), /* */ - OSXET("\074\163\165\142\057\076"), /* */ - OSXET("\074\145\163\143\057\076"), /* */ - OSXET("\074\151\163\064\057\076"), /* */ - OSXET("\074\151\163\063\057\076"), /* */ - OSXET("\074\151\163\062\057\076"), /* */ - OSXET("\074\151\163\061\057\076"), /* */ - { 0, 0 }, /* " " */ - { 0, 0 }, /* ! */ - { 0, 0 }, /* \" */ - { 0, 0 }, /* # */ - { 0, 0 }, /* $ */ - { 0, 0 }, /* % */ - OSXET("\046\141\155\160\073"), /* & */ - { 0, 0 }, /* ' */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ - {0,0},{0,0},{0,0},{0,0}, /* 89:; */ - OSXET("\046\154\164\073"), /* < */ - { 0, 0 }, /* = */ - OSXET("\046\147\164\073"), /* > */ -}; - -static int -OS__check_escaped_control_char(const void *buf, int size) { - size_t i; - /* - * Inefficient algorithm which translates the escape sequences - * defined above into characters. Returns -1 if not found. - * TODO: replace by a faster algorithm (bsearch(), hash or - * nested table lookups). - */ - for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { - const struct OCTET_STRING__xer_escape_table_s *el; - el = &OCTET_STRING__xer_escape_table[i]; - if(el->size == size && memcmp(buf, el->string, size) == 0) - return i; - } - return -1; -} - -static int -OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { - /* - * This might be one of the escape sequences - * for control characters. Check it out. - * #11.15.5 - */ - int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); - if(control_char >= 0) { - OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; - void *p = REALLOC(st->buf, st->size + 2); - if(p) { - st->buf = (uint8_t *)p; - st->buf[st->size++] = control_char; - st->buf[st->size] = '\0'; /* nul-termination */ - return 0; - } - } - - return -1; /* No, it's not */ -} - -asn_enc_rval_t -OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - uint8_t *buf, *end; - uint8_t *ss; /* Sequence start */ - ssize_t encoded_len = 0; - - (void)ilevel; /* Unused argument */ - (void)flags; /* Unused argument */ - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - buf = st->buf; - end = buf + st->size; - for(ss = buf; buf < end; buf++) { - unsigned int ch = *buf; - int s_len; /* Special encoding sequence length */ - - /* - * Escape certain characters: X.680/11.15 - */ - if(ch < sizeof(OCTET_STRING__xer_escape_table) - /sizeof(OCTET_STRING__xer_escape_table[0]) - && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { - if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) - || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, - app_key) < 0) - ASN__ENCODE_FAILED; - encoded_len += (buf - ss) + s_len; - ss = buf + 1; - } - } - - encoded_len += (buf - ss); - if((buf - ss) && cb(ss, buf - ss, app_key) < 0) - ASN__ENCODE_FAILED; - - er.encoded = encoded_len; - ASN__ENCODED_OK(er); -} - -/* - * Convert from hexadecimal format (cstring): "AB CD EF" - */ -static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *chunk_stop = (const char *)chunk_buf; - const char *p = chunk_stop; - const char *pend = p + chunk_size; - unsigned int clv = 0; - int half = 0; /* Half bit */ - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 1) / 2; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * If something like " a b c " appears here, the " a b":3 will be - * converted, and the rest skipped. That is, unless buf_size is greater - * than chunk_size, then it'll be equivalent to "ABC0". - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - continue; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - clv = (clv << 4) + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - clv = (clv << 4) + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - clv = (clv << 4) + (ch - 0x61 + 10); - break; - default: - *buf = 0; /* JIC */ - return -1; - } - if(half++) { - half = 0; - *buf++ = clv; - chunk_stop = p + 1; - } - } - - /* - * Check partial decoding. - */ - if(half) { - if(have_more) { - /* - * Partial specification is fine, - * because no more more PXER_TEXT data is available. - */ - *buf++ = clv << 4; - chunk_stop = p; - } - } else { - chunk_stop = p; - } - - st->size = buf - st->buf; /* Adjust the buffer size */ - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return (chunk_stop - (const char *)chunk_buf); /* Converted size */ -} - -/* - * Convert from binary format: "00101011101" - */ -static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - BIT_STRING_t *st = (BIT_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - int bits_unused = st->bits_unused & 0x7; - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 7) / 8; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - (void)have_more; - - if(bits_unused == 0) - bits_unused = 8; - else if(st->size) - buf--; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - break; - case 0x30: - case 0x31: - if(bits_unused-- <= 0) { - *++buf = 0; /* Clean the cell */ - bits_unused = 7; - } - *buf |= (ch&1) << bits_unused; - break; - default: - st->bits_unused = bits_unused; - return -1; - } - } - - if(bits_unused == 8) { - st->size = buf - st->buf; - st->bits_unused = 0; - } else { - st->size = buf - st->buf + 1; - st->bits_unused = bits_unused; - } - - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Something like strtod(), but with stricter rules. - */ -static int -OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { - const int32_t last_unicode_codepoint = 0x10ffff; - int32_t val = 0; - const char *p; - - for(p = buf; p < end; p++) { - int ch = *p; - - switch(ch) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - val = val * base + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - val = val * base + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - val = val * base + (ch - 0x61 + 10); - break; - case 0x3b: /* ';' */ - *ret_value = val; - return (p - buf) + 1; - default: - return -1; /* Character set error */ - } - - /* Value exceeds the Unicode range. */ - if(val > last_unicode_codepoint) { - return -1; - } - } - - *ret_value = -1; - return (p - buf); -} - -/* - * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" - */ -static ssize_t -OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, - size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - uint8_t *buf; - - /* Reallocate buffer */ - size_t new_size = st->size + chunk_size; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - int len; /* Length of the rest of the chunk */ - - if(ch != 0x26 /* '&' */) { - *buf++ = ch; - continue; /* That was easy... */ - } - - /* - * Process entity reference. - */ - len = chunk_size - (p - (const char *)chunk_buf); - if(len == 1 /* "&" */) goto want_more; - if(p[1] == 0x23 /* '#' */) { - const char *pval; /* Pointer to start of digits */ - int32_t val = 0; /* Entity reference value */ - int base; - - if(len == 2 /* "&#" */) goto want_more; - if(p[2] == 0x78 /* 'x' */) - pval = p + 3, base = 16; - else - pval = p + 2, base = 10; - len = OS__strtoent(base, pval, p + len, &val); - if(len == -1) { - /* Invalid charset. Just copy verbatim. */ - *buf++ = ch; - continue; - } - if(!len || pval[len-1] != 0x3b) goto want_more; - assert(val > 0); - p += (pval - p) + len - 1; /* Advance past entref */ - - if(val < 0x80) { - *buf++ = (char)val; - } else if(val < 0x800) { - *buf++ = 0xc0 | ((val >> 6)); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x10000) { - *buf++ = 0xe0 | ((val >> 12)); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x200000) { - *buf++ = 0xf0 | ((val >> 18)); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x4000000) { - *buf++ = 0xf8 | ((val >> 24)); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else { - *buf++ = 0xfc | ((val >> 30) & 0x1); - *buf++ = 0x80 | ((val >> 24) & 0x3f); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } - } else { - /* - * Ugly, limited parsing of & > < - */ - char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); - if(!sc) goto want_more; - if((sc - p) == 4 - && p[1] == 0x61 /* 'a' */ - && p[2] == 0x6d /* 'm' */ - && p[3] == 0x70 /* 'p' */) { - *buf++ = 0x26; - p = sc; - continue; - } - if((sc - p) == 3) { - if(p[1] == 0x6c) { - *buf = 0x3c; /* '<' */ - } else if(p[1] == 0x67) { - *buf = 0x3e; /* '>' */ - } else { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - if(p[2] != 0x74) { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - buf++; - p = sc; - continue; - } - /* Unsupported entity reference */ - *buf++ = ch; - } - - continue; - want_more: - if(have_more) { - /* - * We know that no more data (of the same type) - * is coming. Copy the rest verbatim. - */ - *buf++ = ch; - continue; - } - chunk_size = (p - (const char *)chunk_buf); - /* Processing stalled: need more data */ - break; - } - - st->size = buf - st->buf; - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Decode OCTET STRING from the XML element's body. - */ -static asn_dec_rval_t -OCTET_STRING__decode_xer( - const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, - void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size), - ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size, int have_more)) { - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t *ctx; /* Per-structure parser context */ - asn_dec_rval_t rval; /* Return value from the decoder */ - int st_allocated; - - /* - * Create the string if does not exist. - */ - if(!st) { - st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); - *sptr = (void *)st; - if(!st) goto sta_failed; - st_allocated = 1; - } else { - st_allocated = 0; - } - if(!st->buf) { - /* This is separate from above section */ - st->buf = (uint8_t *)CALLOC(1, 1); - if(!st->buf) { - if(st_allocated) { - *sptr = 0; - goto stb_failed; - } else { - goto sta_failed; - } - } - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); - - return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, - buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); - -stb_failed: - FREEMEM(st); -sta_failed: - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; -} - -/* - * Decode OCTET STRING from the hexadecimal data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); -} - -/* - * Decode OCTET STRING from the binary (0/1) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_binary); -} - -/* - * Decode OCTET STRING from the string (ASCII/UTF-8) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, - OCTET_STRING__handle_control_chars, - OCTET_STRING__convert_entrefs); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -static int -OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", - (int)units, lb, ub, unit_bits); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Decode without translation */ - lb = 0; - } else if(pc && pc->code2value) { - if(unit_bits > 16) - return 1; /* FATAL: can't have constrained - * UniversalString with more than - * 16 million code points */ - for(; buf < end; buf += bpc) { - int value; - int code = per_get_few_bits(po, unit_bits); - if(code < 0) return -1; /* WMORE */ - value = pc->code2value(code); - if(value < 0) { - ASN_DEBUG("Code %d (0x%02x) is" - " not in map (%ld..%ld)", - code, code, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = value; break; - case 2: buf[0] = value >> 8; buf[1] = value; break; - case 4: buf[0] = value >> 24; buf[1] = value >> 16; - buf[2] = value >> 8; buf[3] = value; break; - } - } - return 0; - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_get_many_bits(po, buf, 0, unit_bits * units); - } - - for(; buf < end; buf += bpc) { - int32_t code = per_get_few_bits(po, unit_bits); - int32_t ch = code + lb; - if(code < 0) return -1; /* WMORE */ - if(ch > ub) { - ASN_DEBUG("Code %d is out of range (%ld..%ld)", - ch, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = ch; break; - case 2: buf[0] = ch >> 8; buf[1] = ch; break; - case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; - buf[2] = ch >> 8; buf[3] = ch; break; - } - } - - return 0; -} - -static int -OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - const uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", - (int)units, lb, ub, unit_bits, bpc); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Encode as is */ - lb = 0; - } else if(pc && pc->value2code) { - for(; buf < end; buf += bpc) { - int code; - uint32_t value; - switch(bpc) { - case 1: value = *(const uint8_t *)buf; break; - case 2: value = (buf[0] << 8) | buf[1]; break; - case 4: value = (buf[0] << 24) | (buf[1] << 16) - | (buf[2] << 8) | buf[3]; break; - default: return -1; - } - code = pc->value2code(value); - if(code < 0) { - ASN_DEBUG("Character %d (0x%02x) is" - " not in map (%ld..%ld)", - *buf, *buf, lb, ub); - return -1; - } - if(per_put_few_bits(po, code, unit_bits)) - return -1; - } - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_put_many_bits(po, buf, unit_bits * units); - } - - for(ub -= lb; buf < end; buf += bpc) { - int ch; - uint32_t value; - switch(bpc) { - case 1: - value = *(const uint8_t *)buf; - break; - case 2: - value = (buf[0] << 8) | buf[1]; - break; - case 4: - value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; - break; - default: - return -1; - } - ch = value - lb; - if(ch < 0 || ch > ub) { - ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, - value, lb, ub + lb); - return -1; - } - if(per_put_few_bits(po, ch, unit_bits)) return -1; - } - - return 0; -} - -static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { - { APC_CONSTRAINED, 8, 8, 0, 255 }, - { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, - 0, 0 -}; - -asn_dec_rval_t -OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); - break; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if(bpc) { - ASN_DEBUG("Encoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Encoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len * bpc; - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, - bpc, unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - size_t size_in_units; - const uint8_t *buf; - int ret; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN__ENCODE_FAILED; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - size_in_units = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - size_in_units = st->size >> 1; - if(st->size & 1) { - ASN_DEBUG("%s string size is not modulo 2", td->name); - ASN__ENCODE_FAILED; - } - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - size_in_units = st->size >> 2; - if(st->size & 3) { - ASN_DEBUG("%s string size is not modulo 4", td->name); - ASN__ENCODE_FAILED; - } - break; - } - - ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_units, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_units < csiz->lower_bound - || (ssize_t)size_in_units > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, - size_in_units - csiz->lower_bound, csiz->effective_bits); - ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, - unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, - need_eom ? ",+EOM" : ""); - - ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, - cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save * bpc; - size_in_units -= may_save; - assert(!(may_save & 0x07) || !size_in_units); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_units); - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: -/* case ASN_OSUBV_ANY: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); -*/ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; -*/ - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - cval = &asn_DEF_OCTET_STRING_constraints.value; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if (st->size > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - if(bpc) { - ASN_DEBUG("Decoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Decoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - if(bpc == 0) { - int ubs = (csiz->upper_bound & 0x7); - st->bits_unused = ubs ? 8 - ubs : 0; - } - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - if (csiz->upper_bound - csiz->lower_bound == 0) - /* Indefinite length case */ - raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); - else - raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); - repeat = 0; - if(raw_len < 0) RETURN(RC_WMORE); - raw_len += csiz->lower_bound; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - - if (raw_len > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - - if(bpc) { - len_bytes = raw_len * bpc; - len_bits = len_bytes * unit_bits; - } else { - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) - st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - } - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - if(bpc) { - ret = OCTET_STRING_per_get_characters(pd, - &st->buf[st->size], raw_len, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ret = per_get_many_bits(pd, &st->buf[st->size], - 0, len_bits); - } - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - unsigned int sizeinunits; - const uint8_t *buf; - int ret; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - /* case ASN_OSUBV_ANY: - ASN__ENCODE_FAILED; - */ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - sizeinunits = st->size * 8 - (st->bits_unused & 0x07); - ASN_DEBUG("BIT STRING of %d bytes", - sizeinunits); - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = 8; -*/ - bpc = OS__BPC_CHAR; - sizeinunits = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - sizeinunits = st->size / 2; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - sizeinunits = st->size / 4; - break; - } - - ASN_DEBUG("Encoding %s into %d units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, sizeinunits, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out wheter size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((int)sizeinunits < csiz->lower_bound - || (int)sizeinunits > csiz->upper_bound) { - if(ct_extensible) { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else - ASN__ENCODE_FAILED; - } - } else { - inext = 0; - } - - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits >= 0) { - ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", - st->size, sizeinunits - csiz->lower_bound, - csiz->effective_bits); - if (csiz->effective_bits > 0) { - ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); - if(ret) ASN__ENCODE_FAILED; - } - /* EB MOD - AFAIU if lb != ub it is aligned whatever the number of bits */ - if ((st->size > 2) || (csiz->lower_bound != csiz->upper_bound)) { /* X.691 #16.11 */ - 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING.h deleted file mode 100644 index c2f8bae..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING.h +++ /dev/null @@ -1,102 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING_oer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING_oer.c deleted file mode 100644 index c16faea..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCTET_STRING_oer.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -asn_dec_rval_t -OCTET_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - const asn_oer_constraints_t *cts = - constraints ? constraints : td->encoding_constraints.oer_constraints; - ssize_t ct_size = cts ? cts->size : -1; - asn_dec_rval_t rval = {RC_OK, 0}; - size_t expected_length = 0; - - size_t unit_bytes; - switch(specs->subvariant) { - default: - case ASN_OSUBV_BIT: - ASN_DEBUG("Invalid use of OCTET STRING to decode BIT STRING"); - ASN__DECODE_FAILED; - case ASN_OSUBV_ANY: - /* Fall through */ - case ASN_OSUBV_STR: - unit_bytes = 1; - break; - case ASN_OSUBV_U16: - unit_bytes = 2; - break; - case ASN_OSUBV_U32: - unit_bytes = 4; - break; - } - - (void)opt_codec_ctx; - - if(!st) { - st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) ASN__DECODE_FAILED; - } - - if(ct_size >= 0) { - expected_length = unit_bytes * ct_size; - } else { - /* - * X.696 (08/2015) #27.2 - * Encode length determinant as _number of octets_, but only - * if upper bound is not equal to lower bound. - */ - ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); - if(len_len > 0) { - rval.consumed = len_len; - ptr = (const char *)ptr + len_len; - size -= len_len; - } else if(len_len == 0) { - ASN__DECODE_STARVED; - } else if(len_len < 0) { - ASN__DECODE_FAILED; - } - - if(expected_length % unit_bytes != 0) { - ASN_DEBUG( - "Data size %" ASN_PRI_SIZE " bytes is not consistent with multiplier %" ASN_PRI_SIZE "", - expected_length, unit_bytes); - ASN__DECODE_FAILED; - } - } - - if(size < expected_length) { - ASN__DECODE_STARVED; - } else { - uint8_t *buf = MALLOC(expected_length + 1); - if(buf == NULL) { - ASN__DECODE_FAILED; - } else { - memcpy(buf, ptr, expected_length); - buf[expected_length] = '\0'; - } - FREEMEM(st->buf); - st->buf = buf; - st->size = expected_length; - - rval.consumed += expected_length; - return rval; - } -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -OCTET_STRING_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - const asn_oer_constraints_t *cts = - constraints ? constraints : td->encoding_constraints.oer_constraints; - ssize_t ct_size = cts ? cts->size : -1; - asn_enc_rval_t er = {0, 0, 0}; - - if(!st) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s %" ASN_PRI_SIZE " as OCTET STRING", td ? td->name : "", st->size); - - if(ct_size >= 0) { - /* - * Check that available data matches the constraint - */ - size_t unit_bytes; - switch(specs->subvariant) { - default: - case ASN_OSUBV_BIT: - ASN_DEBUG("Invalid use of OCTET STRING to encode BIT STRING"); - ASN__ENCODE_FAILED; - case ASN_OSUBV_ANY: - /* Fall through */ - case ASN_OSUBV_STR: - unit_bytes = 1; - break; - case ASN_OSUBV_U16: - unit_bytes = 2; - break; - case ASN_OSUBV_U32: - unit_bytes = 4; - break; - } - - if(st->size != unit_bytes * (size_t)ct_size) { - ASN_DEBUG( - "Trying to encode %s (%" ASN_PRI_SIZE " bytes) which doesn't fit SIZE " - "constraint (%" ASN_PRI_SIZE ")", - td->name, st->size, ct_size); - ASN__ENCODE_FAILED; - } - } else { - /* - * X.696 (08/2015) #27.2 - * Encode length determinant as _number of octets_, but only - * if upper bound is not equal to lower bound. - */ - ssize_t ret = oer_serialize_length(st->size, cb, app_key); - if(ret < 0) { - ASN__ENCODE_FAILED; - } - er.encoded += ret; - } - - er.encoded += st->size; - if(cb(st->buf, st->size, app_key) < 0) { - ASN__ENCODE_FAILED; - } else { - ASN__ENCODED_OK(er); - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUCP-PF-Container.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUCP-PF-Container.c deleted file mode 100644 index 121932b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUCP-PF-Container.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "OCUCP-PF-Container.h" - -static int -memb_numberOfActive_UEs_constraint_3(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 1 && value <= 65536)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_numberOfActive_UEs_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_numberOfActive_UEs_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 16, -1, 1, 65536 } /* (1..65536,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cu_CP_Resource_Status_3[] = { - { ATF_POINTER, 1, offsetof(struct OCUCP_PF_Container__cu_CP_Resource_Status, numberOfActive_UEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_numberOfActive_UEs_constr_4, &asn_PER_memb_numberOfActive_UEs_constr_4, memb_numberOfActive_UEs_constraint_3 }, - 0, 0, /* No default value */ - "numberOfActive-UEs" - }, -}; -static const int asn_MAP_cu_CP_Resource_Status_oms_3[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_cu_CP_Resource_Status_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_cu_CP_Resource_Status_tag2el_3[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* numberOfActive-UEs */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_cu_CP_Resource_Status_specs_3 = { - sizeof(struct OCUCP_PF_Container__cu_CP_Resource_Status), - offsetof(struct OCUCP_PF_Container__cu_CP_Resource_Status, _asn_ctx), - asn_MAP_cu_CP_Resource_Status_tag2el_3, - 1, /* Count of tags in the map */ - asn_MAP_cu_CP_Resource_Status_oms_3, /* Optional members */ - 1, 0, /* Root/Additions */ - -1, /* First extension addition */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cu_CP_Resource_Status_3 = { - "cu-CP-Resource-Status", - "cu-CP-Resource-Status", - &asn_OP_SEQUENCE, - asn_DEF_cu_CP_Resource_Status_tags_3, - sizeof(asn_DEF_cu_CP_Resource_Status_tags_3) - /sizeof(asn_DEF_cu_CP_Resource_Status_tags_3[0]) - 1, /* 1 */ - asn_DEF_cu_CP_Resource_Status_tags_3, /* Same as above */ - sizeof(asn_DEF_cu_CP_Resource_Status_tags_3) - /sizeof(asn_DEF_cu_CP_Resource_Status_tags_3[0]), /* 2 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_cu_CP_Resource_Status_3, - 1, /* Elements count */ - &asn_SPC_cu_CP_Resource_Status_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_OCUCP_PF_Container_1[] = { - { ATF_POINTER, 1, offsetof(struct OCUCP_PF_Container, gNB_CU_CP_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_CP_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-CP-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct OCUCP_PF_Container, cu_CP_Resource_Status), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_cu_CP_Resource_Status_3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cu-CP-Resource-Status" - }, -}; -static const int asn_MAP_OCUCP_PF_Container_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_OCUCP_PF_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_OCUCP_PF_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-CP-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cu-CP-Resource-Status */ -}; -asn_SEQUENCE_specifics_t asn_SPC_OCUCP_PF_Container_specs_1 = { - sizeof(struct OCUCP_PF_Container), - offsetof(struct OCUCP_PF_Container, _asn_ctx), - asn_MAP_OCUCP_PF_Container_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_OCUCP_PF_Container_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_OCUCP_PF_Container = { - "OCUCP-PF-Container", - "OCUCP-PF-Container", - &asn_OP_SEQUENCE, - asn_DEF_OCUCP_PF_Container_tags_1, - sizeof(asn_DEF_OCUCP_PF_Container_tags_1) - /sizeof(asn_DEF_OCUCP_PF_Container_tags_1[0]), /* 1 */ - asn_DEF_OCUCP_PF_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_OCUCP_PF_Container_tags_1) - /sizeof(asn_DEF_OCUCP_PF_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_OCUCP_PF_Container_1, - 2, /* Elements count */ - &asn_SPC_OCUCP_PF_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUCP-PF-Container.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUCP-PF-Container.h deleted file mode 100644 index aee0f21..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUCP-PF-Container.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _OCUCP_PF_Container_H_ -#define _OCUCP_PF_Container_H_ - - -#include - -/* Including external dependencies */ -#include "GNB-CU-CP-Name.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* OCUCP-PF-Container */ -typedef struct OCUCP_PF_Container { - GNB_CU_CP_Name_t *gNB_CU_CP_Name; /* OPTIONAL */ - struct OCUCP_PF_Container__cu_CP_Resource_Status { - long *numberOfActive_UEs; /* OPTIONAL */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cu_CP_Resource_Status; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} OCUCP_PF_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_OCUCP_PF_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_OCUCP_PF_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_OCUCP_PF_Container_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _OCUCP_PF_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUUP-PF-Container.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUUP-PF-Container.c deleted file mode 100644 index e1f754e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUUP-PF-Container.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "OCUUP-PF-Container.h" - -static int -memb_pf_ContainerList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 3)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_pf_ContainerList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..3)) */}; -static asn_per_constraints_t asn_PER_type_pf_ContainerList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 2, 2, 1, 3 } /* (SIZE(1..3)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pf_ContainerList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..3)) */}; -static asn_per_constraints_t asn_PER_memb_pf_ContainerList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 2, 2, 1, 3 } /* (SIZE(1..3)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_pf_ContainerList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_PF_ContainerListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_pf_ContainerList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_pf_ContainerList_specs_3 = { - sizeof(struct OCUUP_PF_Container__pf_ContainerList), - offsetof(struct OCUUP_PF_Container__pf_ContainerList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_pf_ContainerList_3 = { - "pf-ContainerList", - "pf-ContainerList", - &asn_OP_SEQUENCE_OF, - asn_DEF_pf_ContainerList_tags_3, - sizeof(asn_DEF_pf_ContainerList_tags_3) - /sizeof(asn_DEF_pf_ContainerList_tags_3[0]) - 1, /* 1 */ - asn_DEF_pf_ContainerList_tags_3, /* Same as above */ - sizeof(asn_DEF_pf_ContainerList_tags_3) - /sizeof(asn_DEF_pf_ContainerList_tags_3[0]), /* 2 */ - { &asn_OER_type_pf_ContainerList_constr_3, &asn_PER_type_pf_ContainerList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_pf_ContainerList_3, - 1, /* Single element */ - &asn_SPC_pf_ContainerList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_OCUUP_PF_Container_1[] = { - { ATF_POINTER, 1, offsetof(struct OCUUP_PF_Container, gNB_CU_UP_Name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-UP-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct OCUUP_PF_Container, pf_ContainerList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_pf_ContainerList_3, - 0, - { &asn_OER_memb_pf_ContainerList_constr_3, &asn_PER_memb_pf_ContainerList_constr_3, memb_pf_ContainerList_constraint_1 }, - 0, 0, /* No default value */ - "pf-ContainerList" - }, -}; -static const int asn_MAP_OCUUP_PF_Container_oms_1[] = { 0 }; -static const ber_tlv_tag_t asn_DEF_OCUUP_PF_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_OCUUP_PF_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-UP-Name */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pf-ContainerList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_OCUUP_PF_Container_specs_1 = { - sizeof(struct OCUUP_PF_Container), - offsetof(struct OCUUP_PF_Container, _asn_ctx), - asn_MAP_OCUUP_PF_Container_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_OCUUP_PF_Container_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_OCUUP_PF_Container = { - "OCUUP-PF-Container", - "OCUUP-PF-Container", - &asn_OP_SEQUENCE, - asn_DEF_OCUUP_PF_Container_tags_1, - sizeof(asn_DEF_OCUUP_PF_Container_tags_1) - /sizeof(asn_DEF_OCUUP_PF_Container_tags_1[0]), /* 1 */ - asn_DEF_OCUUP_PF_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_OCUUP_PF_Container_tags_1) - /sizeof(asn_DEF_OCUUP_PF_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_OCUUP_PF_Container_1, - 2, /* Elements count */ - &asn_SPC_OCUUP_PF_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUUP-PF-Container.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUUP-PF-Container.h deleted file mode 100644 index 9f19985..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OCUUP-PF-Container.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _OCUUP_PF_Container_H_ -#define _OCUUP_PF_Container_H_ - - -#include - -/* Including external dependencies */ -#include "GNB-CU-UP-Name.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PF_ContainerListItem; - -/* OCUUP-PF-Container */ -typedef struct OCUUP_PF_Container { - GNB_CU_UP_Name_t *gNB_CU_UP_Name; /* OPTIONAL */ - struct OCUUP_PF_Container__pf_ContainerList { - A_SEQUENCE_OF(struct PF_ContainerListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } pf_ContainerList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} OCUUP_PF_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_OCUUP_PF_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_OCUUP_PF_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_OCUUP_PF_Container_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PF-ContainerListItem.h" - -#endif /* _OCUUP_PF_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ODU-PF-Container.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ODU-PF-Container.c deleted file mode 100644 index a28d59a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ODU-PF-Container.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "ODU-PF-Container.h" - -static int -memb_cellResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 512)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..512)) */}; -static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CellResourceReportListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = { - sizeof(struct ODU_PF_Container__cellResourceReportList), - offsetof(struct ODU_PF_Container__cellResourceReportList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = { - "cellResourceReportList", - "cellResourceReportList", - &asn_OP_SEQUENCE_OF, - asn_DEF_cellResourceReportList_tags_2, - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */ - asn_DEF_cellResourceReportList_tags_2, /* Same as above */ - sizeof(asn_DEF_cellResourceReportList_tags_2) - /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */ - { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint }, - asn_MBR_cellResourceReportList_2, - 1, /* Single element */ - &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ODU_PF_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ODU_PF_Container, cellResourceReportList), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - 0, - &asn_DEF_cellResourceReportList_2, - 0, - { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 }, - 0, 0, /* No default value */ - "cellResourceReportList" - }, -}; -static const ber_tlv_tag_t asn_DEF_ODU_PF_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ODU_PF_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ODU_PF_Container_specs_1 = { - sizeof(struct ODU_PF_Container), - offsetof(struct ODU_PF_Container, _asn_ctx), - asn_MAP_ODU_PF_Container_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ODU_PF_Container = { - "ODU-PF-Container", - "ODU-PF-Container", - &asn_OP_SEQUENCE, - asn_DEF_ODU_PF_Container_tags_1, - sizeof(asn_DEF_ODU_PF_Container_tags_1) - /sizeof(asn_DEF_ODU_PF_Container_tags_1[0]), /* 1 */ - asn_DEF_ODU_PF_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_ODU_PF_Container_tags_1) - /sizeof(asn_DEF_ODU_PF_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ODU_PF_Container_1, - 1, /* Elements count */ - &asn_SPC_ODU_PF_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ODU-PF-Container.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ODU-PF-Container.h deleted file mode 100644 index 4da50a3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ODU-PF-Container.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _ODU_PF_Container_H_ -#define _ODU_PF_Container_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CellResourceReportListItem; - -/* ODU-PF-Container */ -typedef struct ODU_PF_Container { - struct ODU_PF_Container__cellResourceReportList { - A_SEQUENCE_OF(struct CellResourceReportListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } cellResourceReportList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ODU_PF_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ODU_PF_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_ODU_PF_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_ODU_PF_Container_1[1]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "CellResourceReportListItem.h" - -#endif /* _ODU_PF_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.c deleted file mode 100644 index a54e99c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.c +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include -#include - -asn_TYPE_operation_t asn_OP_OPEN_TYPE = { - OPEN_TYPE_free, - OPEN_TYPE_print, - OPEN_TYPE_compare, - OPEN_TYPE_decode_ber, - OPEN_TYPE_encode_der, - OPEN_TYPE_decode_xer, - OPEN_TYPE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, 0, /* No OER support, use "-gen-OER" to enable */ -#else - OPEN_TYPE_decode_oer, - OPEN_TYPE_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, 0, 0, 0, -#else - OPEN_TYPE_decode_uper, - OPEN_TYPE_encode_uper, - OPEN_TYPE_decode_aper, - OPEN_TYPE_encode_aper, -#endif - 0, /* Random fill is not supported for open type */ - 0 /* Use generic outmost tag fetcher */ -}; - -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -asn_dec_rval_t -OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - ASN_DEBUG("presence %d\n", selected.presence_index); - - rv = selected.type_descriptor->op->ber_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, - elm->tag_mode); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - rv.code = RC_OK; - rv.consumed = consumed_myself; - return rv; - } else { - /* Oh, now a full-blown failure failure */ - } - /* Fall through */ - case RC_FAIL: - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - break; - } - - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; -} - -asn_dec_rval_t -OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - int xer_context = 0; - ssize_t ch_size; - pxer_chunk_type_e ch_type; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - /* - * Confirm wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_OPENING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = selected.type_descriptor->op->xer_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_FAIL: - /* Point to a best position where failure occurred */ - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - /* Wrt. rv.consumed==0: - * In case a genuine RC_WMORE, the whole Open Type decoding - * will have to be restarted. - */ - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; - } - - /* - * Finalize wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_CLOSING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - rv.consumed += consumed_myself; - - return rv; -} - - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.h deleted file mode 100644 index b0d023c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE.h +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE_oer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE_oer.c deleted file mode 100644 index dd2f5c6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/OPEN_TYPE_oer.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -asn_dec_rval_t -OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - asn_TYPE_member_t *elm, const void *ptr, size_t size) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - size_t ot_ret; - - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - ot_ret = oer_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, ptr, size); - switch(ot_ret) { - default: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - rv.code = RC_OK; - rv.consumed = ot_ret; - return rv; - } else { - /* Oh, now a full-blown failure failure */ - } - /* Fall through */ - case -1: - rv.code = RC_FAIL; - rv.consumed = ot_ret; - break; - case 0: - rv.code = RC_WMORE; - rv.consumed = 0; - break; - } - - if(*memb_ptr2) { - const asn_CHOICE_specifics_t *specs = - selected.type_descriptor->specifics; - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_FREE_CONTENTS_ONLY(*selected.type_descriptor, - inner_value); - memset(*memb_ptr2, 0, specs->struct_size); - } - } - return rv; -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-Container.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-Container.c deleted file mode 100644 index ce46255..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-Container.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PF-Container.h" - -static asn_oer_constraints_t asn_OER_type_PF_Container_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_PF_Container_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_PF_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PF_Container, choice.oDU), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ODU_PF_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oDU" - }, - { ATF_NOFLAGS, 0, offsetof(struct PF_Container, choice.oCU_CP), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCUCP_PF_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oCU-CP" - }, - { ATF_NOFLAGS, 0, offsetof(struct PF_Container, choice.oCU_UP), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCUUP_PF_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oCU-UP" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_PF_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oDU */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* oCU-CP */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* oCU-UP */ -}; -asn_CHOICE_specifics_t asn_SPC_PF_Container_specs_1 = { - sizeof(struct PF_Container), - offsetof(struct PF_Container, _asn_ctx), - offsetof(struct PF_Container, present), - sizeof(((struct PF_Container *)0)->present), - asn_MAP_PF_Container_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_PF_Container = { - "PF-Container", - "PF-Container", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_PF_Container_constr_1, &asn_PER_type_PF_Container_constr_1, CHOICE_constraint }, - asn_MBR_PF_Container_1, - 3, /* Elements count */ - &asn_SPC_PF_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-Container.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-Container.h deleted file mode 100644 index 853642a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-Container.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PF_Container_H_ -#define _PF_Container_H_ - - -#include - -/* Including external dependencies */ -#include "ODU-PF-Container.h" -#include "OCUCP-PF-Container.h" -#include "OCUUP-PF-Container.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum PF_Container_PR { - PF_Container_PR_NOTHING, /* No components present */ - PF_Container_PR_oDU, - PF_Container_PR_oCU_CP, - PF_Container_PR_oCU_UP - /* Extensions may appear below */ - -} PF_Container_PR; - -/* PF-Container */ -typedef struct PF_Container { - PF_Container_PR present; - union PF_Container_u { - ODU_PF_Container_t oDU; - OCUCP_PF_Container_t oCU_CP; - OCUUP_PF_Container_t oCU_UP; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PF_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PF_Container; -extern asn_CHOICE_specifics_t asn_SPC_PF_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_PF_Container_1[3]; -extern asn_per_constraints_t asn_PER_type_PF_Container_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _PF_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-ContainerListItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-ContainerListItem.c deleted file mode 100644 index e3aad2c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-ContainerListItem.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PF-ContainerListItem.h" - -asn_TYPE_member_t asn_MBR_PF_ContainerListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PF_ContainerListItem, interface_type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NI_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "interface-type" - }, - { ATF_NOFLAGS, 0, offsetof(struct PF_ContainerListItem, o_CU_UP_PM_Container), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CUUPMeasurement_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "o-CU-UP-PM-Container" - }, -}; -static const ber_tlv_tag_t asn_DEF_PF_ContainerListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PF_ContainerListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* o-CU-UP-PM-Container */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PF_ContainerListItem_specs_1 = { - sizeof(struct PF_ContainerListItem), - offsetof(struct PF_ContainerListItem, _asn_ctx), - asn_MAP_PF_ContainerListItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PF_ContainerListItem = { - "PF-ContainerListItem", - "PF-ContainerListItem", - &asn_OP_SEQUENCE, - asn_DEF_PF_ContainerListItem_tags_1, - sizeof(asn_DEF_PF_ContainerListItem_tags_1) - /sizeof(asn_DEF_PF_ContainerListItem_tags_1[0]), /* 1 */ - asn_DEF_PF_ContainerListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_PF_ContainerListItem_tags_1) - /sizeof(asn_DEF_PF_ContainerListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PF_ContainerListItem_1, - 2, /* Elements count */ - &asn_SPC_PF_ContainerListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-ContainerListItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-ContainerListItem.h deleted file mode 100644 index bc4495e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PF-ContainerListItem.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PF_ContainerListItem_H_ -#define _PF_ContainerListItem_H_ - - -#include - -/* Including external dependencies */ -#include "NI-Type.h" -#include "CUUPMeasurement-Container.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* PF-ContainerListItem */ -typedef struct PF_ContainerListItem { - NI_Type_t interface_type; - CUUPMeasurement_Container_t o_CU_UP_PM_Container; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PF_ContainerListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PF_ContainerListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_PF_ContainerListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_PF_ContainerListItem_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _PF_ContainerListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PLMN-Identity.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PLMN-Identity.c deleted file mode 100644 index ede48d2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PLMN-Identity.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "PLMN-Identity.h" - -int -PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 3)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_PLMN_Identity_constr_1 CC_NOTUSED = { - { 0, 0 }, - 3 /* (SIZE(3..3)) */}; -asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = { - "PLMN-Identity", - "PLMN-Identity", - &asn_OP_OCTET_STRING, - asn_DEF_PLMN_Identity_tags_1, - sizeof(asn_DEF_PLMN_Identity_tags_1) - /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ - asn_DEF_PLMN_Identity_tags_1, /* Same as above */ - sizeof(asn_DEF_PLMN_Identity_tags_1) - /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ - { &asn_OER_type_PLMN_Identity_constr_1, &asn_PER_type_PLMN_Identity_constr_1, PLMN_Identity_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PLMN-Identity.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PLMN-Identity.h deleted file mode 100644 index 111ce90..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PLMN-Identity.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _PLMN_Identity_H_ -#define _PLMN_Identity_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* PLMN-Identity */ -typedef OCTET_STRING_t PLMN_Identity_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity; -asn_struct_free_f PLMN_Identity_free; -asn_struct_print_f PLMN_Identity_print; -asn_constr_check_f PLMN_Identity_constraint; -ber_type_decoder_f PLMN_Identity_decode_ber; -der_type_encoder_f PLMN_Identity_encode_der; -xer_type_decoder_f PLMN_Identity_decode_xer; -xer_type_encoder_f PLMN_Identity_encode_xer; -oer_type_decoder_f PLMN_Identity_decode_oer; -oer_type_encoder_f PLMN_Identity_encode_oer; -per_type_decoder_f PLMN_Identity_decode_uper; -per_type_encoder_f PLMN_Identity_encode_uper; -per_type_decoder_f PLMN_Identity_decode_aper; -per_type_encoder_f PLMN_Identity_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _PLMN_Identity_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PM-Containers-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PM-Containers-List.c deleted file mode 100644 index 326ec75..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PM-Containers-List.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PM-Containers-List.h" - -asn_TYPE_member_t asn_MBR_PM_Containers_List_1[] = { - { ATF_POINTER, 2, offsetof(struct PM_Containers_List, performanceContainer), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_PF_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "performanceContainer" - }, - { ATF_POINTER, 1, offsetof(struct PM_Containers_List, theRANContainer), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RAN_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "theRANContainer" - }, -}; -static const int asn_MAP_PM_Containers_List_oms_1[] = { 0, 1 }; -static const ber_tlv_tag_t asn_DEF_PM_Containers_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PM_Containers_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* performanceContainer */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* theRANContainer */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PM_Containers_List_specs_1 = { - sizeof(struct PM_Containers_List), - offsetof(struct PM_Containers_List, _asn_ctx), - asn_MAP_PM_Containers_List_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_PM_Containers_List_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PM_Containers_List = { - "PM-Containers-List", - "PM-Containers-List", - &asn_OP_SEQUENCE, - asn_DEF_PM_Containers_List_tags_1, - sizeof(asn_DEF_PM_Containers_List_tags_1) - /sizeof(asn_DEF_PM_Containers_List_tags_1[0]), /* 1 */ - asn_DEF_PM_Containers_List_tags_1, /* Same as above */ - sizeof(asn_DEF_PM_Containers_List_tags_1) - /sizeof(asn_DEF_PM_Containers_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PM_Containers_List_1, - 2, /* Elements count */ - &asn_SPC_PM_Containers_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PM-Containers-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PM-Containers-List.h deleted file mode 100644 index 0a99c3b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PM-Containers-List.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PM_Containers_List_H_ -#define _PM_Containers_List_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct PF_Container; -struct RAN_Container; - -/* PM-Containers-List */ -typedef struct PM_Containers_List { - struct PF_Container *performanceContainer; /* OPTIONAL */ - struct RAN_Container *theRANContainer; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PM_Containers_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PM_Containers_List; -extern asn_SEQUENCE_specifics_t asn_SPC_PM_Containers_List_specs_1; -extern asn_TYPE_member_t asn_MBR_PM_Containers_List_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "PF-Container.h" -#include "RAN-Container.h" - -#endif /* _PM_Containers_List_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItem.c deleted file mode 100644 index 1c57dfd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItem.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PerQCIReportListItem.h" - -static int -memb_qci_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_dl_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 100)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ul_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 100)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_qci_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_qci_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { 1, 1 } /* (0..100) */, - -1}; -static asn_per_constraints_t asn_PER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { 1, 1 } /* (0..100) */, - -1}; -static asn_per_constraints_t asn_PER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_PerQCIReportListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PerQCIReportListItem, qci), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_qci_constr_2, &asn_PER_memb_qci_constr_2, memb_qci_constraint_1 }, - 0, 0, /* No default value */ - "qci" - }, - { ATF_POINTER, 2, offsetof(struct PerQCIReportListItem, dl_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_dl_PRBUsage_constr_3, &asn_PER_memb_dl_PRBUsage_constr_3, memb_dl_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "dl-PRBUsage" - }, - { ATF_POINTER, 1, offsetof(struct PerQCIReportListItem, ul_PRBUsage), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ul_PRBUsage_constr_4, &asn_PER_memb_ul_PRBUsage_constr_4, memb_ul_PRBUsage_constraint_1 }, - 0, 0, /* No default value */ - "ul-PRBUsage" - }, -}; -static const int asn_MAP_PerQCIReportListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_PerQCIReportListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PerQCIReportListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* qci */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-PRBUsage */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ul-PRBUsage */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItem_specs_1 = { - sizeof(struct PerQCIReportListItem), - offsetof(struct PerQCIReportListItem, _asn_ctx), - asn_MAP_PerQCIReportListItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_PerQCIReportListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItem = { - "PerQCIReportListItem", - "PerQCIReportListItem", - &asn_OP_SEQUENCE, - asn_DEF_PerQCIReportListItem_tags_1, - sizeof(asn_DEF_PerQCIReportListItem_tags_1) - /sizeof(asn_DEF_PerQCIReportListItem_tags_1[0]), /* 1 */ - asn_DEF_PerQCIReportListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_PerQCIReportListItem_tags_1) - /sizeof(asn_DEF_PerQCIReportListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PerQCIReportListItem_1, - 3, /* Elements count */ - &asn_SPC_PerQCIReportListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItem.h deleted file mode 100644 index 32508ea..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItem.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PerQCIReportListItem_H_ -#define _PerQCIReportListItem_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* PerQCIReportListItem */ -typedef struct PerQCIReportListItem { - long qci; - long *dl_PRBUsage; /* OPTIONAL */ - long *ul_PRBUsage; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PerQCIReportListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_PerQCIReportListItem_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _PerQCIReportListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItemFormat.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItemFormat.c deleted file mode 100644 index 239cbd8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItemFormat.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PerQCIReportListItemFormat.h" - -static int -memb_qci_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_pDCPBytesUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 10000000000)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_qci_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_qci_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_PerQCIReportListItemFormat_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PerQCIReportListItemFormat, qci), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_qci_constr_2, &asn_PER_memb_qci_constr_2, memb_qci_constraint_1 }, - 0, 0, /* No default value */ - "qci" - }, - { ATF_POINTER, 2, offsetof(struct PerQCIReportListItemFormat, pDCPBytesDL), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesDL_constr_3, &asn_PER_memb_pDCPBytesDL_constr_3, memb_pDCPBytesDL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesDL" - }, - { ATF_POINTER, 1, offsetof(struct PerQCIReportListItemFormat, pDCPBytesUL), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_INTEGER, - 0, - { &asn_OER_memb_pDCPBytesUL_constr_4, &asn_PER_memb_pDCPBytesUL_constr_4, memb_pDCPBytesUL_constraint_1 }, - 0, 0, /* No default value */ - "pDCPBytesUL" - }, -}; -static const int asn_MAP_PerQCIReportListItemFormat_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_PerQCIReportListItemFormat_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PerQCIReportListItemFormat_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* qci */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pDCPBytesDL */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pDCPBytesUL */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItemFormat_specs_1 = { - sizeof(struct PerQCIReportListItemFormat), - offsetof(struct PerQCIReportListItemFormat, _asn_ctx), - asn_MAP_PerQCIReportListItemFormat_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_PerQCIReportListItemFormat_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItemFormat = { - "PerQCIReportListItemFormat", - "PerQCIReportListItemFormat", - &asn_OP_SEQUENCE, - asn_DEF_PerQCIReportListItemFormat_tags_1, - sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1) - /sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1[0]), /* 1 */ - asn_DEF_PerQCIReportListItemFormat_tags_1, /* Same as above */ - sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1) - /sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PerQCIReportListItemFormat_1, - 3, /* Elements count */ - &asn_SPC_PerQCIReportListItemFormat_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItemFormat.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItemFormat.h deleted file mode 100644 index 7fb1ecf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PerQCIReportListItemFormat.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PerQCIReportListItemFormat_H_ -#define _PerQCIReportListItemFormat_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* PerQCIReportListItemFormat */ -typedef struct PerQCIReportListItemFormat { - long qci; - INTEGER_t *pDCPBytesDL; /* OPTIONAL */ - INTEGER_t *pDCPBytesUL; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PerQCIReportListItemFormat_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItemFormat; -extern asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItemFormat_specs_1; -extern asn_TYPE_member_t asn_MBR_PerQCIReportListItemFormat_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _PerQCIReportListItemFormat_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.c deleted file mode 100644 index 2126cf5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "PlmnID-List.h" - -asn_TYPE_member_t asn_MBR_PlmnID_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct PlmnID_List, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_POINTER, 2, offsetof(struct PlmnID_List, cu_UP_PM_5GC), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_FGC_CUUP_PM_Format, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cu-UP-PM-5GC" - }, - { ATF_POINTER, 1, offsetof(struct PlmnID_List, cu_UP_PM_EPC), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_EPC_CUUP_PM_Format, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cu-UP-PM-EPC" - }, -}; -static const int asn_MAP_PlmnID_List_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_PlmnID_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_PlmnID_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cu-UP-PM-5GC */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cu-UP-PM-EPC */ -}; -asn_SEQUENCE_specifics_t asn_SPC_PlmnID_List_specs_1 = { - sizeof(struct PlmnID_List), - offsetof(struct PlmnID_List, _asn_ctx), - asn_MAP_PlmnID_List_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_PlmnID_List_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_PlmnID_List = { - "PlmnID-List", - "PlmnID-List", - &asn_OP_SEQUENCE, - asn_DEF_PlmnID_List_tags_1, - sizeof(asn_DEF_PlmnID_List_tags_1) - /sizeof(asn_DEF_PlmnID_List_tags_1[0]), /* 1 */ - asn_DEF_PlmnID_List_tags_1, /* Same as above */ - sizeof(asn_DEF_PlmnID_List_tags_1) - /sizeof(asn_DEF_PlmnID_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_PlmnID_List_1, - 3, /* Elements count */ - &asn_SPC_PlmnID_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.h deleted file mode 100644 index 79d1dd5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PlmnID-List.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _PlmnID_List_H_ -#define _PlmnID_List_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct FGC_CUUP_PM_Format; -struct EPC_CUUP_PM_Format; - -/* PlmnID-List */ -typedef struct PlmnID_List { - PLMN_Identity_t pLMN_Identity; - struct FGC_CUUP_PM_Format *cu_UP_PM_5GC; /* OPTIONAL */ - struct EPC_CUUP_PM_Format *cu_UP_PM_EPC; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} PlmnID_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_PlmnID_List; -extern asn_SEQUENCE_specifics_t asn_SPC_PlmnID_List_specs_1; -extern asn_TYPE_member_t asn_MBR_PlmnID_List_1[3]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "FGC-CUUP-PM-Format.h" -#include "EPC-CUUP-PM-Format.h" - -#endif /* _PlmnID_List_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.c deleted file mode 100644 index b9ee204..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "Presence.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_Presence_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_Presence_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = { - { 0, 8, "optional" }, - { 1, 11, "conditional" }, - { 2, 9, "mandatory" } -}; -static const unsigned int asn_MAP_Presence_enum2value_1[] = { - 1, /* conditional(1) */ - 2, /* mandatory(2) */ - 0 /* optional(0) */ -}; -const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = { - asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_Presence_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_Presence = { - "Presence", - "Presence", - &asn_OP_NativeEnumerated, - asn_DEF_Presence_tags_1, - sizeof(asn_DEF_Presence_tags_1) - /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ - asn_DEF_Presence_tags_1, /* Same as above */ - sizeof(asn_DEF_Presence_tags_1) - /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ - { &asn_OER_type_Presence_constr_1, &asn_PER_type_Presence_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_Presence_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.h deleted file mode 100644 index baf9353..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Presence.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _Presence_H_ -#define _Presence_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum Presence { - Presence_optional = 0, - Presence_conditional = 1, - Presence_mandatory = 2 -} e_Presence; - -/* Presence */ -typedef long Presence_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_Presence_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_Presence; -extern const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1; -asn_struct_free_f Presence_free; -asn_struct_print_f Presence_print; -asn_constr_check_f Presence_constraint; -ber_type_decoder_f Presence_decode_ber; -der_type_encoder_f Presence_encode_der; -xer_type_decoder_f Presence_decode_xer; -xer_type_encoder_f Presence_encode_xer; -oer_type_decoder_f Presence_decode_oer; -oer_type_encoder_f Presence_encode_oer; -per_type_decoder_f Presence_decode_uper; -per_type_encoder_f Presence_encode_uper; -per_type_decoder_f Presence_decode_aper; -per_type_encoder_f Presence_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _Presence_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PrintableString.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PrintableString.c deleted file mode 100644 index 8fc3939..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PrintableString.c +++ /dev/null @@ -1,130 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PrintableString.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PrintableString.h deleted file mode 100644 index 8c2b61a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/PrintableString.h +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProcedureCode.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProcedureCode.c deleted file mode 100644 index 3fa11b8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProcedureCode.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ProcedureCode.h" - -int -ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_ProcedureCode_constr_1 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProcedureCode = { - "ProcedureCode", - "ProcedureCode", - &asn_OP_NativeInteger, - asn_DEF_ProcedureCode_tags_1, - sizeof(asn_DEF_ProcedureCode_tags_1) - /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ - asn_DEF_ProcedureCode_tags_1, /* Same as above */ - sizeof(asn_DEF_ProcedureCode_tags_1) - /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ - { &asn_OER_type_ProcedureCode_constr_1, &asn_PER_type_ProcedureCode_constr_1, ProcedureCode_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProcedureCode.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProcedureCode.h deleted file mode 100644 index 857d458..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProcedureCode.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ProcedureCode_H_ -#define _ProcedureCode_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ProcedureCode */ -typedef long ProcedureCode_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode; -asn_struct_free_f ProcedureCode_free; -asn_struct_print_f ProcedureCode_print; -asn_constr_check_f ProcedureCode_constraint; -ber_type_decoder_f ProcedureCode_decode_ber; -der_type_encoder_f ProcedureCode_encode_der; -xer_type_decoder_f ProcedureCode_decode_xer; -xer_type_encoder_f ProcedureCode_encode_xer; -oer_type_decoder_f ProcedureCode_decode_oer; -oer_type_encoder_f ProcedureCode_encode_oer; -per_type_decoder_f ProcedureCode_decode_uper; -per_type_encoder_f ProcedureCode_encode_uper; -per_type_decoder_f ProcedureCode_decode_aper; -per_type_encoder_f ProcedureCode_encode_aper; -#define ProcedureCode_id_E2setup ((ProcedureCode_t)1) -#define ProcedureCode_id_ErrorIndication ((ProcedureCode_t)2) -#define ProcedureCode_id_Reset ((ProcedureCode_t)3) -#define ProcedureCode_id_RICcontrol ((ProcedureCode_t)4) -#define ProcedureCode_id_RICindication ((ProcedureCode_t)5) -#define ProcedureCode_id_RICserviceQuery ((ProcedureCode_t)6) -#define ProcedureCode_id_RICserviceUpdate ((ProcedureCode_t)7) -#define ProcedureCode_id_RICsubscription ((ProcedureCode_t)8) -#define ProcedureCode_id_RICsubscriptionDelete ((ProcedureCode_t)9) -#define ProcedureCode_id_E2nodeConfigurationUpdate ((ProcedureCode_t)10) -#define ProcedureCode_id_E2connectionUpdate ((ProcedureCode_t)11) -#define ProcedureCode_id_RICsubscriptionDeleteRequired ((ProcedureCode_t)12) - -#ifdef __cplusplus -} -#endif - -#endif /* _ProcedureCode_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Container.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Container.c deleted file mode 100644 index f8c9a79..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Container.c +++ /dev/null @@ -1,1171 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ProtocolIE-Container.h" - -#include "ProtocolIE-Field.h" -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P0_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P0_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P1_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P1_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P2_constr_5 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P2_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P3_constr_7 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P3_constr_7 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P4_constr_9 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P4_constr_9 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P5_constr_11 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P5_constr_11 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P6_constr_13 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P6_constr_13 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P7_constr_15 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P7_constr_15 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P8_constr_17 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P8_constr_17 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P9_constr_19 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P9_constr_19 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P10_constr_21 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P10_constr_21 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P11_constr_23 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P11_constr_23 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P12_constr_25 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P12_constr_25 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P13_constr_27 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P13_constr_27 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P14_constr_29 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P14_constr_29 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P15_constr_31 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P15_constr_31 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P16_constr_33 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P16_constr_33 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P17_constr_35 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P17_constr_35 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P18_constr_37 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P18_constr_37 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P19_constr_39 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P19_constr_39 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P20_constr_41 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P20_constr_41 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P21_constr_43 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P21_constr_43 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P22_constr_45 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P22_constr_45 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P23_constr_47 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P23_constr_47 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P24_constr_49 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P24_constr_49 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P25_constr_51 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P25_constr_51 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_1917P26_constr_53 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..65535)) */}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P26_constr_53 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P0_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionRequest_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P0_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P0_specs_1 = { - sizeof(struct ProtocolIE_Container_1917P0), - offsetof(struct ProtocolIE_Container_1917P0, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P0 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P0_tags_1, - sizeof(asn_DEF_ProtocolIE_Container_1917P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_Container_1917P0_tags_1[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P0_tags_1, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_Container_1917P0_tags_1[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P0_constr_1, &asn_PER_type_ProtocolIE_Container_1917P0_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P0_1, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P0_specs_1 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P1_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionResponse_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P1_tags_3[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P1_specs_3 = { - sizeof(struct ProtocolIE_Container_1917P1), - offsetof(struct ProtocolIE_Container_1917P1, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P1 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P1_tags_3, - sizeof(asn_DEF_ProtocolIE_Container_1917P1_tags_3) - /sizeof(asn_DEF_ProtocolIE_Container_1917P1_tags_3[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P1_tags_3, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P1_tags_3) - /sizeof(asn_DEF_ProtocolIE_Container_1917P1_tags_3[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P1_constr_3, &asn_PER_type_ProtocolIE_Container_1917P1_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P1_3, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P1_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P2_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P2_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P2_specs_5 = { - sizeof(struct ProtocolIE_Container_1917P2), - offsetof(struct ProtocolIE_Container_1917P2, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P2 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P2_tags_5, - sizeof(asn_DEF_ProtocolIE_Container_1917P2_tags_5) - /sizeof(asn_DEF_ProtocolIE_Container_1917P2_tags_5[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P2_tags_5, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P2_tags_5) - /sizeof(asn_DEF_ProtocolIE_Container_1917P2_tags_5[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P2_constr_5, &asn_PER_type_ProtocolIE_Container_1917P2_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P2_5, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P2_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P3_7[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequest_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P3_tags_7[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P3_specs_7 = { - sizeof(struct ProtocolIE_Container_1917P3), - offsetof(struct ProtocolIE_Container_1917P3, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P3 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P3_tags_7, - sizeof(asn_DEF_ProtocolIE_Container_1917P3_tags_7) - /sizeof(asn_DEF_ProtocolIE_Container_1917P3_tags_7[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P3_tags_7, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P3_tags_7) - /sizeof(asn_DEF_ProtocolIE_Container_1917P3_tags_7[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P3_constr_7, &asn_PER_type_ProtocolIE_Container_1917P3_constr_7, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P3_7, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P3_specs_7 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P4_9[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteResponse_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P4_tags_9[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P4_specs_9 = { - sizeof(struct ProtocolIE_Container_1917P4), - offsetof(struct ProtocolIE_Container_1917P4, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P4 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P4_tags_9, - sizeof(asn_DEF_ProtocolIE_Container_1917P4_tags_9) - /sizeof(asn_DEF_ProtocolIE_Container_1917P4_tags_9[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P4_tags_9, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P4_tags_9) - /sizeof(asn_DEF_ProtocolIE_Container_1917P4_tags_9[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P4_constr_9, &asn_PER_type_ProtocolIE_Container_1917P4_constr_9, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P4_9, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P4_specs_9 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P5_11[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P5_tags_11[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P5_specs_11 = { - sizeof(struct ProtocolIE_Container_1917P5), - offsetof(struct ProtocolIE_Container_1917P5, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P5 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P5_tags_11, - sizeof(asn_DEF_ProtocolIE_Container_1917P5_tags_11) - /sizeof(asn_DEF_ProtocolIE_Container_1917P5_tags_11[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P5_tags_11, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P5_tags_11) - /sizeof(asn_DEF_ProtocolIE_Container_1917P5_tags_11[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P5_constr_11, &asn_PER_type_ProtocolIE_Container_1917P5_constr_11, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P5_11, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P5_specs_11 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P6_13[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequired_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P6_tags_13[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P6_specs_13 = { - sizeof(struct ProtocolIE_Container_1917P6), - offsetof(struct ProtocolIE_Container_1917P6, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P6 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P6_tags_13, - sizeof(asn_DEF_ProtocolIE_Container_1917P6_tags_13) - /sizeof(asn_DEF_ProtocolIE_Container_1917P6_tags_13[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P6_tags_13, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P6_tags_13) - /sizeof(asn_DEF_ProtocolIE_Container_1917P6_tags_13[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P6_constr_13, &asn_PER_type_ProtocolIE_Container_1917P6_constr_13, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P6_13, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P6_specs_13 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P7_15[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICindication_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P7_tags_15[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P7_specs_15 = { - sizeof(struct ProtocolIE_Container_1917P7), - offsetof(struct ProtocolIE_Container_1917P7, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P7 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P7_tags_15, - sizeof(asn_DEF_ProtocolIE_Container_1917P7_tags_15) - /sizeof(asn_DEF_ProtocolIE_Container_1917P7_tags_15[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P7_tags_15, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P7_tags_15) - /sizeof(asn_DEF_ProtocolIE_Container_1917P7_tags_15[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P7_constr_15, &asn_PER_type_ProtocolIE_Container_1917P7_constr_15, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P7_15, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P7_specs_15 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P8_17[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolRequest_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P8_tags_17[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P8_specs_17 = { - sizeof(struct ProtocolIE_Container_1917P8), - offsetof(struct ProtocolIE_Container_1917P8, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P8 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P8_tags_17, - sizeof(asn_DEF_ProtocolIE_Container_1917P8_tags_17) - /sizeof(asn_DEF_ProtocolIE_Container_1917P8_tags_17[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P8_tags_17, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P8_tags_17) - /sizeof(asn_DEF_ProtocolIE_Container_1917P8_tags_17[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P8_constr_17, &asn_PER_type_ProtocolIE_Container_1917P8_constr_17, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P8_17, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P8_specs_17 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P9_19[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolAcknowledge_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P9_tags_19[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P9_specs_19 = { - sizeof(struct ProtocolIE_Container_1917P9), - offsetof(struct ProtocolIE_Container_1917P9, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P9 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P9_tags_19, - sizeof(asn_DEF_ProtocolIE_Container_1917P9_tags_19) - /sizeof(asn_DEF_ProtocolIE_Container_1917P9_tags_19[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P9_tags_19, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P9_tags_19) - /sizeof(asn_DEF_ProtocolIE_Container_1917P9_tags_19[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P9_constr_19, &asn_PER_type_ProtocolIE_Container_1917P9_constr_19, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P9_19, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P9_specs_19 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P10_21[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P10_tags_21[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P10_specs_21 = { - sizeof(struct ProtocolIE_Container_1917P10), - offsetof(struct ProtocolIE_Container_1917P10, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P10 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P10_tags_21, - sizeof(asn_DEF_ProtocolIE_Container_1917P10_tags_21) - /sizeof(asn_DEF_ProtocolIE_Container_1917P10_tags_21[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P10_tags_21, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P10_tags_21) - /sizeof(asn_DEF_ProtocolIE_Container_1917P10_tags_21[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P10_constr_21, &asn_PER_type_ProtocolIE_Container_1917P10_constr_21, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P10_21, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P10_specs_21 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P11_23[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ErrorIndication_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P11_tags_23[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P11_specs_23 = { - sizeof(struct ProtocolIE_Container_1917P11), - offsetof(struct ProtocolIE_Container_1917P11, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P11 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P11_tags_23, - sizeof(asn_DEF_ProtocolIE_Container_1917P11_tags_23) - /sizeof(asn_DEF_ProtocolIE_Container_1917P11_tags_23[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P11_tags_23, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P11_tags_23) - /sizeof(asn_DEF_ProtocolIE_Container_1917P11_tags_23[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P11_constr_23, &asn_PER_type_ProtocolIE_Container_1917P11_constr_23, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P11_23, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P11_specs_23 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P12_25[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupRequestIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P12_tags_25[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P12_specs_25 = { - sizeof(struct ProtocolIE_Container_1917P12), - offsetof(struct ProtocolIE_Container_1917P12, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P12 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P12_tags_25, - sizeof(asn_DEF_ProtocolIE_Container_1917P12_tags_25) - /sizeof(asn_DEF_ProtocolIE_Container_1917P12_tags_25[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P12_tags_25, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P12_tags_25) - /sizeof(asn_DEF_ProtocolIE_Container_1917P12_tags_25[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P12_constr_25, &asn_PER_type_ProtocolIE_Container_1917P12_constr_25, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P12_25, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P12_specs_25 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P13_27[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupResponseIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P13_tags_27[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P13_specs_27 = { - sizeof(struct ProtocolIE_Container_1917P13), - offsetof(struct ProtocolIE_Container_1917P13, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P13 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P13_tags_27, - sizeof(asn_DEF_ProtocolIE_Container_1917P13_tags_27) - /sizeof(asn_DEF_ProtocolIE_Container_1917P13_tags_27[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P13_tags_27, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P13_tags_27) - /sizeof(asn_DEF_ProtocolIE_Container_1917P13_tags_27[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P13_constr_27, &asn_PER_type_ProtocolIE_Container_1917P13_constr_27, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P13_27, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P13_specs_27 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P14_29[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupFailureIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P14_tags_29[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P14_specs_29 = { - sizeof(struct ProtocolIE_Container_1917P14), - offsetof(struct ProtocolIE_Container_1917P14, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P14 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P14_tags_29, - sizeof(asn_DEF_ProtocolIE_Container_1917P14_tags_29) - /sizeof(asn_DEF_ProtocolIE_Container_1917P14_tags_29[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P14_tags_29, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P14_tags_29) - /sizeof(asn_DEF_ProtocolIE_Container_1917P14_tags_29[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P14_constr_29, &asn_PER_type_ProtocolIE_Container_1917P14_constr_29, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P14_29, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P14_specs_29 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P15_31[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P15_tags_31[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P15_specs_31 = { - sizeof(struct ProtocolIE_Container_1917P15), - offsetof(struct ProtocolIE_Container_1917P15, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P15 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P15_tags_31, - sizeof(asn_DEF_ProtocolIE_Container_1917P15_tags_31) - /sizeof(asn_DEF_ProtocolIE_Container_1917P15_tags_31[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P15_tags_31, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P15_tags_31) - /sizeof(asn_DEF_ProtocolIE_Container_1917P15_tags_31[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P15_constr_31, &asn_PER_type_ProtocolIE_Container_1917P15_constr_31, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P15_31, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P15_specs_31 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P16_33[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateAck_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P16_tags_33[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P16_specs_33 = { - sizeof(struct ProtocolIE_Container_1917P16), - offsetof(struct ProtocolIE_Container_1917P16, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P16 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P16_tags_33, - sizeof(asn_DEF_ProtocolIE_Container_1917P16_tags_33) - /sizeof(asn_DEF_ProtocolIE_Container_1917P16_tags_33[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P16_tags_33, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P16_tags_33) - /sizeof(asn_DEF_ProtocolIE_Container_1917P16_tags_33[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P16_constr_33, &asn_PER_type_ProtocolIE_Container_1917P16_constr_33, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P16_33, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P16_specs_33 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P17_35[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P17_tags_35[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P17_specs_35 = { - sizeof(struct ProtocolIE_Container_1917P17), - offsetof(struct ProtocolIE_Container_1917P17, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P17 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P17_tags_35, - sizeof(asn_DEF_ProtocolIE_Container_1917P17_tags_35) - /sizeof(asn_DEF_ProtocolIE_Container_1917P17_tags_35[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P17_tags_35, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P17_tags_35) - /sizeof(asn_DEF_ProtocolIE_Container_1917P17_tags_35[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P17_constr_35, &asn_PER_type_ProtocolIE_Container_1917P17_constr_35, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P17_35, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P17_specs_35 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P18_37[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdate_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P18_tags_37[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P18_specs_37 = { - sizeof(struct ProtocolIE_Container_1917P18), - offsetof(struct ProtocolIE_Container_1917P18, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P18 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P18_tags_37, - sizeof(asn_DEF_ProtocolIE_Container_1917P18_tags_37) - /sizeof(asn_DEF_ProtocolIE_Container_1917P18_tags_37[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P18_tags_37, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P18_tags_37) - /sizeof(asn_DEF_ProtocolIE_Container_1917P18_tags_37[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P18_constr_37, &asn_PER_type_ProtocolIE_Container_1917P18_constr_37, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P18_37, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P18_specs_37 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P19_39[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P19_tags_39[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P19_specs_39 = { - sizeof(struct ProtocolIE_Container_1917P19), - offsetof(struct ProtocolIE_Container_1917P19, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P19 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P19_tags_39, - sizeof(asn_DEF_ProtocolIE_Container_1917P19_tags_39) - /sizeof(asn_DEF_ProtocolIE_Container_1917P19_tags_39[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P19_tags_39, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P19_tags_39) - /sizeof(asn_DEF_ProtocolIE_Container_1917P19_tags_39[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P19_constr_39, &asn_PER_type_ProtocolIE_Container_1917P19_constr_39, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P19_39, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P19_specs_39 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P20_41[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdateFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P20_tags_41[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P20_specs_41 = { - sizeof(struct ProtocolIE_Container_1917P20), - offsetof(struct ProtocolIE_Container_1917P20, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P20 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P20_tags_41, - sizeof(asn_DEF_ProtocolIE_Container_1917P20_tags_41) - /sizeof(asn_DEF_ProtocolIE_Container_1917P20_tags_41[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P20_tags_41, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P20_tags_41) - /sizeof(asn_DEF_ProtocolIE_Container_1917P20_tags_41[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P20_constr_41, &asn_PER_type_ProtocolIE_Container_1917P20_constr_41, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P20_41, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P20_specs_41 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P21_43[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetRequestIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P21_tags_43[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P21_specs_43 = { - sizeof(struct ProtocolIE_Container_1917P21), - offsetof(struct ProtocolIE_Container_1917P21, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P21 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P21_tags_43, - sizeof(asn_DEF_ProtocolIE_Container_1917P21_tags_43) - /sizeof(asn_DEF_ProtocolIE_Container_1917P21_tags_43[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P21_tags_43, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P21_tags_43) - /sizeof(asn_DEF_ProtocolIE_Container_1917P21_tags_43[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P21_constr_43, &asn_PER_type_ProtocolIE_Container_1917P21_constr_43, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P21_43, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P21_specs_43 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P22_45[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetResponseIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P22_tags_45[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P22_specs_45 = { - sizeof(struct ProtocolIE_Container_1917P22), - offsetof(struct ProtocolIE_Container_1917P22, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P22 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P22_tags_45, - sizeof(asn_DEF_ProtocolIE_Container_1917P22_tags_45) - /sizeof(asn_DEF_ProtocolIE_Container_1917P22_tags_45[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P22_tags_45, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P22_tags_45) - /sizeof(asn_DEF_ProtocolIE_Container_1917P22_tags_45[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P22_constr_45, &asn_PER_type_ProtocolIE_Container_1917P22_constr_45, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P22_45, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P22_specs_45 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P23_47[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdate_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P23_tags_47[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P23_specs_47 = { - sizeof(struct ProtocolIE_Container_1917P23), - offsetof(struct ProtocolIE_Container_1917P23, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P23 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P23_tags_47, - sizeof(asn_DEF_ProtocolIE_Container_1917P23_tags_47) - /sizeof(asn_DEF_ProtocolIE_Container_1917P23_tags_47[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P23_tags_47, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P23_tags_47) - /sizeof(asn_DEF_ProtocolIE_Container_1917P23_tags_47[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P23_constr_47, &asn_PER_type_ProtocolIE_Container_1917P23_constr_47, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P23_47, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P23_specs_47 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P24_49[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateAcknowledge_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P24_tags_49[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P24_specs_49 = { - sizeof(struct ProtocolIE_Container_1917P24), - offsetof(struct ProtocolIE_Container_1917P24, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P24 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P24_tags_49, - sizeof(asn_DEF_ProtocolIE_Container_1917P24_tags_49) - /sizeof(asn_DEF_ProtocolIE_Container_1917P24_tags_49[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P24_tags_49, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P24_tags_49) - /sizeof(asn_DEF_ProtocolIE_Container_1917P24_tags_49[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P24_constr_49, &asn_PER_type_ProtocolIE_Container_1917P24_constr_49, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P24_49, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P24_specs_49 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P25_51[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P25_tags_51[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P25_specs_51 = { - sizeof(struct ProtocolIE_Container_1917P25), - offsetof(struct ProtocolIE_Container_1917P25, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P25 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P25_tags_51, - sizeof(asn_DEF_ProtocolIE_Container_1917P25_tags_51) - /sizeof(asn_DEF_ProtocolIE_Container_1917P25_tags_51[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P25_tags_51, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P25_tags_51) - /sizeof(asn_DEF_ProtocolIE_Container_1917P25_tags_51[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P25_constr_51, &asn_PER_type_ProtocolIE_Container_1917P25_constr_51, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P25_51, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P25_specs_51 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P26_53[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceQuery_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P26_tags_53[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P26_specs_53 = { - sizeof(struct ProtocolIE_Container_1917P26), - offsetof(struct ProtocolIE_Container_1917P26, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P26 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P26_tags_53, - sizeof(asn_DEF_ProtocolIE_Container_1917P26_tags_53) - /sizeof(asn_DEF_ProtocolIE_Container_1917P26_tags_53[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P26_tags_53, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P26_tags_53) - /sizeof(asn_DEF_ProtocolIE_Container_1917P26_tags_53[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_Container_1917P26_constr_53, &asn_PER_type_ProtocolIE_Container_1917P26_constr_53, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P26_53, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P26_specs_53 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Container.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Container.h deleted file mode 100644 index c456afc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Container.h +++ /dev/null @@ -1,330 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ProtocolIE_Container_H_ -#define _ProtocolIE_Container_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RICsubscriptionRequest_IEs; -struct RICsubscriptionResponse_IEs; -struct RICsubscriptionFailure_IEs; -struct RICsubscriptionDeleteRequest_IEs; -struct RICsubscriptionDeleteResponse_IEs; -struct RICsubscriptionDeleteFailure_IEs; -struct RICsubscriptionDeleteRequired_IEs; -struct RICindication_IEs; -struct RICcontrolRequest_IEs; -struct RICcontrolAcknowledge_IEs; -struct RICcontrolFailure_IEs; -struct ErrorIndication_IEs; -struct E2setupRequestIEs; -struct E2setupResponseIEs; -struct E2setupFailureIEs; -struct E2connectionUpdate_IEs; -struct E2connectionUpdateAck_IEs; -struct E2connectionUpdateFailure_IEs; -struct E2nodeConfigurationUpdate_IEs; -struct E2nodeConfigurationUpdateAcknowledge_IEs; -struct E2nodeConfigurationUpdateFailure_IEs; -struct ResetRequestIEs; -struct ResetResponseIEs; -struct RICserviceUpdate_IEs; -struct RICserviceUpdateAcknowledge_IEs; -struct RICserviceUpdateFailure_IEs; -struct RICserviceQuery_IEs; - -/* ProtocolIE-Container */ -typedef struct ProtocolIE_Container_1917P0 { - A_SEQUENCE_OF(struct RICsubscriptionRequest_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P0_t; -typedef struct ProtocolIE_Container_1917P1 { - A_SEQUENCE_OF(struct RICsubscriptionResponse_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P1_t; -typedef struct ProtocolIE_Container_1917P2 { - A_SEQUENCE_OF(struct RICsubscriptionFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P2_t; -typedef struct ProtocolIE_Container_1917P3 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteRequest_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P3_t; -typedef struct ProtocolIE_Container_1917P4 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteResponse_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P4_t; -typedef struct ProtocolIE_Container_1917P5 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P5_t; -typedef struct ProtocolIE_Container_1917P6 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteRequired_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P6_t; -typedef struct ProtocolIE_Container_1917P7 { - A_SEQUENCE_OF(struct RICindication_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P7_t; -typedef struct ProtocolIE_Container_1917P8 { - A_SEQUENCE_OF(struct RICcontrolRequest_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P8_t; -typedef struct ProtocolIE_Container_1917P9 { - A_SEQUENCE_OF(struct RICcontrolAcknowledge_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P9_t; -typedef struct ProtocolIE_Container_1917P10 { - A_SEQUENCE_OF(struct RICcontrolFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P10_t; -typedef struct ProtocolIE_Container_1917P11 { - A_SEQUENCE_OF(struct ErrorIndication_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P11_t; -typedef struct ProtocolIE_Container_1917P12 { - A_SEQUENCE_OF(struct E2setupRequestIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P12_t; -typedef struct ProtocolIE_Container_1917P13 { - A_SEQUENCE_OF(struct E2setupResponseIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P13_t; -typedef struct ProtocolIE_Container_1917P14 { - A_SEQUENCE_OF(struct E2setupFailureIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P14_t; -typedef struct ProtocolIE_Container_1917P15 { - A_SEQUENCE_OF(struct E2connectionUpdate_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P15_t; -typedef struct ProtocolIE_Container_1917P16 { - A_SEQUENCE_OF(struct E2connectionUpdateAck_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P16_t; -typedef struct ProtocolIE_Container_1917P17 { - A_SEQUENCE_OF(struct E2connectionUpdateFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P17_t; -typedef struct ProtocolIE_Container_1917P18 { - A_SEQUENCE_OF(struct E2nodeConfigurationUpdate_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P18_t; -typedef struct ProtocolIE_Container_1917P19 { - A_SEQUENCE_OF(struct E2nodeConfigurationUpdateAcknowledge_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P19_t; -typedef struct ProtocolIE_Container_1917P20 { - A_SEQUENCE_OF(struct E2nodeConfigurationUpdateFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P20_t; -typedef struct ProtocolIE_Container_1917P21 { - A_SEQUENCE_OF(struct ResetRequestIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P21_t; -typedef struct ProtocolIE_Container_1917P22 { - A_SEQUENCE_OF(struct ResetResponseIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P22_t; -typedef struct ProtocolIE_Container_1917P23 { - A_SEQUENCE_OF(struct RICserviceUpdate_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P23_t; -typedef struct ProtocolIE_Container_1917P24 { - A_SEQUENCE_OF(struct RICserviceUpdateAcknowledge_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P24_t; -typedef struct ProtocolIE_Container_1917P25 { - A_SEQUENCE_OF(struct RICserviceUpdateFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P25_t; -typedef struct ProtocolIE_Container_1917P26 { - A_SEQUENCE_OF(struct RICserviceQuery_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P26_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P0; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P0_specs_1; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P0_1[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P0_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P1; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P1_specs_3; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P1_3[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P1_constr_3; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P2; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P2_specs_5; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P2_5[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P2_constr_5; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P3; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P3_specs_7; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P3_7[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P3_constr_7; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P4; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P4_specs_9; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P4_9[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P4_constr_9; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P5; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P5_specs_11; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P5_11[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P5_constr_11; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P6; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P6_specs_13; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P6_13[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P6_constr_13; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P7; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P7_specs_15; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P7_15[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P7_constr_15; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P8; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P8_specs_17; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P8_17[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P8_constr_17; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P9; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P9_specs_19; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P9_19[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P9_constr_19; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P10; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P10_specs_21; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P10_21[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P10_constr_21; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P11; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P11_specs_23; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P11_23[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P11_constr_23; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P12; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P12_specs_25; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P12_25[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P12_constr_25; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P13; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P13_specs_27; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P13_27[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P13_constr_27; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P14; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P14_specs_29; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P14_29[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P14_constr_29; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P15; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P15_specs_31; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P15_31[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P15_constr_31; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P16; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P16_specs_33; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P16_33[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P16_constr_33; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P17; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P17_specs_35; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P17_35[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P17_constr_35; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P18; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P18_specs_37; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P18_37[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P18_constr_37; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P19; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P19_specs_39; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P19_39[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P19_constr_39; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P20; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P20_specs_41; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P20_41[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P20_constr_41; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P21; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P21_specs_43; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P21_43[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P21_constr_43; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P22; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P22_specs_45; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P22_45[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P22_constr_45; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P23; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P23_specs_47; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P23_47[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P23_constr_47; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P24; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P24_specs_49; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P24_49[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P24_constr_49; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P25; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P25_specs_51; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P25_51[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P25_constr_51; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P26; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P26_specs_53; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P26_53[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P26_constr_53; - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_Container_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.c deleted file mode 100644 index c036a5d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ProtocolIE-ContainerList.h" - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.h deleted file mode 100644 index 83965fb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerList.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ProtocolIE_ContainerList_H_ -#define _ProtocolIE_ContainerList_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ContainerList_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.c deleted file mode 100644 index 3721a2c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ProtocolIE-ContainerPair.h" - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.h deleted file mode 100644 index 3672c67..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPair.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ProtocolIE_ContainerPair_H_ -#define _ProtocolIE_ContainerPair_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ContainerPair_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPairList.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPairList.c deleted file mode 100644 index fd11ba4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPairList.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ProtocolIE-ContainerPairList.h" - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPairList.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPairList.h deleted file mode 100644 index 8ad73e3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ContainerPairList.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ProtocolIE_ContainerPairList_H_ -#define _ProtocolIE_ContainerPairList_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ContainerPairList_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Field.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Field.c deleted file mode 100644 index 7123cc9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Field.c +++ /dev/null @@ -1,12546 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ProtocolIE-Field.h" - -static const long asn_VAL_4_id_RICaction_ToBeSetup_Item = 19; -static const long asn_VAL_4_ignore = 1; -static const long asn_VAL_4_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_RICaction_ToBeSetup_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_ignore }, - { "&Value", aioc__type, &asn_DEF_RICaction_ToBeSetup_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows } -}; -static const long asn_VAL_9_id_RICaction_Admitted_Item = 14; -static const long asn_VAL_9_ignore = 1; -static const long asn_VAL_9_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICaction_Admitted_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_RICaction_Admitted_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, - { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICaction_Admitted_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICaction_Admitted_ItemIEs_1_rows } -}; -static const long asn_VAL_10_id_RICaction_NotAdmitted_Item = 16; -static const long asn_VAL_10_ignore = 1; -static const long asn_VAL_10_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_RICaction_NotAdmitted_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, - { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows } -}; -static const long asn_VAL_24_id_RICsubscription_withCause_Item = 51; -static const long asn_VAL_24_ignore = 1; -static const long asn_VAL_24_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscription_withCause_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_RICsubscription_withCause_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_ignore }, - { "&Value", aioc__type, &asn_DEF_RICsubscription_withCause_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscription_withCause_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICsubscription_withCause_ItemIEs_1_rows } -}; -static const long asn_VAL_71_id_E2connectionUpdate_Item = 43; -static const long asn_VAL_71_ignore = 1; -static const long asn_VAL_71_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdate_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_E2connectionUpdate_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_ignore }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdate_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2connectionUpdate_ItemIEs_1_rows } -}; -static const long asn_VAL_72_id_E2connectionUpdateRemove_Item = 47; -static const long asn_VAL_72_ignore = 1; -static const long asn_VAL_72_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdateRemove_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_E2connectionUpdateRemove_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_ignore }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdateRemove_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdateRemove_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2connectionUpdateRemove_ItemIEs_1_rows } -}; -static const long asn_VAL_76_id_E2connectionSetupFailed_Item = 41; -static const long asn_VAL_76_ignore = 1; -static const long asn_VAL_76_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2connectionSetupFailed_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_76_id_E2connectionSetupFailed_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_76_ignore }, - { "&Value", aioc__type, &asn_DEF_E2connectionSetupFailed_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_76_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2connectionSetupFailed_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2connectionSetupFailed_ItemIEs_1_rows } -}; -static const long asn_VAL_87_id_E2nodeComponentConfigAddition_Item = 51; -static const long asn_VAL_87_reject = 0; -static const long asn_VAL_87_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_87_id_E2nodeComponentConfigAddition_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_87_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAddition_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_87_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1_rows } -}; -static const long asn_VAL_88_id_E2nodeComponentConfigUpdate_Item = 34; -static const long asn_VAL_88_reject = 0; -static const long asn_VAL_88_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_88_id_E2nodeComponentConfigUpdate_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_88_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdate_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_88_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1_rows } -}; -static const long asn_VAL_89_id_E2nodeComponentConfigRemoval_Item = 55; -static const long asn_VAL_89_reject = 0; -static const long asn_VAL_89_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_89_id_E2nodeComponentConfigRemoval_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_89_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemoval_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_89_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1_rows } -}; -static const long asn_VAL_90_id_E2nodeTNLassociationRemoval_Item = 59; -static const long asn_VAL_90_reject = 0; -static const long asn_VAL_90_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_90_id_E2nodeTNLassociationRemoval_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_90_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeTNLassociationRemoval_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_90_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1_rows } -}; -static const long asn_VAL_95_id_E2nodeComponentConfigAdditionAck_Item = 53; -static const long asn_VAL_95_reject = 0; -static const long asn_VAL_95_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_95_id_E2nodeComponentConfigAdditionAck_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_95_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAdditionAck_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_95_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1_rows } -}; -static const long asn_VAL_96_id_E2nodeComponentConfigUpdateAck_Item = 36; -static const long asn_VAL_96_reject = 0; -static const long asn_VAL_96_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_96_id_E2nodeComponentConfigUpdateAck_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_96_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdateAck_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_96_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1_rows } -}; -static const long asn_VAL_97_id_E2nodeComponentConfigRemovalAck_Item = 57; -static const long asn_VAL_97_reject = 0; -static const long asn_VAL_97_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_97_id_E2nodeComponentConfigRemovalAck_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_97_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemovalAck_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_97_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1_rows } -}; -static const long asn_VAL_110_id_RANfunction_Item = 8; -static const long asn_VAL_110_ignore = 1; -static const long asn_VAL_110_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RANfunction_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_110_id_RANfunction_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_110_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunction_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_110_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RANfunction_ItemIEs_1[] = { - { 1, 4, asn_IOS_RANfunction_ItemIEs_1_rows } -}; -static const long asn_VAL_111_id_RANfunctionID_Item = 6; -static const long asn_VAL_111_ignore = 1; -static const long asn_VAL_111_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RANfunctionID_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_111_id_RANfunctionID_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_111_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_111_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RANfunctionID_ItemIEs_1[] = { - { 1, 4, asn_IOS_RANfunctionID_ItemIEs_1_rows } -}; -static const long asn_VAL_115_id_RANfunctionIEcause_Item = 7; -static const long asn_VAL_115_ignore = 1; -static const long asn_VAL_115_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RANfunctionIDcause_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_115_id_RANfunctionIEcause_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_115_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunctionIDcause_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_115_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RANfunctionIDcause_ItemIEs_1[] = { - { 1, 4, asn_IOS_RANfunctionIDcause_ItemIEs_1_rows } -}; -static const long asn_VAL_1_id_RICrequestID = 29; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_1_mandatory = 2; -static const long asn_VAL_2_id_RANfunctionID = 5; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_2_mandatory = 2; -static const long asn_VAL_3_id_RICsubscriptionDetails = 30; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_3_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionRequest_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_RICsubscriptionDetails }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&Value", aioc__type, &asn_DEF_RICsubscriptionDetails }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionRequest_IEs_1[] = { - { 3, 4, asn_IOS_RICsubscriptionRequest_IEs_1_rows } -}; -static const long asn_VAL_5_id_RICrequestID = 29; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_5_mandatory = 2; -static const long asn_VAL_6_id_RANfunctionID = 5; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_6_mandatory = 2; -static const long asn_VAL_7_id_RICactions_Admitted = 17; -static const long asn_VAL_7_reject = 0; -static const long asn_VAL_7_mandatory = 2; -static const long asn_VAL_8_id_RICactions_NotAdmitted = 18; -static const long asn_VAL_8_reject = 0; -static const long asn_VAL_8_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionResponse_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_RICactions_Admitted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, - { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_RICactions_NotAdmitted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, - { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_optional } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionResponse_IEs_1[] = { - { 4, 4, asn_IOS_RICsubscriptionResponse_IEs_1_rows } -}; -static const long asn_VAL_11_id_RICrequestID = 29; -static const long asn_VAL_11_reject = 0; -static const long asn_VAL_11_mandatory = 2; -static const long asn_VAL_12_id_RANfunctionID = 5; -static const long asn_VAL_12_reject = 0; -static const long asn_VAL_12_mandatory = 2; -static const long asn_VAL_13_id_Cause = 1; -static const long asn_VAL_13_reject = 0; -static const long asn_VAL_13_mandatory = 2; -static const long asn_VAL_14_id_CriticalityDiagnostics = 2; -static const long asn_VAL_14_ignore = 1; -static const long asn_VAL_14_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_reject }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_optional } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionFailure_IEs_1[] = { - { 4, 4, asn_IOS_RICsubscriptionFailure_IEs_1_rows } -}; -static const long asn_VAL_15_id_RICrequestID = 29; -static const long asn_VAL_15_reject = 0; -static const long asn_VAL_15_mandatory = 2; -static const long asn_VAL_16_id_RANfunctionID = 5; -static const long asn_VAL_16_reject = 0; -static const long asn_VAL_16_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1[] = { - { 2, 4, asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows } -}; -static const long asn_VAL_17_id_RICrequestID = 29; -static const long asn_VAL_17_reject = 0; -static const long asn_VAL_17_mandatory = 2; -static const long asn_VAL_18_id_RANfunctionID = 5; -static const long asn_VAL_18_reject = 0; -static const long asn_VAL_18_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1[] = { - { 2, 4, asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows } -}; -static const long asn_VAL_19_id_RICrequestID = 29; -static const long asn_VAL_19_reject = 0; -static const long asn_VAL_19_mandatory = 2; -static const long asn_VAL_20_id_RANfunctionID = 5; -static const long asn_VAL_20_reject = 0; -static const long asn_VAL_20_mandatory = 2; -static const long asn_VAL_21_id_Cause = 1; -static const long asn_VAL_21_ignore = 1; -static const long asn_VAL_21_mandatory = 2; -static const long asn_VAL_22_id_CriticalityDiagnostics = 2; -static const long asn_VAL_22_ignore = 1; -static const long asn_VAL_22_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_optional } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1[] = { - { 4, 4, asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows } -}; -static const long asn_VAL_23_id_RICsubscriptionToBeRemoved = 50; -static const long asn_VAL_23_ignore = 1; -static const long asn_VAL_23_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequired_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_RICsubscriptionToBeRemoved }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_ignore }, - { "&Value", aioc__type, &asn_DEF_RICsubscription_List_withCause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequired_IEs_1[] = { - { 1, 4, asn_IOS_RICsubscriptionDeleteRequired_IEs_1_rows } -}; -static const long asn_VAL_25_id_RICrequestID = 29; -static const long asn_VAL_25_reject = 0; -static const long asn_VAL_25_mandatory = 2; -static const long asn_VAL_26_id_RANfunctionID = 5; -static const long asn_VAL_26_reject = 0; -static const long asn_VAL_26_mandatory = 2; -static const long asn_VAL_27_id_RICactionID = 15; -static const long asn_VAL_27_reject = 0; -static const long asn_VAL_27_mandatory = 2; -static const long asn_VAL_28_id_RICindicationSN = 27; -static const long asn_VAL_28_reject = 0; -static const long asn_VAL_28_optional = 0; -static const long asn_VAL_29_id_RICindicationType = 28; -static const long asn_VAL_29_reject = 0; -static const long asn_VAL_29_mandatory = 2; -static const long asn_VAL_30_id_RICindicationHeader = 25; -static const long asn_VAL_30_reject = 0; -static const long asn_VAL_30_mandatory = 2; -static const long asn_VAL_31_id_RICindicationMessage = 26; -static const long asn_VAL_31_reject = 0; -static const long asn_VAL_31_mandatory = 2; -static const long asn_VAL_32_id_RICcallProcessID = 20; -static const long asn_VAL_32_reject = 0; -static const long asn_VAL_32_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICindication_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_RICactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_reject }, - { "&Value", aioc__type, &asn_DEF_RICactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_RICindicationSN }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationSN }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_RICindicationType }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationType }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RICindicationHeader }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationHeader }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_RICindicationMessage }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationMessage }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_optional } -}; -static const asn_ioc_set_t asn_IOS_RICindication_IEs_1[] = { - { 8, 4, asn_IOS_RICindication_IEs_1_rows } -}; -static const long asn_VAL_33_id_RICrequestID = 29; -static const long asn_VAL_33_reject = 0; -static const long asn_VAL_33_mandatory = 2; -static const long asn_VAL_34_id_RANfunctionID = 5; -static const long asn_VAL_34_reject = 0; -static const long asn_VAL_34_mandatory = 2; -static const long asn_VAL_35_id_RICcallProcessID = 20; -static const long asn_VAL_35_reject = 0; -static const long asn_VAL_35_optional = 0; -static const long asn_VAL_36_id_RICcontrolHeader = 22; -static const long asn_VAL_36_reject = 0; -static const long asn_VAL_36_mandatory = 2; -static const long asn_VAL_37_id_RICcontrolMessage = 23; -static const long asn_VAL_37_reject = 0; -static const long asn_VAL_37_mandatory = 2; -static const long asn_VAL_38_id_RICcontrolAckRequest = 21; -static const long asn_VAL_38_reject = 0; -static const long asn_VAL_38_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICcontrolRequest_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_RICcontrolHeader }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolHeader }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_RICcontrolMessage }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolMessage }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RICcontrolAckRequest }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolAckRequest }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_optional } -}; -static const asn_ioc_set_t asn_IOS_RICcontrolRequest_IEs_1[] = { - { 6, 4, asn_IOS_RICcontrolRequest_IEs_1_rows } -}; -static const long asn_VAL_39_id_RICrequestID = 29; -static const long asn_VAL_39_reject = 0; -static const long asn_VAL_39_mandatory = 2; -static const long asn_VAL_40_id_RANfunctionID = 5; -static const long asn_VAL_40_reject = 0; -static const long asn_VAL_40_mandatory = 2; -static const long asn_VAL_41_id_RICcallProcessID = 20; -static const long asn_VAL_41_reject = 0; -static const long asn_VAL_41_optional = 0; -static const long asn_VAL_42_id_RICcontrolOutcome = 32; -static const long asn_VAL_42_reject = 0; -static const long asn_VAL_42_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICcontrolAcknowledge_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RICcontrolOutcome }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_optional } -}; -static const asn_ioc_set_t asn_IOS_RICcontrolAcknowledge_IEs_1[] = { - { 4, 4, asn_IOS_RICcontrolAcknowledge_IEs_1_rows } -}; -static const long asn_VAL_43_id_RICrequestID = 29; -static const long asn_VAL_43_reject = 0; -static const long asn_VAL_43_mandatory = 2; -static const long asn_VAL_44_id_RANfunctionID = 5; -static const long asn_VAL_44_reject = 0; -static const long asn_VAL_44_mandatory = 2; -static const long asn_VAL_45_id_RICcallProcessID = 20; -static const long asn_VAL_45_reject = 0; -static const long asn_VAL_45_optional = 0; -static const long asn_VAL_46_id_Cause = 1; -static const long asn_VAL_46_ignore = 1; -static const long asn_VAL_46_mandatory = 2; -static const long asn_VAL_47_id_RICcontrolOutcome = 32; -static const long asn_VAL_47_reject = 0; -static const long asn_VAL_47_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICcontrolFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_RICcontrolOutcome }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_optional } -}; -static const asn_ioc_set_t asn_IOS_RICcontrolFailure_IEs_1[] = { - { 5, 4, asn_IOS_RICcontrolFailure_IEs_1_rows } -}; -static const long asn_VAL_48_id_TransactionID = 49; -static const long asn_VAL_48_reject = 0; -static const long asn_VAL_48_optional = 0; -static const long asn_VAL_49_id_RICrequestID = 29; -static const long asn_VAL_49_reject = 0; -static const long asn_VAL_49_optional = 0; -static const long asn_VAL_50_id_RANfunctionID = 5; -static const long asn_VAL_50_reject = 0; -static const long asn_VAL_50_optional = 0; -static const long asn_VAL_51_id_Cause = 1; -static const long asn_VAL_51_ignore = 1; -static const long asn_VAL_51_optional = 0; -static const long asn_VAL_52_id_CriticalityDiagnostics = 2; -static const long asn_VAL_52_ignore = 1; -static const long asn_VAL_52_optional = 0; -static const asn_ioc_cell_t asn_IOS_ErrorIndication_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_optional } -}; -static const asn_ioc_set_t asn_IOS_ErrorIndication_IEs_1[] = { - { 5, 4, asn_IOS_ErrorIndication_IEs_1_rows } -}; -static const long asn_VAL_53_id_TransactionID = 49; -static const long asn_VAL_53_reject = 0; -static const long asn_VAL_53_mandatory = 2; -static const long asn_VAL_54_id_GlobalE2node_ID = 3; -static const long asn_VAL_54_reject = 0; -static const long asn_VAL_54_mandatory = 2; -static const long asn_VAL_55_id_RANfunctionsAdded = 10; -static const long asn_VAL_55_reject = 0; -static const long asn_VAL_55_mandatory = 2; -static const long asn_VAL_56_id_E2nodeComponentConfigAddition = 50; -static const long asn_VAL_56_reject = 0; -static const long asn_VAL_56_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2setupRequestIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_GlobalE2node_ID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_reject }, - { "&Value", aioc__type, &asn_DEF_GlobalE2node_ID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_RANfunctionsAdded }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_E2nodeComponentConfigAddition }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAddition_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2setupRequestIEs_1[] = { - { 4, 4, asn_IOS_E2setupRequestIEs_1_rows } -}; -static const long asn_VAL_57_id_TransactionID = 49; -static const long asn_VAL_57_reject = 0; -static const long asn_VAL_57_mandatory = 2; -static const long asn_VAL_58_id_GlobalRIC_ID = 4; -static const long asn_VAL_58_reject = 0; -static const long asn_VAL_58_mandatory = 2; -static const long asn_VAL_59_id_RANfunctionsAccepted = 9; -static const long asn_VAL_59_reject = 0; -static const long asn_VAL_59_optional = 0; -static const long asn_VAL_60_id_RANfunctionsRejected = 13; -static const long asn_VAL_60_reject = 0; -static const long asn_VAL_60_optional = 0; -static const long asn_VAL_61_id_E2nodeComponentConfigAdditionAck = 52; -static const long asn_VAL_61_reject = 0; -static const long asn_VAL_61_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2setupResponseIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_GlobalRIC_ID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_reject }, - { "&Value", aioc__type, &asn_DEF_GlobalRIC_ID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_RANfunctionsAccepted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_RANfunctionsRejected }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_E2nodeComponentConfigAdditionAck }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAdditionAck_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2setupResponseIEs_1[] = { - { 5, 4, asn_IOS_E2setupResponseIEs_1_rows } -}; -static const long asn_VAL_62_id_TransactionID = 49; -static const long asn_VAL_62_reject = 0; -static const long asn_VAL_62_mandatory = 2; -static const long asn_VAL_63_id_Cause = 1; -static const long asn_VAL_63_ignore = 1; -static const long asn_VAL_63_mandatory = 2; -static const long asn_VAL_64_id_TimeToWait = 31; -static const long asn_VAL_64_ignore = 1; -static const long asn_VAL_64_optional = 0; -static const long asn_VAL_65_id_CriticalityDiagnostics = 2; -static const long asn_VAL_65_ignore = 1; -static const long asn_VAL_65_optional = 0; -static const long asn_VAL_66_id_TNLinformation = 48; -static const long asn_VAL_66_ignore = 1; -static const long asn_VAL_66_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2setupFailureIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_TNLinformation }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_ignore }, - { "&Value", aioc__type, &asn_DEF_TNLinformation }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_optional } -}; -static const asn_ioc_set_t asn_IOS_E2setupFailureIEs_1[] = { - { 5, 4, asn_IOS_E2setupFailureIEs_1_rows } -}; -static const long asn_VAL_67_id_TransactionID = 49; -static const long asn_VAL_67_reject = 0; -static const long asn_VAL_67_mandatory = 2; -static const long asn_VAL_68_id_E2connectionUpdateAdd = 44; -static const long asn_VAL_68_reject = 0; -static const long asn_VAL_68_optional = 0; -static const long asn_VAL_69_id_E2connectionUpdateRemove = 46; -static const long asn_VAL_69_reject = 0; -static const long asn_VAL_69_optional = 0; -static const long asn_VAL_70_id_E2connectionUpdateModify = 45; -static const long asn_VAL_70_reject = 0; -static const long asn_VAL_70_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdate_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_E2connectionUpdateAdd }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_E2connectionUpdateRemove }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdateRemove_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_E2connectionUpdateModify }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_optional } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdate_IEs_1[] = { - { 4, 4, asn_IOS_E2connectionUpdate_IEs_1_rows } -}; -static const long asn_VAL_73_id_TransactionID = 49; -static const long asn_VAL_73_reject = 0; -static const long asn_VAL_73_mandatory = 2; -static const long asn_VAL_74_id_E2connectionSetup = 39; -static const long asn_VAL_74_reject = 0; -static const long asn_VAL_74_optional = 0; -static const long asn_VAL_75_id_E2connectionSetupFailed = 40; -static const long asn_VAL_75_reject = 0; -static const long asn_VAL_75_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdateAck_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_73_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_73_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_73_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_74_id_E2connectionSetup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_74_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_74_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_75_id_E2connectionSetupFailed }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_75_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionSetupFailed_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_75_optional } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdateAck_IEs_1[] = { - { 3, 4, asn_IOS_E2connectionUpdateAck_IEs_1_rows } -}; -static const long asn_VAL_77_id_TransactionID = 49; -static const long asn_VAL_77_reject = 0; -static const long asn_VAL_77_mandatory = 2; -static const long asn_VAL_78_id_Cause = 1; -static const long asn_VAL_78_reject = 0; -static const long asn_VAL_78_optional = 0; -static const long asn_VAL_79_id_TimeToWait = 31; -static const long asn_VAL_79_ignore = 1; -static const long asn_VAL_79_optional = 0; -static const long asn_VAL_80_id_CriticalityDiagnostics = 2; -static const long asn_VAL_80_ignore = 1; -static const long asn_VAL_80_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdateFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_77_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_77_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_77_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_78_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_78_reject }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_78_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_79_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_79_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_79_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_80_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_80_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_80_optional } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdateFailure_IEs_1[] = { - { 4, 4, asn_IOS_E2connectionUpdateFailure_IEs_1_rows } -}; -static const long asn_VAL_81_id_TransactionID = 49; -static const long asn_VAL_81_reject = 0; -static const long asn_VAL_81_mandatory = 2; -static const long asn_VAL_82_id_GlobalE2node_ID = 3; -static const long asn_VAL_82_reject = 0; -static const long asn_VAL_82_optional = 0; -static const long asn_VAL_83_id_E2nodeComponentConfigAddition = 50; -static const long asn_VAL_83_reject = 0; -static const long asn_VAL_83_optional = 0; -static const long asn_VAL_84_id_E2nodeComponentConfigUpdate = 33; -static const long asn_VAL_84_reject = 0; -static const long asn_VAL_84_optional = 0; -static const long asn_VAL_85_id_E2nodeComponentConfigRemoval = 54; -static const long asn_VAL_85_reject = 0; -static const long asn_VAL_85_optional = 0; -static const long asn_VAL_86_id_E2nodeTNLassociationRemoval = 58; -static const long asn_VAL_86_reject = 0; -static const long asn_VAL_86_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2nodeConfigurationUpdate_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_81_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_81_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_81_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_82_id_GlobalE2node_ID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_82_reject }, - { "&Value", aioc__type, &asn_DEF_GlobalE2node_ID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_82_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_83_id_E2nodeComponentConfigAddition }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_83_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAddition_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_83_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_84_id_E2nodeComponentConfigUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_84_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdate_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_84_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_85_id_E2nodeComponentConfigRemoval }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_85_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemoval_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_85_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_86_id_E2nodeTNLassociationRemoval }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_86_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeTNLassociationRemoval_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_86_optional } -}; -static const asn_ioc_set_t asn_IOS_E2nodeConfigurationUpdate_IEs_1[] = { - { 6, 4, asn_IOS_E2nodeConfigurationUpdate_IEs_1_rows } -}; -static const long asn_VAL_91_id_TransactionID = 49; -static const long asn_VAL_91_reject = 0; -static const long asn_VAL_91_mandatory = 2; -static const long asn_VAL_92_id_E2nodeComponentConfigAdditionAck = 52; -static const long asn_VAL_92_reject = 0; -static const long asn_VAL_92_optional = 0; -static const long asn_VAL_93_id_E2nodeComponentConfigUpdateAck = 35; -static const long asn_VAL_93_reject = 0; -static const long asn_VAL_93_optional = 0; -static const long asn_VAL_94_id_E2nodeComponentConfigRemovalAck = 56; -static const long asn_VAL_94_reject = 0; -static const long asn_VAL_94_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_91_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_91_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_91_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_92_id_E2nodeComponentConfigAdditionAck }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_92_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAdditionAck_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_92_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_93_id_E2nodeComponentConfigUpdateAck }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_93_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdateAck_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_93_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_94_id_E2nodeComponentConfigRemovalAck }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_94_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemovalAck_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_94_optional } -}; -static const asn_ioc_set_t asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1[] = { - { 4, 4, asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1_rows } -}; -static const long asn_VAL_98_id_TransactionID = 49; -static const long asn_VAL_98_reject = 0; -static const long asn_VAL_98_mandatory = 2; -static const long asn_VAL_99_id_Cause = 1; -static const long asn_VAL_99_ignore = 1; -static const long asn_VAL_99_mandatory = 2; -static const long asn_VAL_100_id_TimeToWait = 31; -static const long asn_VAL_100_ignore = 1; -static const long asn_VAL_100_optional = 0; -static const long asn_VAL_101_id_CriticalityDiagnostics = 2; -static const long asn_VAL_101_ignore = 1; -static const long asn_VAL_101_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_98_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_98_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_98_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_99_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_99_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_99_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_100_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_100_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_100_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_101_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_101_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_101_optional } -}; -static const asn_ioc_set_t asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1[] = { - { 4, 4, asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1_rows } -}; -static const long asn_VAL_102_id_TransactionID = 49; -static const long asn_VAL_102_reject = 0; -static const long asn_VAL_102_mandatory = 2; -static const long asn_VAL_103_id_Cause = 1; -static const long asn_VAL_103_ignore = 1; -static const long asn_VAL_103_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_ResetRequestIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_102_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_102_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_102_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_103_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_103_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_103_mandatory } -}; -static const asn_ioc_set_t asn_IOS_ResetRequestIEs_1[] = { - { 2, 4, asn_IOS_ResetRequestIEs_1_rows } -}; -static const long asn_VAL_104_id_TransactionID = 49; -static const long asn_VAL_104_reject = 0; -static const long asn_VAL_104_mandatory = 2; -static const long asn_VAL_105_id_CriticalityDiagnostics = 2; -static const long asn_VAL_105_ignore = 1; -static const long asn_VAL_105_optional = 0; -static const asn_ioc_cell_t asn_IOS_ResetResponseIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_104_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_104_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_104_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_105_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_105_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_105_optional } -}; -static const asn_ioc_set_t asn_IOS_ResetResponseIEs_1[] = { - { 2, 4, asn_IOS_ResetResponseIEs_1_rows } -}; -static const long asn_VAL_106_id_TransactionID = 49; -static const long asn_VAL_106_reject = 0; -static const long asn_VAL_106_mandatory = 2; -static const long asn_VAL_107_id_RANfunctionsAdded = 10; -static const long asn_VAL_107_reject = 0; -static const long asn_VAL_107_optional = 0; -static const long asn_VAL_108_id_RANfunctionsModified = 12; -static const long asn_VAL_108_reject = 0; -static const long asn_VAL_108_optional = 0; -static const long asn_VAL_109_id_RANfunctionsDeleted = 11; -static const long asn_VAL_109_reject = 0; -static const long asn_VAL_109_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceUpdate_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_106_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_106_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_106_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_107_id_RANfunctionsAdded }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_107_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_107_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_108_id_RANfunctionsModified }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_108_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_108_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_109_id_RANfunctionsDeleted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_109_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_109_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceUpdate_IEs_1[] = { - { 4, 4, asn_IOS_RICserviceUpdate_IEs_1_rows } -}; -static const long asn_VAL_112_id_TransactionID = 49; -static const long asn_VAL_112_reject = 0; -static const long asn_VAL_112_mandatory = 2; -static const long asn_VAL_113_id_RANfunctionsAccepted = 9; -static const long asn_VAL_113_reject = 0; -static const long asn_VAL_113_mandatory = 2; -static const long asn_VAL_114_id_RANfunctionsRejected = 13; -static const long asn_VAL_114_reject = 0; -static const long asn_VAL_114_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_112_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_112_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_112_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_113_id_RANfunctionsAccepted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_113_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_113_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_114_id_RANfunctionsRejected }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_114_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_114_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1[] = { - { 3, 4, asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows } -}; -static const long asn_VAL_116_id_TransactionID = 49; -static const long asn_VAL_116_reject = 0; -static const long asn_VAL_116_mandatory = 2; -static const long asn_VAL_117_id_Cause = 1; -static const long asn_VAL_117_reject = 0; -static const long asn_VAL_117_mandatory = 2; -static const long asn_VAL_118_id_TimeToWait = 31; -static const long asn_VAL_118_ignore = 1; -static const long asn_VAL_118_optional = 0; -static const long asn_VAL_119_id_CriticalityDiagnostics = 2; -static const long asn_VAL_119_ignore = 1; -static const long asn_VAL_119_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceUpdateFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_116_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_116_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_116_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_117_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_117_reject }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_117_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_118_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_118_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_118_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_119_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_119_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_119_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceUpdateFailure_IEs_1[] = { - { 4, 4, asn_IOS_RICserviceUpdateFailure_IEs_1_rows } -}; -static const long asn_VAL_120_id_TransactionID = 49; -static const long asn_VAL_120_reject = 0; -static const long asn_VAL_120_mandatory = 2; -static const long asn_VAL_121_id_RANfunctionsAccepted = 9; -static const long asn_VAL_121_reject = 0; -static const long asn_VAL_121_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceQuery_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_120_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_120_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_120_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_121_id_RANfunctionsAccepted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_121_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_121_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceQuery_IEs_1[] = { - { 2, 4, asn_IOS_RICserviceQuery_IEs_1_rows } -}; -static int -memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICaction_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICaction_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICaction_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICaction_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICaction_NotAdmitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICaction_NotAdmitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscription_withCause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscription_withCause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscription_withCause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscription_withCause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscription_withCause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscription_withCause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdate_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdate_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdateRemove_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateRemove_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateRemove_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdateRemove_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateRemove_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateRemove_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionSetupFailed_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionSetupFailed_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionSetupFailed_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionSetupFailed_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionSetupFailed_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionSetupFailed_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigAddition_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAddition_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigAddition_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAddition_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigUpdate_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigUpdate_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigRemoval_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigRemoval_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeTNLassociationRemoval_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeTNLassociationRemoval_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigAdditionAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigAdditionAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigUpdateAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigUpdateAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigRemovalAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigRemovalAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RANfunction_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RANfunction_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RANfunctionID_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RANfunctionID_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RANfunctionIDcause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RANfunctionIDcause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequired_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequired_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequired_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequired_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICindication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICindication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICcontrolRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICcontrolRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICcontrolAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICcontrolAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICcontrolFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICcontrolFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_ErrorIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_ErrorIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2setupRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2setupRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2setupResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2setupResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2setupFailureIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2setupFailureIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_IEs, id)); - const int indexToPresence[5] = { - E2connectionUpdate_IEs__value_PR_NOTHING, - E2connectionUpdate_IEs__value_PR_TransactionID, - E2connectionUpdate_IEs__value_PR_E2connectionUpdate_List, - E2connectionUpdate_IEs__value_PR_E2connectionUpdateRemove_List, - E2connectionUpdate_IEs__value_PR_E2connectionUpdate_List - }; - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = indexToPresence[presence_index]; - break; - } - } - - return result; -} - -static int -memb_value_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdateAck_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateAck_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateAck_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdateAck_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateAck_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateAck_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_ResetRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_ResetRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_ResetResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_ResetResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); - const int indexToPresence[5] = { - RICserviceUpdate_IEs__value_PR_NOTHING, - RICserviceUpdate_IEs__value_PR_TransactionID, - RICserviceUpdate_IEs__value_PR_RANfunctions_List, - RICserviceUpdate_IEs__value_PR_RANfunctions_List, - RICserviceUpdate_IEs__value_PR_RANfunctionsID_List - }; - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = indexToPresence[presence_index]; - break; - } - } - - return result; -} - -static int -memb_value_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceQuery_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceQuery_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_oer_constraints_t asn_OER_memb_id_constr_2 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_6 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_7 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_8 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_8 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_10 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_11 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_12 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_12 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_14 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_15 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_16 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_16 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_18 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_19 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_20 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_20 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_22 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_23 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_24 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_24 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_26 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_27 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_28 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_28 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_30 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_31 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_32 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_32 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_34 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_35 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_36 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_36 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_38 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_39 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_40 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_40 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_42 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_43 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_44 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_44 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_46 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_47 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_48 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_48 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_50 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_51 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_52 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_52 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_54 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_55 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_56 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_56 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_58 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_59 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_60 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_60 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_62 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_63 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_64 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_64 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_66 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_67 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_68 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_68 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_70 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_71 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_72 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_72 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_74 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_75 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_76 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_76 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_78 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_79 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_80 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_80 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_82 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_83 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_84 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_84 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_86 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_87 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_88 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_88 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_90 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_91 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_92 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_92 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_94 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_95 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_96 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_96 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_98 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_99 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_100 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_100 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_102 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_103 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_104 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_104 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_106 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_106 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_107 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_107 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_108 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_108 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_110 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_110 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_111 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_111 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_112 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_112 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_114 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_114 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_115 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_115 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_116 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_116 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_118 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_118 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_119 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_119 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_120 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_120 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_122 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_122 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_123 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_123 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_124 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_124 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_126 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_126 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_127 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_127 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_128 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_128 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_130 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_130 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_131 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_131 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_132 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_132 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_134 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_134 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_135 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_135 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_136 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_136 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_138 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_138 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_139 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_139 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_140 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_140 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_142 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_142 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_143 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_143 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_144 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_144 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_146 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_146 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_147 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_147 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_148 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_148 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_150 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_150 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_151 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_151 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_152 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_152 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_154 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_154 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_155 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_155 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_156 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_156 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_158 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_158 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_159 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_159 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_160 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_160 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_162 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_162 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_163 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_163 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_164 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_164 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_166 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_166 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_167 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_167 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_168 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_168 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_170 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_170 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_171 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_171 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_172 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_172 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_id_constr_174 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_id_constr_174 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_175 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_175 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_176 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_176 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs__value, choice.RICaction_ToBeSetup_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_ToBeSetup_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-ToBeSetup-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeSetup-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct RICaction_ToBeSetup_ItemIEs__value), - offsetof(struct RICaction_ToBeSetup_ItemIEs__value, _asn_ctx), - offsetof(struct RICaction_ToBeSetup_ItemIEs__value, present), - sizeof(((struct RICaction_ToBeSetup_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_4, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 1, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_2, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICaction_ToBeSetup_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_3, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_RICaction_ToBeSetup_ItemIEs_value_type, - { &asn_OER_memb_value_constr_4, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 = { - sizeof(struct RICaction_ToBeSetup_ItemIEs), - offsetof(struct RICaction_ToBeSetup_ItemIEs, _asn_ctx), - asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs = { - "RICaction-ToBeSetup-ItemIEs", - "RICaction-ToBeSetup-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, - sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ - asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_ToBeSetup_ItemIEs_1, - 3, /* Elements count */ - &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_8[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs__value, choice.RICaction_Admitted_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_Admitted_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-Admitted-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_8[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-Admitted-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_8 = { - sizeof(struct RICaction_Admitted_ItemIEs__value), - offsetof(struct RICaction_Admitted_ItemIEs__value, _asn_ctx), - offsetof(struct RICaction_Admitted_ItemIEs__value, present), - sizeof(((struct RICaction_Admitted_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_8, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_8 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_8, - 1, /* Elements count */ - &asn_SPC_value_specs_8 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_6, &asn_PER_memb_id_constr_6, memb_id_constraint_5 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICaction_Admitted_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_7, &asn_PER_memb_criticality_constr_7, memb_criticality_constraint_5 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_8, - select_RICaction_Admitted_ItemIEs_value_type, - { &asn_OER_memb_value_constr_8, &asn_PER_memb_value_constr_8, memb_value_constraint_5 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_ItemIEs_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5 = { - sizeof(struct RICaction_Admitted_ItemIEs), - offsetof(struct RICaction_Admitted_ItemIEs, _asn_ctx), - asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs = { - "RICaction-Admitted-ItemIEs", - "RICaction-Admitted-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_Admitted_ItemIEs_tags_5, - sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) - /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ - asn_DEF_RICaction_Admitted_ItemIEs_tags_5, /* Same as above */ - sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) - /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_Admitted_ItemIEs_5, - 3, /* Elements count */ - &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_12[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs__value, choice.RICaction_NotAdmitted_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_NotAdmitted_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-NotAdmitted-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_12[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-NotAdmitted-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_12 = { - sizeof(struct RICaction_NotAdmitted_ItemIEs__value), - offsetof(struct RICaction_NotAdmitted_ItemIEs__value, _asn_ctx), - offsetof(struct RICaction_NotAdmitted_ItemIEs__value, present), - sizeof(((struct RICaction_NotAdmitted_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_12, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_12 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_12, - 1, /* Elements count */ - &asn_SPC_value_specs_12 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_10, &asn_PER_memb_id_constr_10, memb_id_constraint_9 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICaction_NotAdmitted_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_11, &asn_PER_memb_criticality_constr_11, memb_criticality_constraint_9 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_12, - select_RICaction_NotAdmitted_ItemIEs_value_type, - { &asn_OER_memb_value_constr_12, &asn_PER_memb_value_constr_12, memb_value_constraint_9 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 = { - sizeof(struct RICaction_NotAdmitted_ItemIEs), - offsetof(struct RICaction_NotAdmitted_ItemIEs, _asn_ctx), - asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs = { - "RICaction-NotAdmitted-ItemIEs", - "RICaction-NotAdmitted-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, - sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) - /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ - asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, /* Same as above */ - sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) - /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_NotAdmitted_ItemIEs_9, - 3, /* Elements count */ - &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_16[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs__value, choice.RICsubscription_withCause_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscription_withCause_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscription-withCause-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_16[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICsubscription-withCause-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_16 = { - sizeof(struct RICsubscription_withCause_ItemIEs__value), - offsetof(struct RICsubscription_withCause_ItemIEs__value, _asn_ctx), - offsetof(struct RICsubscription_withCause_ItemIEs__value, present), - sizeof(((struct RICsubscription_withCause_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_16, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_16 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_16, - 1, /* Elements count */ - &asn_SPC_value_specs_16 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscription_withCause_ItemIEs_13[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_14, &asn_PER_memb_id_constr_14, memb_id_constraint_13 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscription_withCause_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_15, &asn_PER_memb_criticality_constr_15, memb_criticality_constraint_13 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_16, - select_RICsubscription_withCause_ItemIEs_value_type, - { &asn_OER_memb_value_constr_16, &asn_PER_memb_value_constr_16, memb_value_constraint_13 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscription_withCause_ItemIEs_tags_13[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscription_withCause_ItemIEs_tag2el_13[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_ItemIEs_specs_13 = { - sizeof(struct RICsubscription_withCause_ItemIEs), - offsetof(struct RICsubscription_withCause_ItemIEs, _asn_ctx), - asn_MAP_RICsubscription_withCause_ItemIEs_tag2el_13, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_ItemIEs = { - "RICsubscription-withCause-ItemIEs", - "RICsubscription-withCause-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscription_withCause_ItemIEs_tags_13, - sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13) - /sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13[0]), /* 1 */ - asn_DEF_RICsubscription_withCause_ItemIEs_tags_13, /* Same as above */ - sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13) - /sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscription_withCause_ItemIEs_13, - 3, /* Elements count */ - &asn_SPC_RICsubscription_withCause_ItemIEs_specs_13 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_20[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs__value, choice.E2connectionUpdate_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdate-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_20[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2connectionUpdate-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_20 = { - sizeof(struct E2connectionUpdate_ItemIEs__value), - offsetof(struct E2connectionUpdate_ItemIEs__value, _asn_ctx), - offsetof(struct E2connectionUpdate_ItemIEs__value, present), - sizeof(((struct E2connectionUpdate_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_20, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_20 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_20, - 1, /* Elements count */ - &asn_SPC_value_specs_20 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdate_ItemIEs_17[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_18, &asn_PER_memb_id_constr_18, memb_id_constraint_17 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdate_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_19, &asn_PER_memb_criticality_constr_19, memb_criticality_constraint_17 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_20, - select_E2connectionUpdate_ItemIEs_value_type, - { &asn_OER_memb_value_constr_20, &asn_PER_memb_value_constr_20, memb_value_constraint_17 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_ItemIEs_tags_17[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_ItemIEs_tag2el_17[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_ItemIEs_specs_17 = { - sizeof(struct E2connectionUpdate_ItemIEs), - offsetof(struct E2connectionUpdate_ItemIEs, _asn_ctx), - asn_MAP_E2connectionUpdate_ItemIEs_tag2el_17, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_ItemIEs = { - "E2connectionUpdate-ItemIEs", - "E2connectionUpdate-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdate_ItemIEs_tags_17, - sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_17) - /sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_17[0]), /* 1 */ - asn_DEF_E2connectionUpdate_ItemIEs_tags_17, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_17) - /sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_17[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_ItemIEs_17, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdate_ItemIEs_specs_17 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_24[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs__value, choice.E2connectionUpdateRemove_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateRemove_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdateRemove-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_24[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2connectionUpdateRemove-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_24 = { - sizeof(struct E2connectionUpdateRemove_ItemIEs__value), - offsetof(struct E2connectionUpdateRemove_ItemIEs__value, _asn_ctx), - offsetof(struct E2connectionUpdateRemove_ItemIEs__value, present), - sizeof(((struct E2connectionUpdateRemove_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_24, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_24 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_24, - 1, /* Elements count */ - &asn_SPC_value_specs_24 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_ItemIEs_21[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_22, &asn_PER_memb_id_constr_22, memb_id_constraint_21 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdateRemove_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_23, &asn_PER_memb_criticality_constr_23, memb_criticality_constraint_21 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_24, - select_E2connectionUpdateRemove_ItemIEs_value_type, - { &asn_OER_memb_value_constr_24, &asn_PER_memb_value_constr_24, memb_value_constraint_21 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateRemove_ItemIEs_tag2el_21[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_21 = { - sizeof(struct E2connectionUpdateRemove_ItemIEs), - offsetof(struct E2connectionUpdateRemove_ItemIEs, _asn_ctx), - asn_MAP_E2connectionUpdateRemove_ItemIEs_tag2el_21, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_ItemIEs = { - "E2connectionUpdateRemove-ItemIEs", - "E2connectionUpdateRemove-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21, - sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21) - /sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21[0]), /* 1 */ - asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21) - /sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateRemove_ItemIEs_21, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_21 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_28[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs__value, choice.E2connectionSetupFailed_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionSetupFailed_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionSetupFailed-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_28[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2connectionSetupFailed-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_28 = { - sizeof(struct E2connectionSetupFailed_ItemIEs__value), - offsetof(struct E2connectionSetupFailed_ItemIEs__value, _asn_ctx), - offsetof(struct E2connectionSetupFailed_ItemIEs__value, present), - sizeof(((struct E2connectionSetupFailed_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_28, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_28 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_28, - 1, /* Elements count */ - &asn_SPC_value_specs_28 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_ItemIEs_25[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_26, &asn_PER_memb_id_constr_26, memb_id_constraint_25 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionSetupFailed_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_27, &asn_PER_memb_criticality_constr_27, memb_criticality_constraint_25 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_28, - select_E2connectionSetupFailed_ItemIEs_value_type, - { &asn_OER_memb_value_constr_28, &asn_PER_memb_value_constr_28, memb_value_constraint_25 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionSetupFailed_ItemIEs_tag2el_25[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_ItemIEs_specs_25 = { - sizeof(struct E2connectionSetupFailed_ItemIEs), - offsetof(struct E2connectionSetupFailed_ItemIEs, _asn_ctx), - asn_MAP_E2connectionSetupFailed_ItemIEs_tag2el_25, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_ItemIEs = { - "E2connectionSetupFailed-ItemIEs", - "E2connectionSetupFailed-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25, - sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25) - /sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25[0]), /* 1 */ - asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25, /* Same as above */ - sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25) - /sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionSetupFailed_ItemIEs_25, - 3, /* Elements count */ - &asn_SPC_E2connectionSetupFailed_ItemIEs_specs_25 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_32[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs__value, choice.E2nodeComponentConfigAddition_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAddition_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAddition-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_32[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigAddition-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_32 = { - sizeof(struct E2nodeComponentConfigAddition_ItemIEs__value), - offsetof(struct E2nodeComponentConfigAddition_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigAddition_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigAddition_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_32, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_32 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_32, - 1, /* Elements count */ - &asn_SPC_value_specs_32 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_ItemIEs_29[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_30, &asn_PER_memb_id_constr_30, memb_id_constraint_29 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigAddition_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_31, &asn_PER_memb_criticality_constr_31, memb_criticality_constraint_29 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_32, - select_E2nodeComponentConfigAddition_ItemIEs_value_type, - { &asn_OER_memb_value_constr_32, &asn_PER_memb_value_constr_32, memb_value_constraint_29 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAddition_ItemIEs_tag2el_29[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_29 = { - sizeof(struct E2nodeComponentConfigAddition_ItemIEs), - offsetof(struct E2nodeComponentConfigAddition_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigAddition_ItemIEs_tag2el_29, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_ItemIEs = { - "E2nodeComponentConfigAddition-ItemIEs", - "E2nodeComponentConfigAddition-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29, - sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAddition_ItemIEs_29, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_29 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_36[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs__value, choice.E2nodeComponentConfigUpdate_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigUpdate_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigUpdate-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_36[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigUpdate-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_36 = { - sizeof(struct E2nodeComponentConfigUpdate_ItemIEs__value), - offsetof(struct E2nodeComponentConfigUpdate_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigUpdate_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigUpdate_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_36, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_36 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_36, - 1, /* Elements count */ - &asn_SPC_value_specs_36 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_33[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_34, &asn_PER_memb_id_constr_34, memb_id_constraint_33 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigUpdate_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_35, &asn_PER_memb_criticality_constr_35, memb_criticality_constraint_33 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_36, - select_E2nodeComponentConfigUpdate_ItemIEs_value_type, - { &asn_OER_memb_value_constr_36, &asn_PER_memb_value_constr_36, memb_value_constraint_33 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdate_ItemIEs_tag2el_33[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_33 = { - sizeof(struct E2nodeComponentConfigUpdate_ItemIEs), - offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigUpdate_ItemIEs_tag2el_33, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_ItemIEs = { - "E2nodeComponentConfigUpdate-ItemIEs", - "E2nodeComponentConfigUpdate-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33, - sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_33, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_33 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_40[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs__value, choice.E2nodeComponentConfigRemoval_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigRemoval_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigRemoval-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_40[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigRemoval-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_40 = { - sizeof(struct E2nodeComponentConfigRemoval_ItemIEs__value), - offsetof(struct E2nodeComponentConfigRemoval_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigRemoval_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigRemoval_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_40, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_40 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_40, - 1, /* Elements count */ - &asn_SPC_value_specs_40 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_37[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_38, &asn_PER_memb_id_constr_38, memb_id_constraint_37 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigRemoval_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_39, &asn_PER_memb_criticality_constr_39, memb_criticality_constraint_37 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_40, - select_E2nodeComponentConfigRemoval_ItemIEs_value_type, - { &asn_OER_memb_value_constr_40, &asn_PER_memb_value_constr_40, memb_value_constraint_37 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemoval_ItemIEs_tag2el_37[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_37 = { - sizeof(struct E2nodeComponentConfigRemoval_ItemIEs), - offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigRemoval_ItemIEs_tag2el_37, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_ItemIEs = { - "E2nodeComponentConfigRemoval-ItemIEs", - "E2nodeComponentConfigRemoval-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37, - sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_37, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_37 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_44[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs__value, choice.E2nodeTNLassociationRemoval_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeTNLassociationRemoval_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeTNLassociationRemoval-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_44[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeTNLassociationRemoval-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_44 = { - sizeof(struct E2nodeTNLassociationRemoval_ItemIEs__value), - offsetof(struct E2nodeTNLassociationRemoval_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeTNLassociationRemoval_ItemIEs__value, present), - sizeof(((struct E2nodeTNLassociationRemoval_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_44, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_44 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_44, - 1, /* Elements count */ - &asn_SPC_value_specs_44 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_41[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_42, &asn_PER_memb_id_constr_42, memb_id_constraint_41 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeTNLassociationRemoval_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_43, &asn_PER_memb_criticality_constr_43, memb_criticality_constraint_41 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_44, - select_E2nodeTNLassociationRemoval_ItemIEs_value_type, - { &asn_OER_memb_value_constr_44, &asn_PER_memb_value_constr_44, memb_value_constraint_41 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeTNLassociationRemoval_ItemIEs_tag2el_41[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_41 = { - sizeof(struct E2nodeTNLassociationRemoval_ItemIEs), - offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, _asn_ctx), - asn_MAP_E2nodeTNLassociationRemoval_ItemIEs_tag2el_41, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_ItemIEs = { - "E2nodeTNLassociationRemoval-ItemIEs", - "E2nodeTNLassociationRemoval-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41, - sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41[0]), /* 1 */ - asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41, /* Same as above */ - sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_41, - 3, /* Elements count */ - &asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_41 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_48[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value, choice.E2nodeComponentConfigAdditionAck_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAdditionAck_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAdditionAck-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_48[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigAdditionAck-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_48 = { - sizeof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value), - offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigAdditionAck_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_48, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_48 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_48, - 1, /* Elements count */ - &asn_SPC_value_specs_48 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_45[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_46, &asn_PER_memb_id_constr_46, memb_id_constraint_45 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigAdditionAck_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_47, &asn_PER_memb_criticality_constr_47, memb_criticality_constraint_45 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_48, - select_E2nodeComponentConfigAdditionAck_ItemIEs_value_type, - { &asn_OER_memb_value_constr_48, &asn_PER_memb_value_constr_48, memb_value_constraint_45 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAdditionAck_ItemIEs_tag2el_45[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_45 = { - sizeof(struct E2nodeComponentConfigAdditionAck_ItemIEs), - offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigAdditionAck_ItemIEs_tag2el_45, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs = { - "E2nodeComponentConfigAdditionAck-ItemIEs", - "E2nodeComponentConfigAdditionAck-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45, - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_45, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_45 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_52[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value, choice.E2nodeComponentConfigUpdateAck_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigUpdateAck_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigUpdateAck-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_52[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigUpdateAck-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_52 = { - sizeof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value), - offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigUpdateAck_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_52, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_52 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_52, - 1, /* Elements count */ - &asn_SPC_value_specs_52 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_49[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_50, &asn_PER_memb_id_constr_50, memb_id_constraint_49 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigUpdateAck_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_51, &asn_PER_memb_criticality_constr_51, memb_criticality_constraint_49 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_52, - select_E2nodeComponentConfigUpdateAck_ItemIEs_value_type, - { &asn_OER_memb_value_constr_52, &asn_PER_memb_value_constr_52, memb_value_constraint_49 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdateAck_ItemIEs_tag2el_49[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_49 = { - sizeof(struct E2nodeComponentConfigUpdateAck_ItemIEs), - offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigUpdateAck_ItemIEs_tag2el_49, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs = { - "E2nodeComponentConfigUpdateAck-ItemIEs", - "E2nodeComponentConfigUpdateAck-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49, - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_49, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_49 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_56[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value, choice.E2nodeComponentConfigRemovalAck_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigRemovalAck_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigRemovalAck-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_56[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigRemovalAck-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_56 = { - sizeof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value), - offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigRemovalAck_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_56, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_56 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_56, - 1, /* Elements count */ - &asn_SPC_value_specs_56 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_53[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_54, &asn_PER_memb_id_constr_54, memb_id_constraint_53 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigRemovalAck_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_55, &asn_PER_memb_criticality_constr_55, memb_criticality_constraint_53 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_56, - select_E2nodeComponentConfigRemovalAck_ItemIEs_value_type, - { &asn_OER_memb_value_constr_56, &asn_PER_memb_value_constr_56, memb_value_constraint_53 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemovalAck_ItemIEs_tag2el_53[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_53 = { - sizeof(struct E2nodeComponentConfigRemovalAck_ItemIEs), - offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigRemovalAck_ItemIEs_tag2el_53, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs = { - "E2nodeComponentConfigRemovalAck-ItemIEs", - "E2nodeComponentConfigRemovalAck-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53, - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_53, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_53 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_60[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs__value, choice.RANfunction_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunction_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunction-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_60[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunction-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_60 = { - sizeof(struct RANfunction_ItemIEs__value), - offsetof(struct RANfunction_ItemIEs__value, _asn_ctx), - offsetof(struct RANfunction_ItemIEs__value, present), - sizeof(((struct RANfunction_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_60, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_60 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_60, - 1, /* Elements count */ - &asn_SPC_value_specs_60 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_57[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_58, &asn_PER_memb_id_constr_58, memb_id_constraint_57 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RANfunction_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_59, &asn_PER_memb_criticality_constr_59, memb_criticality_constraint_57 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_60, - select_RANfunction_ItemIEs_value_type, - { &asn_OER_memb_value_constr_60, &asn_PER_memb_value_constr_60, memb_value_constraint_57 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunction_ItemIEs_tags_57[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunction_ItemIEs_tag2el_57[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_57 = { - sizeof(struct RANfunction_ItemIEs), - offsetof(struct RANfunction_ItemIEs, _asn_ctx), - asn_MAP_RANfunction_ItemIEs_tag2el_57, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs = { - "RANfunction-ItemIEs", - "RANfunction-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RANfunction_ItemIEs_tags_57, - sizeof(asn_DEF_RANfunction_ItemIEs_tags_57) - /sizeof(asn_DEF_RANfunction_ItemIEs_tags_57[0]), /* 1 */ - asn_DEF_RANfunction_ItemIEs_tags_57, /* Same as above */ - sizeof(asn_DEF_RANfunction_ItemIEs_tags_57) - /sizeof(asn_DEF_RANfunction_ItemIEs_tags_57[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_ItemIEs_57, - 3, /* Elements count */ - &asn_SPC_RANfunction_ItemIEs_specs_57 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_64[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs__value, choice.RANfunctionID_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionID_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_64[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionID-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_64 = { - sizeof(struct RANfunctionID_ItemIEs__value), - offsetof(struct RANfunctionID_ItemIEs__value, _asn_ctx), - offsetof(struct RANfunctionID_ItemIEs__value, present), - sizeof(((struct RANfunctionID_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_64, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_64 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_64, - 1, /* Elements count */ - &asn_SPC_value_specs_64 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_61[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_62, &asn_PER_memb_id_constr_62, memb_id_constraint_61 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RANfunctionID_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_63, &asn_PER_memb_criticality_constr_63, memb_criticality_constraint_61 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_64, - select_RANfunctionID_ItemIEs_value_type, - { &asn_OER_memb_value_constr_64, &asn_PER_memb_value_constr_64, memb_value_constraint_61 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionID_ItemIEs_tags_61[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_ItemIEs_tag2el_61[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_61 = { - sizeof(struct RANfunctionID_ItemIEs), - offsetof(struct RANfunctionID_ItemIEs, _asn_ctx), - asn_MAP_RANfunctionID_ItemIEs_tag2el_61, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs = { - "RANfunctionID-ItemIEs", - "RANfunctionID-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionID_ItemIEs_tags_61, - sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_61) - /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_61[0]), /* 1 */ - asn_DEF_RANfunctionID_ItemIEs_tags_61, /* Same as above */ - sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_61) - /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_61[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionID_ItemIEs_61, - 3, /* Elements count */ - &asn_SPC_RANfunctionID_ItemIEs_specs_61 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_68[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs__value, choice.RANfunctionIDcause_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionIDcause_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionIDcause-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_68[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionIDcause-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_68 = { - sizeof(struct RANfunctionIDcause_ItemIEs__value), - offsetof(struct RANfunctionIDcause_ItemIEs__value, _asn_ctx), - offsetof(struct RANfunctionIDcause_ItemIEs__value, present), - sizeof(((struct RANfunctionIDcause_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_68, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_68 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_68, - 1, /* Elements count */ - &asn_SPC_value_specs_68 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_65[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_66, &asn_PER_memb_id_constr_66, memb_id_constraint_65 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RANfunctionIDcause_ItemIEs_criticality_type, - { &asn_OER_memb_criticality_constr_67, &asn_PER_memb_criticality_constr_67, memb_criticality_constraint_65 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_68, - select_RANfunctionIDcause_ItemIEs_value_type, - { &asn_OER_memb_value_constr_68, &asn_PER_memb_value_constr_68, memb_value_constraint_65 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_ItemIEs_tags_65[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_65[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_65 = { - sizeof(struct RANfunctionIDcause_ItemIEs), - offsetof(struct RANfunctionIDcause_ItemIEs, _asn_ctx), - asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_65, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs = { - "RANfunctionIDcause-ItemIEs", - "RANfunctionIDcause-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionIDcause_ItemIEs_tags_65, - sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_65) - /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_65[0]), /* 1 */ - asn_DEF_RANfunctionIDcause_ItemIEs_tags_65, /* Same as above */ - sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_65) - /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_65[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionIDcause_ItemIEs_65, - 3, /* Elements count */ - &asn_SPC_RANfunctionIDcause_ItemIEs_specs_65 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_72[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscriptionDetails), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDetails, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDetails" - }, -}; -static const unsigned asn_MAP_value_to_canonical_72[] = { 1, 0, 2 }; -static const unsigned asn_MAP_value_from_canonical_72[] = { 1, 0, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_72[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RICsubscriptionDetails */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_72 = { - sizeof(struct RICsubscriptionRequest_IEs__value), - offsetof(struct RICsubscriptionRequest_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionRequest_IEs__value, present), - sizeof(((struct RICsubscriptionRequest_IEs__value *)0)->present), - asn_MAP_value_tag2el_72, - 3, /* Count of tags in the map */ - asn_MAP_value_to_canonical_72, - asn_MAP_value_from_canonical_72, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_72 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_72, - 3, /* Elements count */ - &asn_SPC_value_specs_72 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_69[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_70, &asn_PER_memb_id_constr_70, memb_id_constraint_69 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionRequest_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_71, &asn_PER_memb_criticality_constr_71, memb_criticality_constraint_69 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_72, - select_RICsubscriptionRequest_IEs_value_type, - { &asn_OER_memb_value_constr_72, &asn_PER_memb_value_constr_72, memb_value_constraint_69 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_IEs_tags_69[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_IEs_tag2el_69[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_69 = { - sizeof(struct RICsubscriptionRequest_IEs), - offsetof(struct RICsubscriptionRequest_IEs, _asn_ctx), - asn_MAP_RICsubscriptionRequest_IEs_tag2el_69, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs = { - "RICsubscriptionRequest-IEs", - "RICsubscriptionRequest-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionRequest_IEs_tags_69, - sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_69) - /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_69[0]), /* 1 */ - asn_DEF_RICsubscriptionRequest_IEs_tags_69, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_69) - /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_69[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionRequest_IEs_69, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionRequest_IEs_specs_69 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_76[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_Admitted_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_Admitted_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-Admitted-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_NotAdmitted_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_NotAdmitted_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-NotAdmitted-List" - }, -}; -static const unsigned asn_MAP_value_to_canonical_76[] = { 1, 0, 2, 3 }; -static const unsigned asn_MAP_value_from_canonical_76[] = { 1, 0, 2, 3 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_76[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-Admitted-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RICaction-NotAdmitted-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_76 = { - sizeof(struct RICsubscriptionResponse_IEs__value), - offsetof(struct RICsubscriptionResponse_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionResponse_IEs__value, present), - sizeof(((struct RICsubscriptionResponse_IEs__value *)0)->present), - asn_MAP_value_tag2el_76, - 4, /* Count of tags in the map */ - asn_MAP_value_to_canonical_76, - asn_MAP_value_from_canonical_76, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_76 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_76, - 4, /* Elements count */ - &asn_SPC_value_specs_76 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_73[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_74, &asn_PER_memb_id_constr_74, memb_id_constraint_73 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionResponse_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_75, &asn_PER_memb_criticality_constr_75, memb_criticality_constraint_73 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_76, - select_RICsubscriptionResponse_IEs_value_type, - { &asn_OER_memb_value_constr_76, &asn_PER_memb_value_constr_76, memb_value_constraint_73 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_IEs_tags_73[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_IEs_tag2el_73[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_73 = { - sizeof(struct RICsubscriptionResponse_IEs), - offsetof(struct RICsubscriptionResponse_IEs, _asn_ctx), - asn_MAP_RICsubscriptionResponse_IEs_tag2el_73, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs = { - "RICsubscriptionResponse-IEs", - "RICsubscriptionResponse-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionResponse_IEs_tags_73, - sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_73) - /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_73[0]), /* 1 */ - asn_DEF_RICsubscriptionResponse_IEs_tags_73, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_73) - /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_73[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionResponse_IEs_73, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionResponse_IEs_specs_73 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_80[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_80[] = { 1, 0, 3, 2 }; -static const unsigned asn_MAP_value_from_canonical_80[] = { 1, 0, 3, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_80[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_80 = { - sizeof(struct RICsubscriptionFailure_IEs__value), - offsetof(struct RICsubscriptionFailure_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionFailure_IEs__value, present), - sizeof(((struct RICsubscriptionFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_80, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_80, - asn_MAP_value_from_canonical_80, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_80 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_80, - 4, /* Elements count */ - &asn_SPC_value_specs_80 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_77[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_78, &asn_PER_memb_id_constr_78, memb_id_constraint_77 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionFailure_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_79, &asn_PER_memb_criticality_constr_79, memb_criticality_constraint_77 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_80, - select_RICsubscriptionFailure_IEs_value_type, - { &asn_OER_memb_value_constr_80, &asn_PER_memb_value_constr_80, memb_value_constraint_77 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_IEs_tags_77[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_IEs_tag2el_77[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_77 = { - sizeof(struct RICsubscriptionFailure_IEs), - offsetof(struct RICsubscriptionFailure_IEs, _asn_ctx), - asn_MAP_RICsubscriptionFailure_IEs_tag2el_77, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs = { - "RICsubscriptionFailure-IEs", - "RICsubscriptionFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionFailure_IEs_tags_77, - sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_77) - /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_77[0]), /* 1 */ - asn_DEF_RICsubscriptionFailure_IEs_tags_77, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_77) - /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_77[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionFailure_IEs_77, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionFailure_IEs_specs_77 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_84[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, -}; -static const unsigned asn_MAP_value_to_canonical_84[] = { 1, 0 }; -static const unsigned asn_MAP_value_from_canonical_84[] = { 1, 0 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_84[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_84 = { - sizeof(struct RICsubscriptionDeleteRequest_IEs__value), - offsetof(struct RICsubscriptionDeleteRequest_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteRequest_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteRequest_IEs__value *)0)->present), - asn_MAP_value_tag2el_84, - 2, /* Count of tags in the map */ - asn_MAP_value_to_canonical_84, - asn_MAP_value_from_canonical_84, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_84 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_84, - 2, /* Elements count */ - &asn_SPC_value_specs_84 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_81[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_82, &asn_PER_memb_id_constr_82, memb_id_constraint_81 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteRequest_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_83, &asn_PER_memb_criticality_constr_83, memb_criticality_constraint_81 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_84, - select_RICsubscriptionDeleteRequest_IEs_value_type, - { &asn_OER_memb_value_constr_84, &asn_PER_memb_value_constr_84, memb_value_constraint_81 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_81[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_81 = { - sizeof(struct RICsubscriptionDeleteRequest_IEs), - offsetof(struct RICsubscriptionDeleteRequest_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_81, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs = { - "RICsubscriptionDeleteRequest-IEs", - "RICsubscriptionDeleteRequest-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81, - sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequest_IEs_81, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_81 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_88[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, -}; -static const unsigned asn_MAP_value_to_canonical_88[] = { 1, 0 }; -static const unsigned asn_MAP_value_from_canonical_88[] = { 1, 0 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_88[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_88 = { - sizeof(struct RICsubscriptionDeleteResponse_IEs__value), - offsetof(struct RICsubscriptionDeleteResponse_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteResponse_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteResponse_IEs__value *)0)->present), - asn_MAP_value_tag2el_88, - 2, /* Count of tags in the map */ - asn_MAP_value_to_canonical_88, - asn_MAP_value_from_canonical_88, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_88 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_88, - 2, /* Elements count */ - &asn_SPC_value_specs_88 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_85[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_86, &asn_PER_memb_id_constr_86, memb_id_constraint_85 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteResponse_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_87, &asn_PER_memb_criticality_constr_87, memb_criticality_constraint_85 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_88, - select_RICsubscriptionDeleteResponse_IEs_value_type, - { &asn_OER_memb_value_constr_88, &asn_PER_memb_value_constr_88, memb_value_constraint_85 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_85[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_85 = { - sizeof(struct RICsubscriptionDeleteResponse_IEs), - offsetof(struct RICsubscriptionDeleteResponse_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_85, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs = { - "RICsubscriptionDeleteResponse-IEs", - "RICsubscriptionDeleteResponse-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85, - sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteResponse_IEs_85, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_85 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_92[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_92[] = { 1, 0, 3, 2 }; -static const unsigned asn_MAP_value_from_canonical_92[] = { 1, 0, 3, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_92[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_92 = { - sizeof(struct RICsubscriptionDeleteFailure_IEs__value), - offsetof(struct RICsubscriptionDeleteFailure_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteFailure_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_92, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_92, - asn_MAP_value_from_canonical_92, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_92 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_92, - 4, /* Elements count */ - &asn_SPC_value_specs_92 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_89[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_90, &asn_PER_memb_id_constr_90, memb_id_constraint_89 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteFailure_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_91, &asn_PER_memb_criticality_constr_91, memb_criticality_constraint_89 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_92, - select_RICsubscriptionDeleteFailure_IEs_value_type, - { &asn_OER_memb_value_constr_92, &asn_PER_memb_value_constr_92, memb_value_constraint_89 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_89[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_89 = { - sizeof(struct RICsubscriptionDeleteFailure_IEs), - offsetof(struct RICsubscriptionDeleteFailure_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_89, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs = { - "RICsubscriptionDeleteFailure-IEs", - "RICsubscriptionDeleteFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89, - sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteFailure_IEs_89, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_89 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_96[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs__value, choice.RICsubscription_List_withCause), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscription_List_withCause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscription-List-withCause" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_96[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICsubscription-List-withCause */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_96 = { - sizeof(struct RICsubscriptionDeleteRequired_IEs__value), - offsetof(struct RICsubscriptionDeleteRequired_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteRequired_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteRequired_IEs__value *)0)->present), - asn_MAP_value_tag2el_96, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_96 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_96, - 1, /* Elements count */ - &asn_SPC_value_specs_96 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_IEs_93[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_94, &asn_PER_memb_id_constr_94, memb_id_constraint_93 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteRequired_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_95, &asn_PER_memb_criticality_constr_95, memb_criticality_constraint_93 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_96, - select_RICsubscriptionDeleteRequired_IEs_value_type, - { &asn_OER_memb_value_constr_96, &asn_PER_memb_value_constr_96, memb_value_constraint_93 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequired_IEs_tag2el_93[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_IEs_specs_93 = { - sizeof(struct RICsubscriptionDeleteRequired_IEs), - offsetof(struct RICsubscriptionDeleteRequired_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequired_IEs_tag2el_93, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired_IEs = { - "RICsubscriptionDeleteRequired-IEs", - "RICsubscriptionDeleteRequired-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93, - sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93) - /sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93) - /sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequired_IEs_93, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequired_IEs_specs_93 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_100[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationSN), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RICindicationSN, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationSN" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationType), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_RICindicationType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationType" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationHeader), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICindicationHeader, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationHeader" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationMessage), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICindicationMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationMessage" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, -}; -static const unsigned asn_MAP_value_to_canonical_100[] = { 1, 2, 3, 5, 6, 7, 4, 0 }; -static const unsigned asn_MAP_value_from_canonical_100[] = { 7, 0, 1, 2, 6, 3, 4, 5 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_100[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 2 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* RICactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* RICindicationSN */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 2 }, /* RICindicationHeader */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* RICindicationMessage */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* RICindicationType */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_100 = { - sizeof(struct RICindication_IEs__value), - offsetof(struct RICindication_IEs__value, _asn_ctx), - offsetof(struct RICindication_IEs__value, present), - sizeof(((struct RICindication_IEs__value *)0)->present), - asn_MAP_value_tag2el_100, - 8, /* Count of tags in the map */ - asn_MAP_value_to_canonical_100, - asn_MAP_value_from_canonical_100, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_100 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_100, - 8, /* Elements count */ - &asn_SPC_value_specs_100 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICindication_IEs_97[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_98, &asn_PER_memb_id_constr_98, memb_id_constraint_97 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICindication_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_99, &asn_PER_memb_criticality_constr_99, memb_criticality_constraint_97 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_100, - select_RICindication_IEs_value_type, - { &asn_OER_memb_value_constr_100, &asn_PER_memb_value_constr_100, memb_value_constraint_97 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICindication_IEs_tags_97[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICindication_IEs_tag2el_97[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_97 = { - sizeof(struct RICindication_IEs), - offsetof(struct RICindication_IEs, _asn_ctx), - asn_MAP_RICindication_IEs_tag2el_97, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICindication_IEs = { - "RICindication-IEs", - "RICindication-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICindication_IEs_tags_97, - sizeof(asn_DEF_RICindication_IEs_tags_97) - /sizeof(asn_DEF_RICindication_IEs_tags_97[0]), /* 1 */ - asn_DEF_RICindication_IEs_tags_97, /* Same as above */ - sizeof(asn_DEF_RICindication_IEs_tags_97) - /sizeof(asn_DEF_RICindication_IEs_tags_97[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICindication_IEs_97, - 3, /* Elements count */ - &asn_SPC_RICindication_IEs_specs_97 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_104[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolHeader), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolHeader, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolHeader" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolMessage), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolMessage" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolAckRequest), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_RICcontrolAckRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolAckRequest" - }, -}; -static const unsigned asn_MAP_value_to_canonical_104[] = { 1, 2, 3, 4, 5, 0 }; -static const unsigned asn_MAP_value_from_canonical_104[] = { 5, 0, 1, 2, 3, 4 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_104[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 2 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 1 }, /* RICcontrolHeader */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -2, 0 }, /* RICcontrolMessage */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* RICcontrolAckRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_104 = { - sizeof(struct RICcontrolRequest_IEs__value), - offsetof(struct RICcontrolRequest_IEs__value, _asn_ctx), - offsetof(struct RICcontrolRequest_IEs__value, present), - sizeof(((struct RICcontrolRequest_IEs__value *)0)->present), - asn_MAP_value_tag2el_104, - 6, /* Count of tags in the map */ - asn_MAP_value_to_canonical_104, - asn_MAP_value_from_canonical_104, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_104 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_104, - 6, /* Elements count */ - &asn_SPC_value_specs_104 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_101[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_102, &asn_PER_memb_id_constr_102, memb_id_constraint_101 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICcontrolRequest_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_103, &asn_PER_memb_criticality_constr_103, memb_criticality_constraint_101 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_104, - select_RICcontrolRequest_IEs_value_type, - { &asn_OER_memb_value_constr_104, &asn_PER_memb_value_constr_104, memb_value_constraint_101 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_IEs_tags_101[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_IEs_tag2el_101[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_101 = { - sizeof(struct RICcontrolRequest_IEs), - offsetof(struct RICcontrolRequest_IEs, _asn_ctx), - asn_MAP_RICcontrolRequest_IEs_tag2el_101, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs = { - "RICcontrolRequest-IEs", - "RICcontrolRequest-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolRequest_IEs_tags_101, - sizeof(asn_DEF_RICcontrolRequest_IEs_tags_101) - /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_101[0]), /* 1 */ - asn_DEF_RICcontrolRequest_IEs_tags_101, /* Same as above */ - sizeof(asn_DEF_RICcontrolRequest_IEs_tags_101) - /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_101[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolRequest_IEs_101, - 3, /* Elements count */ - &asn_SPC_RICcontrolRequest_IEs_specs_101 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_108[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolOutcome), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolOutcome" - }, -}; -static const unsigned asn_MAP_value_to_canonical_108[] = { 1, 2, 3, 0 }; -static const unsigned asn_MAP_value_from_canonical_108[] = { 3, 0, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_108[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 0 }, /* RICcontrolOutcome */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_108 = { - sizeof(struct RICcontrolAcknowledge_IEs__value), - offsetof(struct RICcontrolAcknowledge_IEs__value, _asn_ctx), - offsetof(struct RICcontrolAcknowledge_IEs__value, present), - sizeof(((struct RICcontrolAcknowledge_IEs__value *)0)->present), - asn_MAP_value_tag2el_108, - 4, /* Count of tags in the map */ - asn_MAP_value_to_canonical_108, - asn_MAP_value_from_canonical_108, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_108 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_108, - 4, /* Elements count */ - &asn_SPC_value_specs_108 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_105[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_106, &asn_PER_memb_id_constr_106, memb_id_constraint_105 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICcontrolAcknowledge_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_107, &asn_PER_memb_criticality_constr_107, memb_criticality_constraint_105 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_108, - select_RICcontrolAcknowledge_IEs_value_type, - { &asn_OER_memb_value_constr_108, &asn_PER_memb_value_constr_108, memb_value_constraint_105 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_IEs_tags_105[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_IEs_tag2el_105[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_105 = { - sizeof(struct RICcontrolAcknowledge_IEs), - offsetof(struct RICcontrolAcknowledge_IEs, _asn_ctx), - asn_MAP_RICcontrolAcknowledge_IEs_tag2el_105, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs = { - "RICcontrolAcknowledge-IEs", - "RICcontrolAcknowledge-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolAcknowledge_IEs_tags_105, - sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_105) - /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_105[0]), /* 1 */ - asn_DEF_RICcontrolAcknowledge_IEs_tags_105, /* Same as above */ - sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_105) - /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_105[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolAcknowledge_IEs_105, - 3, /* Elements count */ - &asn_SPC_RICcontrolAcknowledge_IEs_specs_105 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_112[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcontrolOutcome), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolOutcome" - }, -}; -static const unsigned asn_MAP_value_to_canonical_112[] = { 1, 2, 4, 0, 3 }; -static const unsigned asn_MAP_value_from_canonical_112[] = { 3, 0, 1, 4, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_112[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICcontrolOutcome */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* RICrequestID */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 3, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_112 = { - sizeof(struct RICcontrolFailure_IEs__value), - offsetof(struct RICcontrolFailure_IEs__value, _asn_ctx), - offsetof(struct RICcontrolFailure_IEs__value, present), - sizeof(((struct RICcontrolFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_112, - 10, /* Count of tags in the map */ - asn_MAP_value_to_canonical_112, - asn_MAP_value_from_canonical_112, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_112 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_112, - 5, /* Elements count */ - &asn_SPC_value_specs_112 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_109[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_110, &asn_PER_memb_id_constr_110, memb_id_constraint_109 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICcontrolFailure_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_111, &asn_PER_memb_criticality_constr_111, memb_criticality_constraint_109 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_112, - select_RICcontrolFailure_IEs_value_type, - { &asn_OER_memb_value_constr_112, &asn_PER_memb_value_constr_112, memb_value_constraint_109 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_IEs_tags_109[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_IEs_tag2el_109[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_109 = { - sizeof(struct RICcontrolFailure_IEs), - offsetof(struct RICcontrolFailure_IEs, _asn_ctx), - asn_MAP_RICcontrolFailure_IEs_tag2el_109, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs = { - "RICcontrolFailure-IEs", - "RICcontrolFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolFailure_IEs_tags_109, - sizeof(asn_DEF_RICcontrolFailure_IEs_tags_109) - /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_109[0]), /* 1 */ - asn_DEF_RICcontrolFailure_IEs_tags_109, /* Same as above */ - sizeof(asn_DEF_RICcontrolFailure_IEs_tags_109) - /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_109[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolFailure_IEs_109, - 3, /* Elements count */ - &asn_SPC_RICcontrolFailure_IEs_specs_109 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_116[] = { - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_116[] = { 0, 2, 1, 4, 3 }; -static const unsigned asn_MAP_value_from_canonical_116[] = { 0, 2, 1, 4, 3 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_116[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 3, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_116 = { - sizeof(struct ErrorIndication_IEs__value), - offsetof(struct ErrorIndication_IEs__value, _asn_ctx), - offsetof(struct ErrorIndication_IEs__value, present), - sizeof(((struct ErrorIndication_IEs__value *)0)->present), - asn_MAP_value_tag2el_116, - 10, /* Count of tags in the map */ - asn_MAP_value_to_canonical_116, - asn_MAP_value_from_canonical_116, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_116 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_116, - 5, /* Elements count */ - &asn_SPC_value_specs_116 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_113[] = { - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_114, &asn_PER_memb_id_constr_114, memb_id_constraint_113 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_ErrorIndication_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_115, &asn_PER_memb_criticality_constr_115, memb_criticality_constraint_113 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_116, - select_ErrorIndication_IEs_value_type, - { &asn_OER_memb_value_constr_116, &asn_PER_memb_value_constr_116, memb_value_constraint_113 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_ErrorIndication_IEs_tags_113[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_IEs_tag2el_113[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_113 = { - sizeof(struct ErrorIndication_IEs), - offsetof(struct ErrorIndication_IEs, _asn_ctx), - asn_MAP_ErrorIndication_IEs_tag2el_113, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs = { - "ErrorIndication-IEs", - "ErrorIndication-IEs", - &asn_OP_SEQUENCE, - asn_DEF_ErrorIndication_IEs_tags_113, - sizeof(asn_DEF_ErrorIndication_IEs_tags_113) - /sizeof(asn_DEF_ErrorIndication_IEs_tags_113[0]), /* 1 */ - asn_DEF_ErrorIndication_IEs_tags_113, /* Same as above */ - sizeof(asn_DEF_ErrorIndication_IEs_tags_113) - /sizeof(asn_DEF_ErrorIndication_IEs_tags_113[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ErrorIndication_IEs_113, - 3, /* Elements count */ - &asn_SPC_ErrorIndication_IEs_specs_113 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_120[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.GlobalE2node_ID), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_GlobalE2node_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "GlobalE2node-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.RANfunctions_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctions_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctions-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.E2nodeComponentConfigAddition_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAddition_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAddition-List" - }, -}; -static const unsigned asn_MAP_value_to_canonical_120[] = { 0, 2, 3, 1 }; -static const unsigned asn_MAP_value_from_canonical_120[] = { 0, 3, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_120[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* RANfunctions-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* E2nodeComponentConfigAddition-List */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* eNB */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_120 = { - sizeof(struct E2setupRequestIEs__value), - offsetof(struct E2setupRequestIEs__value, _asn_ctx), - offsetof(struct E2setupRequestIEs__value, present), - sizeof(((struct E2setupRequestIEs__value *)0)->present), - asn_MAP_value_tag2el_120, - 7, /* Count of tags in the map */ - asn_MAP_value_to_canonical_120, - asn_MAP_value_from_canonical_120, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_120 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_120, - 4, /* Elements count */ - &asn_SPC_value_specs_120 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2setupRequestIEs_117[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_118, &asn_PER_memb_id_constr_118, memb_id_constraint_117 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2setupRequestIEs_criticality_type, - { &asn_OER_memb_criticality_constr_119, &asn_PER_memb_criticality_constr_119, memb_criticality_constraint_117 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_120, - select_E2setupRequestIEs_value_type, - { &asn_OER_memb_value_constr_120, &asn_PER_memb_value_constr_120, memb_value_constraint_117 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupRequestIEs_tags_117[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupRequestIEs_tag2el_117[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_117 = { - sizeof(struct E2setupRequestIEs), - offsetof(struct E2setupRequestIEs, _asn_ctx), - asn_MAP_E2setupRequestIEs_tag2el_117, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs = { - "E2setupRequestIEs", - "E2setupRequestIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2setupRequestIEs_tags_117, - sizeof(asn_DEF_E2setupRequestIEs_tags_117) - /sizeof(asn_DEF_E2setupRequestIEs_tags_117[0]), /* 1 */ - asn_DEF_E2setupRequestIEs_tags_117, /* Same as above */ - sizeof(asn_DEF_E2setupRequestIEs_tags_117) - /sizeof(asn_DEF_E2setupRequestIEs_tags_117[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupRequestIEs_117, - 3, /* Elements count */ - &asn_SPC_E2setupRequestIEs_specs_117 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_124[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.GlobalRIC_ID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_GlobalRIC_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "GlobalRIC-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsIDcause_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsIDcause_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsIDcause-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.E2nodeComponentConfigAdditionAck_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAdditionAck_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAdditionAck-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_124[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 3 }, /* GlobalRIC-ID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 2 }, /* RANfunctionsID-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 1 }, /* RANfunctionsIDcause-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 0 } /* E2nodeComponentConfigAdditionAck-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_124 = { - sizeof(struct E2setupResponseIEs__value), - offsetof(struct E2setupResponseIEs__value, _asn_ctx), - offsetof(struct E2setupResponseIEs__value, present), - sizeof(((struct E2setupResponseIEs__value *)0)->present), - asn_MAP_value_tag2el_124, - 5, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_124 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_124, - 5, /* Elements count */ - &asn_SPC_value_specs_124 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2setupResponseIEs_121[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_122, &asn_PER_memb_id_constr_122, memb_id_constraint_121 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2setupResponseIEs_criticality_type, - { &asn_OER_memb_criticality_constr_123, &asn_PER_memb_criticality_constr_123, memb_criticality_constraint_121 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_124, - select_E2setupResponseIEs_value_type, - { &asn_OER_memb_value_constr_124, &asn_PER_memb_value_constr_124, memb_value_constraint_121 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupResponseIEs_tags_121[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupResponseIEs_tag2el_121[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_121 = { - sizeof(struct E2setupResponseIEs), - offsetof(struct E2setupResponseIEs, _asn_ctx), - asn_MAP_E2setupResponseIEs_tag2el_121, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs = { - "E2setupResponseIEs", - "E2setupResponseIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2setupResponseIEs_tags_121, - sizeof(asn_DEF_E2setupResponseIEs_tags_121) - /sizeof(asn_DEF_E2setupResponseIEs_tags_121[0]), /* 1 */ - asn_DEF_E2setupResponseIEs_tags_121, /* Same as above */ - sizeof(asn_DEF_E2setupResponseIEs_tags_121) - /sizeof(asn_DEF_E2setupResponseIEs_tags_121[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupResponseIEs_121, - 3, /* Elements count */ - &asn_SPC_E2setupResponseIEs_specs_121 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_128[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TNLinformation), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TNLinformation" - }, -}; -static const unsigned asn_MAP_value_to_canonical_128[] = { 0, 2, 3, 4, 1 }; -static const unsigned asn_MAP_value_from_canonical_128[] = { 0, 4, 1, 2, 3 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_128[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 1 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 }, /* TNLinformation */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_128 = { - sizeof(struct E2setupFailureIEs__value), - offsetof(struct E2setupFailureIEs__value, _asn_ctx), - offsetof(struct E2setupFailureIEs__value, present), - sizeof(((struct E2setupFailureIEs__value *)0)->present), - asn_MAP_value_tag2el_128, - 10, /* Count of tags in the map */ - asn_MAP_value_to_canonical_128, - asn_MAP_value_from_canonical_128, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_128 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_128, - 5, /* Elements count */ - &asn_SPC_value_specs_128 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2setupFailureIEs_125[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_126, &asn_PER_memb_id_constr_126, memb_id_constraint_125 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2setupFailureIEs_criticality_type, - { &asn_OER_memb_criticality_constr_127, &asn_PER_memb_criticality_constr_127, memb_criticality_constraint_125 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_128, - select_E2setupFailureIEs_value_type, - { &asn_OER_memb_value_constr_128, &asn_PER_memb_value_constr_128, memb_value_constraint_125 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupFailureIEs_tags_125[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupFailureIEs_tag2el_125[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_125 = { - sizeof(struct E2setupFailureIEs), - offsetof(struct E2setupFailureIEs, _asn_ctx), - asn_MAP_E2setupFailureIEs_tag2el_125, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs = { - "E2setupFailureIEs", - "E2setupFailureIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2setupFailureIEs_tags_125, - sizeof(asn_DEF_E2setupFailureIEs_tags_125) - /sizeof(asn_DEF_E2setupFailureIEs_tags_125[0]), /* 1 */ - asn_DEF_E2setupFailureIEs_tags_125, /* Same as above */ - sizeof(asn_DEF_E2setupFailureIEs_tags_125) - /sizeof(asn_DEF_E2setupFailureIEs_tags_125[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupFailureIEs_125, - 3, /* Elements count */ - &asn_SPC_E2setupFailureIEs_specs_125 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_132[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.E2connectionUpdate_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdate-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.E2connectionUpdateRemove_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateRemove_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdateRemove-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_132[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* E2connectionUpdate-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* E2connectionUpdateRemove-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_132 = { - sizeof(struct E2connectionUpdate_IEs__value), - offsetof(struct E2connectionUpdate_IEs__value, _asn_ctx), - offsetof(struct E2connectionUpdate_IEs__value, present), - sizeof(((struct E2connectionUpdate_IEs__value *)0)->present), - asn_MAP_value_tag2el_132, - 3, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_132 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_132, - 3, /* Elements count */ - &asn_SPC_value_specs_132 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdate_IEs_129[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_130, &asn_PER_memb_id_constr_130, memb_id_constraint_129 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdate_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_131, &asn_PER_memb_criticality_constr_131, memb_criticality_constraint_129 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_132, - select_E2connectionUpdate_IEs_value_type, - { &asn_OER_memb_value_constr_132, &asn_PER_memb_value_constr_132, memb_value_constraint_129 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_IEs_tags_129[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_IEs_tag2el_129[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_IEs_specs_129 = { - sizeof(struct E2connectionUpdate_IEs), - offsetof(struct E2connectionUpdate_IEs, _asn_ctx), - asn_MAP_E2connectionUpdate_IEs_tag2el_129, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_IEs = { - "E2connectionUpdate-IEs", - "E2connectionUpdate-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdate_IEs_tags_129, - sizeof(asn_DEF_E2connectionUpdate_IEs_tags_129) - /sizeof(asn_DEF_E2connectionUpdate_IEs_tags_129[0]), /* 1 */ - asn_DEF_E2connectionUpdate_IEs_tags_129, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_IEs_tags_129) - /sizeof(asn_DEF_E2connectionUpdate_IEs_tags_129[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_IEs_129, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdate_IEs_specs_129 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_136[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs__value, choice.E2connectionUpdate_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdate-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs__value, choice.E2connectionSetupFailed_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionSetupFailed_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionSetupFailed-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_136[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* E2connectionUpdate-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* E2connectionSetupFailed-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_136 = { - sizeof(struct E2connectionUpdateAck_IEs__value), - offsetof(struct E2connectionUpdateAck_IEs__value, _asn_ctx), - offsetof(struct E2connectionUpdateAck_IEs__value, present), - sizeof(((struct E2connectionUpdateAck_IEs__value *)0)->present), - asn_MAP_value_tag2el_136, - 3, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_136 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_136, - 3, /* Elements count */ - &asn_SPC_value_specs_136 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdateAck_IEs_133[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_134, &asn_PER_memb_id_constr_134, memb_id_constraint_133 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdateAck_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_135, &asn_PER_memb_criticality_constr_135, memb_criticality_constraint_133 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_136, - select_E2connectionUpdateAck_IEs_value_type, - { &asn_OER_memb_value_constr_136, &asn_PER_memb_value_constr_136, memb_value_constraint_133 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateAck_IEs_tags_133[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateAck_IEs_tag2el_133[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAck_IEs_specs_133 = { - sizeof(struct E2connectionUpdateAck_IEs), - offsetof(struct E2connectionUpdateAck_IEs, _asn_ctx), - asn_MAP_E2connectionUpdateAck_IEs_tag2el_133, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAck_IEs = { - "E2connectionUpdateAck-IEs", - "E2connectionUpdateAck-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateAck_IEs_tags_133, - sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_133) - /sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_133[0]), /* 1 */ - asn_DEF_E2connectionUpdateAck_IEs_tags_133, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_133) - /sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_133[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateAck_IEs_133, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdateAck_IEs_specs_133 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_140[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_140[] = { 0, 2, 3, 1 }; -static const unsigned asn_MAP_value_from_canonical_140[] = { 0, 3, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_140[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_140 = { - sizeof(struct E2connectionUpdateFailure_IEs__value), - offsetof(struct E2connectionUpdateFailure_IEs__value, _asn_ctx), - offsetof(struct E2connectionUpdateFailure_IEs__value, present), - sizeof(((struct E2connectionUpdateFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_140, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_140, - asn_MAP_value_from_canonical_140, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_140 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_140, - 4, /* Elements count */ - &asn_SPC_value_specs_140 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_IEs_137[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_138, &asn_PER_memb_id_constr_138, memb_id_constraint_137 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdateFailure_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_139, &asn_PER_memb_criticality_constr_139, memb_criticality_constraint_137 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_140, - select_E2connectionUpdateFailure_IEs_value_type, - { &asn_OER_memb_value_constr_140, &asn_PER_memb_value_constr_140, memb_value_constraint_137 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateFailure_IEs_tags_137[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateFailure_IEs_tag2el_137[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_IEs_specs_137 = { - sizeof(struct E2connectionUpdateFailure_IEs), - offsetof(struct E2connectionUpdateFailure_IEs, _asn_ctx), - asn_MAP_E2connectionUpdateFailure_IEs_tag2el_137, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure_IEs = { - "E2connectionUpdateFailure-IEs", - "E2connectionUpdateFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateFailure_IEs_tags_137, - sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_137) - /sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_137[0]), /* 1 */ - asn_DEF_E2connectionUpdateFailure_IEs_tags_137, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_137) - /sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_137[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateFailure_IEs_137, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdateFailure_IEs_specs_137 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_144[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.GlobalE2node_ID), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_GlobalE2node_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "GlobalE2node-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeComponentConfigAddition_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAddition_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAddition-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeComponentConfigUpdate_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigUpdate_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigUpdate-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeComponentConfigRemoval_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigRemoval_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigRemoval-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeTNLassociationRemoval_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeTNLassociationRemoval_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeTNLassociationRemoval-List" - }, -}; -static const unsigned asn_MAP_value_to_canonical_144[] = { 0, 2, 3, 4, 5, 1 }; -static const unsigned asn_MAP_value_from_canonical_144[] = { 0, 5, 1, 2, 3, 4 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_144[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 3 }, /* E2nodeComponentConfigAddition-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* E2nodeComponentConfigUpdate-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 1 }, /* E2nodeComponentConfigRemoval-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 0 }, /* E2nodeTNLassociationRemoval-List */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* eNB */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_144 = { - sizeof(struct E2nodeConfigurationUpdate_IEs__value), - offsetof(struct E2nodeConfigurationUpdate_IEs__value, _asn_ctx), - offsetof(struct E2nodeConfigurationUpdate_IEs__value, present), - sizeof(((struct E2nodeConfigurationUpdate_IEs__value *)0)->present), - asn_MAP_value_tag2el_144, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_144, - asn_MAP_value_from_canonical_144, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_144 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_144, - 6, /* Elements count */ - &asn_SPC_value_specs_144 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_IEs_141[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_142, &asn_PER_memb_id_constr_142, memb_id_constraint_141 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeConfigurationUpdate_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_143, &asn_PER_memb_criticality_constr_143, memb_criticality_constraint_141 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_144, - select_E2nodeConfigurationUpdate_IEs_value_type, - { &asn_OER_memb_value_constr_144, &asn_PER_memb_value_constr_144, memb_value_constraint_141 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdate_IEs_tag2el_141[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_IEs_specs_141 = { - sizeof(struct E2nodeConfigurationUpdate_IEs), - offsetof(struct E2nodeConfigurationUpdate_IEs, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdate_IEs_tag2el_141, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate_IEs = { - "E2nodeConfigurationUpdate-IEs", - "E2nodeConfigurationUpdate-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141, - sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141) - /sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141) - /sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdate_IEs_141, - 3, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdate_IEs_specs_141 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_148[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.E2nodeComponentConfigAdditionAck_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAdditionAck_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAdditionAck-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.E2nodeComponentConfigUpdateAck_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigUpdateAck_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigUpdateAck-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.E2nodeComponentConfigRemovalAck_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigRemovalAck_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigRemovalAck-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_148[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* E2nodeComponentConfigAdditionAck-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* E2nodeComponentConfigUpdateAck-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* E2nodeComponentConfigRemovalAck-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_148 = { - sizeof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value), - offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, _asn_ctx), - offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, present), - sizeof(((struct E2nodeConfigurationUpdateAcknowledge_IEs__value *)0)->present), - asn_MAP_value_tag2el_148, - 4, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_148 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_148, - 4, /* Elements count */ - &asn_SPC_value_specs_148 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_IEs_145[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_146, &asn_PER_memb_id_constr_146, memb_id_constraint_145 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeConfigurationUpdateAcknowledge_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_147, &asn_PER_memb_criticality_constr_147, memb_criticality_constraint_145 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_148, - select_E2nodeConfigurationUpdateAcknowledge_IEs_value_type, - { &asn_OER_memb_value_constr_148, &asn_PER_memb_value_constr_148, memb_value_constraint_145 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateAcknowledge_IEs_tag2el_145[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_IEs_specs_145 = { - sizeof(struct E2nodeConfigurationUpdateAcknowledge_IEs), - offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdateAcknowledge_IEs_tag2el_145, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs = { - "E2nodeConfigurationUpdateAcknowledge-IEs", - "E2nodeConfigurationUpdateAcknowledge-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145, - sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145) - /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145) - /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdateAcknowledge_IEs_145, - 3, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdateAcknowledge_IEs_specs_145 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_152[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_152[] = { 0, 2, 3, 1 }; -static const unsigned asn_MAP_value_from_canonical_152[] = { 0, 3, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_152[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_152 = { - sizeof(struct E2nodeConfigurationUpdateFailure_IEs__value), - offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, _asn_ctx), - offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, present), - sizeof(((struct E2nodeConfigurationUpdateFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_152, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_152, - asn_MAP_value_from_canonical_152, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_152 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_152, - 4, /* Elements count */ - &asn_SPC_value_specs_152 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_IEs_149[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_150, &asn_PER_memb_id_constr_150, memb_id_constraint_149 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeConfigurationUpdateFailure_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_151, &asn_PER_memb_criticality_constr_151, memb_criticality_constraint_149 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_152, - select_E2nodeConfigurationUpdateFailure_IEs_value_type, - { &asn_OER_memb_value_constr_152, &asn_PER_memb_value_constr_152, memb_value_constraint_149 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateFailure_IEs_tag2el_149[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_IEs_specs_149 = { - sizeof(struct E2nodeConfigurationUpdateFailure_IEs), - offsetof(struct E2nodeConfigurationUpdateFailure_IEs, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdateFailure_IEs_tag2el_149, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure_IEs = { - "E2nodeConfigurationUpdateFailure-IEs", - "E2nodeConfigurationUpdateFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149, - sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149) - /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149) - /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdateFailure_IEs_149, - 3, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdateFailure_IEs_specs_149 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_156[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_156[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_156 = { - sizeof(struct ResetRequestIEs__value), - offsetof(struct ResetRequestIEs__value, _asn_ctx), - offsetof(struct ResetRequestIEs__value, present), - sizeof(((struct ResetRequestIEs__value *)0)->present), - asn_MAP_value_tag2el_156, - 7, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_156 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_156, - 2, /* Elements count */ - &asn_SPC_value_specs_156 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ResetRequestIEs_153[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_154, &asn_PER_memb_id_constr_154, memb_id_constraint_153 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_ResetRequestIEs_criticality_type, - { &asn_OER_memb_criticality_constr_155, &asn_PER_memb_criticality_constr_155, memb_criticality_constraint_153 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_156, - select_ResetRequestIEs_value_type, - { &asn_OER_memb_value_constr_156, &asn_PER_memb_value_constr_156, memb_value_constraint_153 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetRequestIEs_tags_153[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetRequestIEs_tag2el_153[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_153 = { - sizeof(struct ResetRequestIEs), - offsetof(struct ResetRequestIEs, _asn_ctx), - asn_MAP_ResetRequestIEs_tag2el_153, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs = { - "ResetRequestIEs", - "ResetRequestIEs", - &asn_OP_SEQUENCE, - asn_DEF_ResetRequestIEs_tags_153, - sizeof(asn_DEF_ResetRequestIEs_tags_153) - /sizeof(asn_DEF_ResetRequestIEs_tags_153[0]), /* 1 */ - asn_DEF_ResetRequestIEs_tags_153, /* Same as above */ - sizeof(asn_DEF_ResetRequestIEs_tags_153) - /sizeof(asn_DEF_ResetRequestIEs_tags_153[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetRequestIEs_153, - 3, /* Elements count */ - &asn_SPC_ResetRequestIEs_specs_153 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_160[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_160[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* CriticalityDiagnostics */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_160 = { - sizeof(struct ResetResponseIEs__value), - offsetof(struct ResetResponseIEs__value, _asn_ctx), - offsetof(struct ResetResponseIEs__value, present), - sizeof(((struct ResetResponseIEs__value *)0)->present), - asn_MAP_value_tag2el_160, - 2, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_160 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_160, - 2, /* Elements count */ - &asn_SPC_value_specs_160 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ResetResponseIEs_157[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_158, &asn_PER_memb_id_constr_158, memb_id_constraint_157 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_ResetResponseIEs_criticality_type, - { &asn_OER_memb_criticality_constr_159, &asn_PER_memb_criticality_constr_159, memb_criticality_constraint_157 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_160, - select_ResetResponseIEs_value_type, - { &asn_OER_memb_value_constr_160, &asn_PER_memb_value_constr_160, memb_value_constraint_157 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetResponseIEs_tags_157[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetResponseIEs_tag2el_157[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_157 = { - sizeof(struct ResetResponseIEs), - offsetof(struct ResetResponseIEs, _asn_ctx), - asn_MAP_ResetResponseIEs_tag2el_157, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs = { - "ResetResponseIEs", - "ResetResponseIEs", - &asn_OP_SEQUENCE, - asn_DEF_ResetResponseIEs_tags_157, - sizeof(asn_DEF_ResetResponseIEs_tags_157) - /sizeof(asn_DEF_ResetResponseIEs_tags_157[0]), /* 1 */ - asn_DEF_ResetResponseIEs_tags_157, /* Same as above */ - sizeof(asn_DEF_ResetResponseIEs_tags_157) - /sizeof(asn_DEF_ResetResponseIEs_tags_157[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetResponseIEs_157, - 3, /* Elements count */ - &asn_SPC_ResetResponseIEs_specs_157 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_164[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctions_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctions_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctions-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_164[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* RANfunctions-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RANfunctionsID-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_164 = { - sizeof(struct RICserviceUpdate_IEs__value), - offsetof(struct RICserviceUpdate_IEs__value, _asn_ctx), - offsetof(struct RICserviceUpdate_IEs__value, present), - sizeof(((struct RICserviceUpdate_IEs__value *)0)->present), - asn_MAP_value_tag2el_164, - 3, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_164 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_164, - 3, /* Elements count */ - &asn_SPC_value_specs_164 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_161[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_162, &asn_PER_memb_id_constr_162, memb_id_constraint_161 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceUpdate_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_163, &asn_PER_memb_criticality_constr_163, memb_criticality_constraint_161 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_164, - select_RICserviceUpdate_IEs_value_type, - { &asn_OER_memb_value_constr_164, &asn_PER_memb_value_constr_164, memb_value_constraint_161 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_IEs_tags_161[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_IEs_tag2el_161[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_161 = { - sizeof(struct RICserviceUpdate_IEs), - offsetof(struct RICserviceUpdate_IEs, _asn_ctx), - asn_MAP_RICserviceUpdate_IEs_tag2el_161, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs = { - "RICserviceUpdate-IEs", - "RICserviceUpdate-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdate_IEs_tags_161, - sizeof(asn_DEF_RICserviceUpdate_IEs_tags_161) - /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_161[0]), /* 1 */ - asn_DEF_RICserviceUpdate_IEs_tags_161, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdate_IEs_tags_161) - /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_161[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdate_IEs_161, - 3, /* Elements count */ - &asn_SPC_RICserviceUpdate_IEs_specs_161 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_168[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsIDcause_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsIDcause_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsIDcause-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_168[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* RANfunctionsID-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RANfunctionsIDcause-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_168 = { - sizeof(struct RICserviceUpdateAcknowledge_IEs__value), - offsetof(struct RICserviceUpdateAcknowledge_IEs__value, _asn_ctx), - offsetof(struct RICserviceUpdateAcknowledge_IEs__value, present), - sizeof(((struct RICserviceUpdateAcknowledge_IEs__value *)0)->present), - asn_MAP_value_tag2el_168, - 3, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_168 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_168, - 3, /* Elements count */ - &asn_SPC_value_specs_168 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_165[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_166, &asn_PER_memb_id_constr_166, memb_id_constraint_165 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceUpdateAcknowledge_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_167, &asn_PER_memb_criticality_constr_167, memb_criticality_constraint_165 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_168, - select_RICserviceUpdateAcknowledge_IEs_value_type, - { &asn_OER_memb_value_constr_168, &asn_PER_memb_value_constr_168, memb_value_constraint_165 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_165[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_165 = { - sizeof(struct RICserviceUpdateAcknowledge_IEs), - offsetof(struct RICserviceUpdateAcknowledge_IEs, _asn_ctx), - asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_165, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs = { - "RICserviceUpdateAcknowledge-IEs", - "RICserviceUpdateAcknowledge-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165, - sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165[0]), /* 1 */ - asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateAcknowledge_IEs_165, - 3, /* Elements count */ - &asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_165 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_172[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_172[] = { 0, 2, 3, 1 }; -static const unsigned asn_MAP_value_from_canonical_172[] = { 0, 3, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_172[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_172 = { - sizeof(struct RICserviceUpdateFailure_IEs__value), - offsetof(struct RICserviceUpdateFailure_IEs__value, _asn_ctx), - offsetof(struct RICserviceUpdateFailure_IEs__value, present), - sizeof(((struct RICserviceUpdateFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_172, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_172, - asn_MAP_value_from_canonical_172, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_172 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_172, - 4, /* Elements count */ - &asn_SPC_value_specs_172 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_169[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_170, &asn_PER_memb_id_constr_170, memb_id_constraint_169 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceUpdateFailure_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_171, &asn_PER_memb_criticality_constr_171, memb_criticality_constraint_169 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_172, - select_RICserviceUpdateFailure_IEs_value_type, - { &asn_OER_memb_value_constr_172, &asn_PER_memb_value_constr_172, memb_value_constraint_169 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_IEs_tags_169[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_IEs_tag2el_169[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_169 = { - sizeof(struct RICserviceUpdateFailure_IEs), - offsetof(struct RICserviceUpdateFailure_IEs, _asn_ctx), - asn_MAP_RICserviceUpdateFailure_IEs_tag2el_169, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs = { - "RICserviceUpdateFailure-IEs", - "RICserviceUpdateFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateFailure_IEs_tags_169, - sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_169) - /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_169[0]), /* 1 */ - asn_DEF_RICserviceUpdateFailure_IEs_tags_169, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_169) - /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_169[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateFailure_IEs_169, - 3, /* Elements count */ - &asn_SPC_RICserviceUpdateFailure_IEs_specs_169 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_176[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_176[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* RANfunctionsID-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_176 = { - sizeof(struct RICserviceQuery_IEs__value), - offsetof(struct RICserviceQuery_IEs__value, _asn_ctx), - offsetof(struct RICserviceQuery_IEs__value, present), - sizeof(((struct RICserviceQuery_IEs__value *)0)->present), - asn_MAP_value_tag2el_176, - 2, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_176 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_176, - 2, /* Elements count */ - &asn_SPC_value_specs_176 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_173[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { &asn_OER_memb_id_constr_174, &asn_PER_memb_id_constr_174, memb_id_constraint_173 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceQuery_IEs_criticality_type, - { &asn_OER_memb_criticality_constr_175, &asn_PER_memb_criticality_constr_175, memb_criticality_constraint_173 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_176, - select_RICserviceQuery_IEs_value_type, - { &asn_OER_memb_value_constr_176, &asn_PER_memb_value_constr_176, memb_value_constraint_173 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceQuery_IEs_tags_173[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_IEs_tag2el_173[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_173 = { - sizeof(struct RICserviceQuery_IEs), - offsetof(struct RICserviceQuery_IEs, _asn_ctx), - asn_MAP_RICserviceQuery_IEs_tag2el_173, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs = { - "RICserviceQuery-IEs", - "RICserviceQuery-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceQuery_IEs_tags_173, - sizeof(asn_DEF_RICserviceQuery_IEs_tags_173) - /sizeof(asn_DEF_RICserviceQuery_IEs_tags_173[0]), /* 1 */ - asn_DEF_RICserviceQuery_IEs_tags_173, /* Same as above */ - sizeof(asn_DEF_RICserviceQuery_IEs_tags_173) - /sizeof(asn_DEF_RICserviceQuery_IEs_tags_173[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceQuery_IEs_173, - 3, /* Elements count */ - &asn_SPC_RICserviceQuery_IEs_specs_173 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Field.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Field.h deleted file mode 100644 index e138e9c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-Field.h +++ /dev/null @@ -1,1254 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ProtocolIE_Field_H_ -#define _ProtocolIE_Field_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-ID.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICaction-ToBeSetup-Item.h" -#include "Presence.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" -#include "RICaction-Admitted-Item.h" -#include "RICaction-NotAdmitted-Item.h" -#include "RICsubscription-withCause-Item.h" -#include "E2connectionUpdate-Item.h" -#include "E2connectionUpdateRemove-Item.h" -#include "E2connectionSetupFailed-Item.h" -#include "E2nodeComponentConfigAddition-Item.h" -#include "E2nodeComponentConfigUpdate-Item.h" -#include "E2nodeComponentConfigRemoval-Item.h" -#include "E2nodeTNLassociationRemoval-Item.h" -#include "E2nodeComponentConfigAdditionAck-Item.h" -#include "E2nodeComponentConfigUpdateAck-Item.h" -#include "E2nodeComponentConfigRemovalAck-Item.h" -#include "RANfunction-Item.h" -#include "RANfunctionID-Item.h" -#include "RANfunctionIDcause-Item.h" -#include "RICrequestID.h" -#include "RANfunctionID.h" -#include "RICsubscriptionDetails.h" -#include "RICaction-Admitted-List.h" -#include "RICaction-NotAdmitted-List.h" -#include "Cause.h" -#include "CriticalityDiagnostics.h" -#include "RICsubscription-List-withCause.h" -#include "RICactionID.h" -#include "RICindicationSN.h" -#include "RICindicationType.h" -#include "RICindicationHeader.h" -#include "RICindicationMessage.h" -#include "RICcallProcessID.h" -#include "RICcontrolHeader.h" -#include "RICcontrolMessage.h" -#include "RICcontrolAckRequest.h" -#include "RICcontrolOutcome.h" -#include "TransactionID.h" -#include "GlobalE2node-ID.h" -#include "RANfunctions-List.h" -#include "E2nodeComponentConfigAddition-List.h" -#include "GlobalRIC-ID.h" -#include "RANfunctionsID-List.h" -#include "RANfunctionsIDcause-List.h" -#include "E2nodeComponentConfigAdditionAck-List.h" -#include "TimeToWait.h" -#include "TNLinformation.h" -#include "E2connectionUpdate-List.h" -#include "E2connectionUpdateRemove-List.h" -#include "E2connectionSetupFailed-List.h" -#include "E2nodeComponentConfigUpdate-List.h" -#include "E2nodeComponentConfigRemoval-List.h" -#include "E2nodeTNLassociationRemoval-List.h" -#include "E2nodeComponentConfigUpdateAck-List.h" -#include "E2nodeComponentConfigRemovalAck-List.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICaction_ToBeSetup_ItemIEs__value_PR { - RICaction_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ - RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item -} RICaction_ToBeSetup_ItemIEs__value_PR; -typedef enum RICaction_Admitted_ItemIEs__value_PR { - RICaction_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ - RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item -} RICaction_Admitted_ItemIEs__value_PR; -typedef enum RICaction_NotAdmitted_ItemIEs__value_PR { - RICaction_NotAdmitted_ItemIEs__value_PR_NOTHING, /* No components present */ - RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item -} RICaction_NotAdmitted_ItemIEs__value_PR; -typedef enum RICsubscription_withCause_ItemIEs__value_PR { - RICsubscription_withCause_ItemIEs__value_PR_NOTHING, /* No components present */ - RICsubscription_withCause_ItemIEs__value_PR_RICsubscription_withCause_Item -} RICsubscription_withCause_ItemIEs__value_PR; -typedef enum E2connectionUpdate_ItemIEs__value_PR { - E2connectionUpdate_ItemIEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdate_ItemIEs__value_PR_E2connectionUpdate_Item -} E2connectionUpdate_ItemIEs__value_PR; -typedef enum E2connectionUpdateRemove_ItemIEs__value_PR { - E2connectionUpdateRemove_ItemIEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdateRemove_ItemIEs__value_PR_E2connectionUpdateRemove_Item -} E2connectionUpdateRemove_ItemIEs__value_PR; -typedef enum E2connectionSetupFailed_ItemIEs__value_PR { - E2connectionSetupFailed_ItemIEs__value_PR_NOTHING, /* No components present */ - E2connectionSetupFailed_ItemIEs__value_PR_E2connectionSetupFailed_Item -} E2connectionSetupFailed_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigAddition_ItemIEs__value_PR { - E2nodeComponentConfigAddition_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigAddition_ItemIEs__value_PR_E2nodeComponentConfigAddition_Item -} E2nodeComponentConfigAddition_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigUpdate_ItemIEs__value_PR { - E2nodeComponentConfigUpdate_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigUpdate_ItemIEs__value_PR_E2nodeComponentConfigUpdate_Item -} E2nodeComponentConfigUpdate_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigRemoval_ItemIEs__value_PR { - E2nodeComponentConfigRemoval_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigRemoval_ItemIEs__value_PR_E2nodeComponentConfigRemoval_Item -} E2nodeComponentConfigRemoval_ItemIEs__value_PR; -typedef enum E2nodeTNLassociationRemoval_ItemIEs__value_PR { - E2nodeTNLassociationRemoval_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeTNLassociationRemoval_ItemIEs__value_PR_E2nodeTNLassociationRemoval_Item -} E2nodeTNLassociationRemoval_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigAdditionAck_ItemIEs__value_PR { - E2nodeComponentConfigAdditionAck_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigAdditionAck_ItemIEs__value_PR_E2nodeComponentConfigAdditionAck_Item -} E2nodeComponentConfigAdditionAck_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigUpdateAck_ItemIEs__value_PR { - E2nodeComponentConfigUpdateAck_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigUpdateAck_ItemIEs__value_PR_E2nodeComponentConfigUpdateAck_Item -} E2nodeComponentConfigUpdateAck_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigRemovalAck_ItemIEs__value_PR { - E2nodeComponentConfigRemovalAck_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigRemovalAck_ItemIEs__value_PR_E2nodeComponentConfigRemovalAck_Item -} E2nodeComponentConfigRemovalAck_ItemIEs__value_PR; -typedef enum RANfunction_ItemIEs__value_PR { - RANfunction_ItemIEs__value_PR_NOTHING, /* No components present */ - RANfunction_ItemIEs__value_PR_RANfunction_Item -} RANfunction_ItemIEs__value_PR; -typedef enum RANfunctionID_ItemIEs__value_PR { - RANfunctionID_ItemIEs__value_PR_NOTHING, /* No components present */ - RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item -} RANfunctionID_ItemIEs__value_PR; -typedef enum RANfunctionIDcause_ItemIEs__value_PR { - RANfunctionIDcause_ItemIEs__value_PR_NOTHING, /* No components present */ - RANfunctionIDcause_ItemIEs__value_PR_RANfunctionIDcause_Item -} RANfunctionIDcause_ItemIEs__value_PR; -typedef enum RICsubscriptionRequest_IEs__value_PR { - RICsubscriptionRequest_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionRequest_IEs__value_PR_RICrequestID, - RICsubscriptionRequest_IEs__value_PR_RANfunctionID, - RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails -} RICsubscriptionRequest_IEs__value_PR; -typedef enum RICsubscriptionResponse_IEs__value_PR { - RICsubscriptionResponse_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionResponse_IEs__value_PR_RICrequestID, - RICsubscriptionResponse_IEs__value_PR_RANfunctionID, - RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List, - RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List -} RICsubscriptionResponse_IEs__value_PR; -typedef enum RICsubscriptionFailure_IEs__value_PR { - RICsubscriptionFailure_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionFailure_IEs__value_PR_RICrequestID, - RICsubscriptionFailure_IEs__value_PR_RANfunctionID, - RICsubscriptionFailure_IEs__value_PR_Cause, - RICsubscriptionFailure_IEs__value_PR_CriticalityDiagnostics -} RICsubscriptionFailure_IEs__value_PR; -typedef enum RICsubscriptionDeleteRequest_IEs__value_PR { - RICsubscriptionDeleteRequest_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID, - RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID -} RICsubscriptionDeleteRequest_IEs__value_PR; -typedef enum RICsubscriptionDeleteResponse_IEs__value_PR { - RICsubscriptionDeleteResponse_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID, - RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID -} RICsubscriptionDeleteResponse_IEs__value_PR; -typedef enum RICsubscriptionDeleteFailure_IEs__value_PR { - RICsubscriptionDeleteFailure_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID, - RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID, - RICsubscriptionDeleteFailure_IEs__value_PR_Cause, - RICsubscriptionDeleteFailure_IEs__value_PR_CriticalityDiagnostics -} RICsubscriptionDeleteFailure_IEs__value_PR; -typedef enum RICsubscriptionDeleteRequired_IEs__value_PR { - RICsubscriptionDeleteRequired_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteRequired_IEs__value_PR_RICsubscription_List_withCause -} RICsubscriptionDeleteRequired_IEs__value_PR; -typedef enum RICindication_IEs__value_PR { - RICindication_IEs__value_PR_NOTHING, /* No components present */ - RICindication_IEs__value_PR_RICrequestID, - RICindication_IEs__value_PR_RANfunctionID, - RICindication_IEs__value_PR_RICactionID, - RICindication_IEs__value_PR_RICindicationSN, - RICindication_IEs__value_PR_RICindicationType, - RICindication_IEs__value_PR_RICindicationHeader, - RICindication_IEs__value_PR_RICindicationMessage, - RICindication_IEs__value_PR_RICcallProcessID -} RICindication_IEs__value_PR; -typedef enum RICcontrolRequest_IEs__value_PR { - RICcontrolRequest_IEs__value_PR_NOTHING, /* No components present */ - RICcontrolRequest_IEs__value_PR_RICrequestID, - RICcontrolRequest_IEs__value_PR_RANfunctionID, - RICcontrolRequest_IEs__value_PR_RICcallProcessID, - RICcontrolRequest_IEs__value_PR_RICcontrolHeader, - RICcontrolRequest_IEs__value_PR_RICcontrolMessage, - RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest -} RICcontrolRequest_IEs__value_PR; -typedef enum RICcontrolAcknowledge_IEs__value_PR { - RICcontrolAcknowledge_IEs__value_PR_NOTHING, /* No components present */ - RICcontrolAcknowledge_IEs__value_PR_RICrequestID, - RICcontrolAcknowledge_IEs__value_PR_RANfunctionID, - RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID, - RICcontrolAcknowledge_IEs__value_PR_RICcontrolOutcome -} RICcontrolAcknowledge_IEs__value_PR; -typedef enum RICcontrolFailure_IEs__value_PR { - RICcontrolFailure_IEs__value_PR_NOTHING, /* No components present */ - RICcontrolFailure_IEs__value_PR_RICrequestID, - RICcontrolFailure_IEs__value_PR_RANfunctionID, - RICcontrolFailure_IEs__value_PR_RICcallProcessID, - RICcontrolFailure_IEs__value_PR_Cause, - RICcontrolFailure_IEs__value_PR_RICcontrolOutcome -} RICcontrolFailure_IEs__value_PR; -typedef enum ErrorIndication_IEs__value_PR { - ErrorIndication_IEs__value_PR_NOTHING, /* No components present */ - ErrorIndication_IEs__value_PR_TransactionID, - ErrorIndication_IEs__value_PR_RICrequestID, - ErrorIndication_IEs__value_PR_RANfunctionID, - ErrorIndication_IEs__value_PR_Cause, - ErrorIndication_IEs__value_PR_CriticalityDiagnostics -} ErrorIndication_IEs__value_PR; -typedef enum E2setupRequestIEs__value_PR { - E2setupRequestIEs__value_PR_NOTHING, /* No components present */ - E2setupRequestIEs__value_PR_TransactionID, - E2setupRequestIEs__value_PR_GlobalE2node_ID, - E2setupRequestIEs__value_PR_RANfunctions_List, - E2setupRequestIEs__value_PR_E2nodeComponentConfigAddition_List -} E2setupRequestIEs__value_PR; -typedef enum E2setupResponseIEs__value_PR { - E2setupResponseIEs__value_PR_NOTHING, /* No components present */ - E2setupResponseIEs__value_PR_TransactionID, - E2setupResponseIEs__value_PR_GlobalRIC_ID, - E2setupResponseIEs__value_PR_RANfunctionsID_List, - E2setupResponseIEs__value_PR_RANfunctionsIDcause_List, - E2setupResponseIEs__value_PR_E2nodeComponentConfigAdditionAck_List -} E2setupResponseIEs__value_PR; -typedef enum E2setupFailureIEs__value_PR { - E2setupFailureIEs__value_PR_NOTHING, /* No components present */ - E2setupFailureIEs__value_PR_TransactionID, - E2setupFailureIEs__value_PR_Cause, - E2setupFailureIEs__value_PR_TimeToWait, - E2setupFailureIEs__value_PR_CriticalityDiagnostics, - E2setupFailureIEs__value_PR_TNLinformation -} E2setupFailureIEs__value_PR; -typedef enum E2connectionUpdate_IEs__value_PR { - E2connectionUpdate_IEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdate_IEs__value_PR_TransactionID, - E2connectionUpdate_IEs__value_PR_E2connectionUpdate_List, - E2connectionUpdate_IEs__value_PR_E2connectionUpdateRemove_List -} E2connectionUpdate_IEs__value_PR; -typedef enum E2connectionUpdateAck_IEs__value_PR { - E2connectionUpdateAck_IEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdateAck_IEs__value_PR_TransactionID, - E2connectionUpdateAck_IEs__value_PR_E2connectionUpdate_List, - E2connectionUpdateAck_IEs__value_PR_E2connectionSetupFailed_List -} E2connectionUpdateAck_IEs__value_PR; -typedef enum E2connectionUpdateFailure_IEs__value_PR { - E2connectionUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdateFailure_IEs__value_PR_TransactionID, - E2connectionUpdateFailure_IEs__value_PR_Cause, - E2connectionUpdateFailure_IEs__value_PR_TimeToWait, - E2connectionUpdateFailure_IEs__value_PR_CriticalityDiagnostics -} E2connectionUpdateFailure_IEs__value_PR; -typedef enum E2nodeConfigurationUpdate_IEs__value_PR { - E2nodeConfigurationUpdate_IEs__value_PR_NOTHING, /* No components present */ - E2nodeConfigurationUpdate_IEs__value_PR_TransactionID, - E2nodeConfigurationUpdate_IEs__value_PR_GlobalE2node_ID, - E2nodeConfigurationUpdate_IEs__value_PR_E2nodeComponentConfigAddition_List, - E2nodeConfigurationUpdate_IEs__value_PR_E2nodeComponentConfigUpdate_List, - E2nodeConfigurationUpdate_IEs__value_PR_E2nodeComponentConfigRemoval_List, - E2nodeConfigurationUpdate_IEs__value_PR_E2nodeTNLassociationRemoval_List -} E2nodeConfigurationUpdate_IEs__value_PR; -typedef enum E2nodeConfigurationUpdateAcknowledge_IEs__value_PR { - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_TransactionID, - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_E2nodeComponentConfigAdditionAck_List, - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_E2nodeComponentConfigUpdateAck_List, - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_E2nodeComponentConfigRemovalAck_List -} E2nodeConfigurationUpdateAcknowledge_IEs__value_PR; -typedef enum E2nodeConfigurationUpdateFailure_IEs__value_PR { - E2nodeConfigurationUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ - E2nodeConfigurationUpdateFailure_IEs__value_PR_TransactionID, - E2nodeConfigurationUpdateFailure_IEs__value_PR_Cause, - E2nodeConfigurationUpdateFailure_IEs__value_PR_TimeToWait, - E2nodeConfigurationUpdateFailure_IEs__value_PR_CriticalityDiagnostics -} E2nodeConfigurationUpdateFailure_IEs__value_PR; -typedef enum ResetRequestIEs__value_PR { - ResetRequestIEs__value_PR_NOTHING, /* No components present */ - ResetRequestIEs__value_PR_TransactionID, - ResetRequestIEs__value_PR_Cause -} ResetRequestIEs__value_PR; -typedef enum ResetResponseIEs__value_PR { - ResetResponseIEs__value_PR_NOTHING, /* No components present */ - ResetResponseIEs__value_PR_TransactionID, - ResetResponseIEs__value_PR_CriticalityDiagnostics -} ResetResponseIEs__value_PR; -typedef enum RICserviceUpdate_IEs__value_PR { - RICserviceUpdate_IEs__value_PR_NOTHING, /* No components present */ - RICserviceUpdate_IEs__value_PR_TransactionID, - RICserviceUpdate_IEs__value_PR_RANfunctions_List, - RICserviceUpdate_IEs__value_PR_RANfunctionsID_List -} RICserviceUpdate_IEs__value_PR; -typedef enum RICserviceUpdateAcknowledge_IEs__value_PR { - RICserviceUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ - RICserviceUpdateAcknowledge_IEs__value_PR_TransactionID, - RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsID_List, - RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsIDcause_List -} RICserviceUpdateAcknowledge_IEs__value_PR; -typedef enum RICserviceUpdateFailure_IEs__value_PR { - RICserviceUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ - RICserviceUpdateFailure_IEs__value_PR_TransactionID, - RICserviceUpdateFailure_IEs__value_PR_Cause, - RICserviceUpdateFailure_IEs__value_PR_TimeToWait, - RICserviceUpdateFailure_IEs__value_PR_CriticalityDiagnostics -} RICserviceUpdateFailure_IEs__value_PR; -typedef enum RICserviceQuery_IEs__value_PR { - RICserviceQuery_IEs__value_PR_NOTHING, /* No components present */ - RICserviceQuery_IEs__value_PR_TransactionID, - RICserviceQuery_IEs__value_PR_RANfunctionsID_List -} RICserviceQuery_IEs__value_PR; - -/* ProtocolIE-Field */ -typedef struct RICaction_ToBeSetup_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICaction_ToBeSetup_ItemIEs__value { - RICaction_ToBeSetup_ItemIEs__value_PR present; - union RICaction_ToBeSetup_ItemIEs__value_u { - RICaction_ToBeSetup_Item_t RICaction_ToBeSetup_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_ToBeSetup_ItemIEs_t; -typedef struct RICaction_Admitted_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICaction_Admitted_ItemIEs__value { - RICaction_Admitted_ItemIEs__value_PR present; - union RICaction_Admitted_ItemIEs__value_u { - RICaction_Admitted_Item_t RICaction_Admitted_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_Admitted_ItemIEs_t; -typedef struct RICaction_NotAdmitted_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICaction_NotAdmitted_ItemIEs__value { - RICaction_NotAdmitted_ItemIEs__value_PR present; - union RICaction_NotAdmitted_ItemIEs__value_u { - RICaction_NotAdmitted_Item_t RICaction_NotAdmitted_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_NotAdmitted_ItemIEs_t; -typedef struct RICsubscription_withCause_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscription_withCause_ItemIEs__value { - RICsubscription_withCause_ItemIEs__value_PR present; - union RICsubscription_withCause_ItemIEs__value_u { - RICsubscription_withCause_Item_t RICsubscription_withCause_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscription_withCause_ItemIEs_t; -typedef struct E2connectionUpdate_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdate_ItemIEs__value { - E2connectionUpdate_ItemIEs__value_PR present; - union E2connectionUpdate_ItemIEs__value_u { - E2connectionUpdate_Item_t E2connectionUpdate_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_ItemIEs_t; -typedef struct E2connectionUpdateRemove_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdateRemove_ItemIEs__value { - E2connectionUpdateRemove_ItemIEs__value_PR present; - union E2connectionUpdateRemove_ItemIEs__value_u { - E2connectionUpdateRemove_Item_t E2connectionUpdateRemove_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateRemove_ItemIEs_t; -typedef struct E2connectionSetupFailed_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionSetupFailed_ItemIEs__value { - E2connectionSetupFailed_ItemIEs__value_PR present; - union E2connectionSetupFailed_ItemIEs__value_u { - E2connectionSetupFailed_Item_t E2connectionSetupFailed_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionSetupFailed_ItemIEs_t; -typedef struct E2nodeComponentConfigAddition_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigAddition_ItemIEs__value { - E2nodeComponentConfigAddition_ItemIEs__value_PR present; - union E2nodeComponentConfigAddition_ItemIEs__value_u { - E2nodeComponentConfigAddition_Item_t E2nodeComponentConfigAddition_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAddition_ItemIEs_t; -typedef struct E2nodeComponentConfigUpdate_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigUpdate_ItemIEs__value { - E2nodeComponentConfigUpdate_ItemIEs__value_PR present; - union E2nodeComponentConfigUpdate_ItemIEs__value_u { - E2nodeComponentConfigUpdate_Item_t E2nodeComponentConfigUpdate_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdate_ItemIEs_t; -typedef struct E2nodeComponentConfigRemoval_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigRemoval_ItemIEs__value { - E2nodeComponentConfigRemoval_ItemIEs__value_PR present; - union E2nodeComponentConfigRemoval_ItemIEs__value_u { - E2nodeComponentConfigRemoval_Item_t E2nodeComponentConfigRemoval_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemoval_ItemIEs_t; -typedef struct E2nodeTNLassociationRemoval_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeTNLassociationRemoval_ItemIEs__value { - E2nodeTNLassociationRemoval_ItemIEs__value_PR present; - union E2nodeTNLassociationRemoval_ItemIEs__value_u { - E2nodeTNLassociationRemoval_Item_t E2nodeTNLassociationRemoval_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeTNLassociationRemoval_ItemIEs_t; -typedef struct E2nodeComponentConfigAdditionAck_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigAdditionAck_ItemIEs__value { - E2nodeComponentConfigAdditionAck_ItemIEs__value_PR present; - union E2nodeComponentConfigAdditionAck_ItemIEs__value_u { - E2nodeComponentConfigAdditionAck_Item_t E2nodeComponentConfigAdditionAck_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAdditionAck_ItemIEs_t; -typedef struct E2nodeComponentConfigUpdateAck_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigUpdateAck_ItemIEs__value { - E2nodeComponentConfigUpdateAck_ItemIEs__value_PR present; - union E2nodeComponentConfigUpdateAck_ItemIEs__value_u { - E2nodeComponentConfigUpdateAck_Item_t E2nodeComponentConfigUpdateAck_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdateAck_ItemIEs_t; -typedef struct E2nodeComponentConfigRemovalAck_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigRemovalAck_ItemIEs__value { - E2nodeComponentConfigRemovalAck_ItemIEs__value_PR present; - union E2nodeComponentConfigRemovalAck_ItemIEs__value_u { - E2nodeComponentConfigRemovalAck_Item_t E2nodeComponentConfigRemovalAck_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemovalAck_ItemIEs_t; -typedef struct RANfunction_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RANfunction_ItemIEs__value { - RANfunction_ItemIEs__value_PR present; - union RANfunction_ItemIEs__value_u { - RANfunction_Item_t RANfunction_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunction_ItemIEs_t; -typedef struct RANfunctionID_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RANfunctionID_ItemIEs__value { - RANfunctionID_ItemIEs__value_PR present; - union RANfunctionID_ItemIEs__value_u { - RANfunctionID_Item_t RANfunctionID_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionID_ItemIEs_t; -typedef struct RANfunctionIDcause_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RANfunctionIDcause_ItemIEs__value { - RANfunctionIDcause_ItemIEs__value_PR present; - union RANfunctionIDcause_ItemIEs__value_u { - RANfunctionIDcause_Item_t RANfunctionIDcause_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionIDcause_ItemIEs_t; -typedef struct RICsubscriptionRequest_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionRequest_IEs__value { - RICsubscriptionRequest_IEs__value_PR present; - union RICsubscriptionRequest_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICsubscriptionDetails_t RICsubscriptionDetails; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionRequest_IEs_t; -typedef struct RICsubscriptionResponse_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionResponse_IEs__value { - RICsubscriptionResponse_IEs__value_PR present; - union RICsubscriptionResponse_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICaction_Admitted_List_t RICaction_Admitted_List; - RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionResponse_IEs_t; -typedef struct RICsubscriptionFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionFailure_IEs__value { - RICsubscriptionFailure_IEs__value_PR present; - union RICsubscriptionFailure_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - Cause_t Cause; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionFailure_IEs_t; -typedef struct RICsubscriptionDeleteRequest_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteRequest_IEs__value { - RICsubscriptionDeleteRequest_IEs__value_PR present; - union RICsubscriptionDeleteRequest_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequest_IEs_t; -typedef struct RICsubscriptionDeleteResponse_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteResponse_IEs__value { - RICsubscriptionDeleteResponse_IEs__value_PR present; - union RICsubscriptionDeleteResponse_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteResponse_IEs_t; -typedef struct RICsubscriptionDeleteFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteFailure_IEs__value { - RICsubscriptionDeleteFailure_IEs__value_PR present; - union RICsubscriptionDeleteFailure_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - Cause_t Cause; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteFailure_IEs_t; -typedef struct RICsubscriptionDeleteRequired_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteRequired_IEs__value { - RICsubscriptionDeleteRequired_IEs__value_PR present; - union RICsubscriptionDeleteRequired_IEs__value_u { - RICsubscription_List_withCause_t RICsubscription_List_withCause; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequired_IEs_t; -typedef struct RICindication_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICindication_IEs__value { - RICindication_IEs__value_PR present; - union RICindication_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICactionID_t RICactionID; - RICindicationSN_t RICindicationSN; - RICindicationType_t RICindicationType; - RICindicationHeader_t RICindicationHeader; - RICindicationMessage_t RICindicationMessage; - RICcallProcessID_t RICcallProcessID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICindication_IEs_t; -typedef struct RICcontrolRequest_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICcontrolRequest_IEs__value { - RICcontrolRequest_IEs__value_PR present; - union RICcontrolRequest_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICcallProcessID_t RICcallProcessID; - RICcontrolHeader_t RICcontrolHeader; - RICcontrolMessage_t RICcontrolMessage; - RICcontrolAckRequest_t RICcontrolAckRequest; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolRequest_IEs_t; -typedef struct RICcontrolAcknowledge_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICcontrolAcknowledge_IEs__value { - RICcontrolAcknowledge_IEs__value_PR present; - union RICcontrolAcknowledge_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICcallProcessID_t RICcallProcessID; - RICcontrolOutcome_t RICcontrolOutcome; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolAcknowledge_IEs_t; -typedef struct RICcontrolFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICcontrolFailure_IEs__value { - RICcontrolFailure_IEs__value_PR present; - union RICcontrolFailure_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICcallProcessID_t RICcallProcessID; - Cause_t Cause; - RICcontrolOutcome_t RICcontrolOutcome; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolFailure_IEs_t; -typedef struct ErrorIndication_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct ErrorIndication_IEs__value { - ErrorIndication_IEs__value_PR present; - union ErrorIndication_IEs__value_u { - TransactionID_t TransactionID; - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - Cause_t Cause; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ErrorIndication_IEs_t; -typedef struct E2setupRequestIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2setupRequestIEs__value { - E2setupRequestIEs__value_PR present; - union E2setupRequestIEs__value_u { - TransactionID_t TransactionID; - GlobalE2node_ID_t GlobalE2node_ID; - RANfunctions_List_t RANfunctions_List; - E2nodeComponentConfigAddition_List_t E2nodeComponentConfigAddition_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupRequestIEs_t; -typedef struct E2setupResponseIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2setupResponseIEs__value { - E2setupResponseIEs__value_PR present; - union E2setupResponseIEs__value_u { - TransactionID_t TransactionID; - GlobalRIC_ID_t GlobalRIC_ID; - RANfunctionsID_List_t RANfunctionsID_List; - RANfunctionsIDcause_List_t RANfunctionsIDcause_List; - E2nodeComponentConfigAdditionAck_List_t E2nodeComponentConfigAdditionAck_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupResponseIEs_t; -typedef struct E2setupFailureIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2setupFailureIEs__value { - E2setupFailureIEs__value_PR present; - union E2setupFailureIEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - TNLinformation_t TNLinformation; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupFailureIEs_t; -typedef struct E2connectionUpdate_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdate_IEs__value { - E2connectionUpdate_IEs__value_PR present; - union E2connectionUpdate_IEs__value_u { - TransactionID_t TransactionID; - E2connectionUpdate_List_t E2connectionUpdate_List; - E2connectionUpdateRemove_List_t E2connectionUpdateRemove_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_IEs_t; -typedef struct E2connectionUpdateAck_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdateAck_IEs__value { - E2connectionUpdateAck_IEs__value_PR present; - union E2connectionUpdateAck_IEs__value_u { - TransactionID_t TransactionID; - E2connectionUpdate_List_t E2connectionUpdate_List; - E2connectionSetupFailed_List_t E2connectionSetupFailed_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateAck_IEs_t; -typedef struct E2connectionUpdateFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdateFailure_IEs__value { - E2connectionUpdateFailure_IEs__value_PR present; - union E2connectionUpdateFailure_IEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateFailure_IEs_t; -typedef struct E2nodeConfigurationUpdate_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeConfigurationUpdate_IEs__value { - E2nodeConfigurationUpdate_IEs__value_PR present; - union E2nodeConfigurationUpdate_IEs__value_u { - TransactionID_t TransactionID; - GlobalE2node_ID_t GlobalE2node_ID; - E2nodeComponentConfigAddition_List_t E2nodeComponentConfigAddition_List; - E2nodeComponentConfigUpdate_List_t E2nodeComponentConfigUpdate_List; - E2nodeComponentConfigRemoval_List_t E2nodeComponentConfigRemoval_List; - E2nodeTNLassociationRemoval_List_t E2nodeTNLassociationRemoval_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdate_IEs_t; -typedef struct E2nodeConfigurationUpdateAcknowledge_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeConfigurationUpdateAcknowledge_IEs__value { - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR present; - union E2nodeConfigurationUpdateAcknowledge_IEs__value_u { - TransactionID_t TransactionID; - E2nodeComponentConfigAdditionAck_List_t E2nodeComponentConfigAdditionAck_List; - E2nodeComponentConfigUpdateAck_List_t E2nodeComponentConfigUpdateAck_List; - E2nodeComponentConfigRemovalAck_List_t E2nodeComponentConfigRemovalAck_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdateAcknowledge_IEs_t; -typedef struct E2nodeConfigurationUpdateFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeConfigurationUpdateFailure_IEs__value { - E2nodeConfigurationUpdateFailure_IEs__value_PR present; - union E2nodeConfigurationUpdateFailure_IEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdateFailure_IEs_t; -typedef struct ResetRequestIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct ResetRequestIEs__value { - ResetRequestIEs__value_PR present; - union ResetRequestIEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetRequestIEs_t; -typedef struct ResetResponseIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct ResetResponseIEs__value { - ResetResponseIEs__value_PR present; - union ResetResponseIEs__value_u { - TransactionID_t TransactionID; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetResponseIEs_t; -typedef struct RICserviceUpdate_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceUpdate_IEs__value { - RICserviceUpdate_IEs__value_PR present; - union RICserviceUpdate_IEs__value_u { - TransactionID_t TransactionID; - RANfunctions_List_t RANfunctions_List; - RANfunctionsID_List_t RANfunctionsID_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdate_IEs_t; -typedef struct RICserviceUpdateAcknowledge_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceUpdateAcknowledge_IEs__value { - RICserviceUpdateAcknowledge_IEs__value_PR present; - union RICserviceUpdateAcknowledge_IEs__value_u { - TransactionID_t TransactionID; - RANfunctionsID_List_t RANfunctionsID_List; - RANfunctionsIDcause_List_t RANfunctionsIDcause_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateAcknowledge_IEs_t; -typedef struct RICserviceUpdateFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceUpdateFailure_IEs__value { - RICserviceUpdateFailure_IEs__value_PR present; - union RICserviceUpdateFailure_IEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateFailure_IEs_t; -typedef struct RICserviceQuery_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceQuery_IEs__value { - RICserviceQuery_IEs__value_PR present; - union RICserviceQuery_IEs__value_u { - TransactionID_t TransactionID; - RANfunctionsID_List_t RANfunctionsID_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceQuery_IEs_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1; -extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5; -extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9; -extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_ItemIEs_specs_13; -extern asn_TYPE_member_t asn_MBR_RICsubscription_withCause_ItemIEs_13[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_ItemIEs_specs_17; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_ItemIEs_17[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_21; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_ItemIEs_21[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_ItemIEs_specs_25; -extern asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_ItemIEs_25[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_29; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_ItemIEs_29[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_33; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_33[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_37; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_37[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_41; -extern asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_41[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_45; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_45[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_49; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_49[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_53; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_53[3]; -extern asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_57; -extern asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_57[3]; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_61; -extern asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_61[3]; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_65; -extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_65[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_69; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_69[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_73; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_73[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_77; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_77[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_81; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_81[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_85; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_85[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_89; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_89[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_IEs_specs_93; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_IEs_93[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICindication_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_97; -extern asn_TYPE_member_t asn_MBR_RICindication_IEs_97[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_101; -extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_101[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_105; -extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_105[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_109; -extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_109[3]; -extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_113; -extern asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_113[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_117; -extern asn_TYPE_member_t asn_MBR_E2setupRequestIEs_117[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_121; -extern asn_TYPE_member_t asn_MBR_E2setupResponseIEs_121[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_125; -extern asn_TYPE_member_t asn_MBR_E2setupFailureIEs_125[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_IEs_specs_129; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_IEs_129[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAck_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAck_IEs_specs_133; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateAck_IEs_133[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_IEs_specs_137; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_IEs_137[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_IEs_specs_141; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_IEs_141[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_IEs_specs_145; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_IEs_145[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_IEs_specs_149; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_IEs_149[3]; -extern asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_153; -extern asn_TYPE_member_t asn_MBR_ResetRequestIEs_153[3]; -extern asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_157; -extern asn_TYPE_member_t asn_MBR_ResetResponseIEs_157[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_161; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_161[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_165; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_165[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_169; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_169[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_173; -extern asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_173[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_Field_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.c deleted file mode 100644 index 369845c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ProtocolIE-FieldPair.h" - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.h deleted file mode 100644 index 485ab58..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-FieldPair.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ProtocolIE_FieldPair_H_ -#define _ProtocolIE_FieldPair_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_FieldPair_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ID.c deleted file mode 100644 index 6fb4247..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ID.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ProtocolIE-ID.h" - -int -ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = { - "ProtocolIE-ID", - "ProtocolIE-ID", - &asn_OP_NativeInteger, - asn_DEF_ProtocolIE_ID_tags_1, - sizeof(asn_DEF_ProtocolIE_ID_tags_1) - /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ - asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_ID_tags_1) - /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ - { &asn_OER_type_ProtocolIE_ID_constr_1, &asn_PER_type_ProtocolIE_ID_constr_1, ProtocolIE_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ID.h deleted file mode 100644 index a50dc2d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-ID.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ProtocolIE_ID_H_ -#define _ProtocolIE_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ProtocolIE-ID */ -typedef long ProtocolIE_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID; -asn_struct_free_f ProtocolIE_ID_free; -asn_struct_print_f ProtocolIE_ID_print; -asn_constr_check_f ProtocolIE_ID_constraint; -ber_type_decoder_f ProtocolIE_ID_decode_ber; -der_type_encoder_f ProtocolIE_ID_encode_der; -xer_type_decoder_f ProtocolIE_ID_decode_xer; -xer_type_encoder_f ProtocolIE_ID_encode_xer; -oer_type_decoder_f ProtocolIE_ID_decode_oer; -oer_type_encoder_f ProtocolIE_ID_encode_oer; -per_type_decoder_f ProtocolIE_ID_decode_uper; -per_type_encoder_f ProtocolIE_ID_encode_uper; -per_type_decoder_f ProtocolIE_ID_decode_aper; -per_type_encoder_f ProtocolIE_ID_encode_aper; -#define ProtocolIE_ID_id_Cause ((ProtocolIE_ID_t)1) -#define ProtocolIE_ID_id_CriticalityDiagnostics ((ProtocolIE_ID_t)2) -#define ProtocolIE_ID_id_GlobalE2node_ID ((ProtocolIE_ID_t)3) -#define ProtocolIE_ID_id_GlobalRIC_ID ((ProtocolIE_ID_t)4) -#define ProtocolIE_ID_id_RANfunctionID ((ProtocolIE_ID_t)5) -#define ProtocolIE_ID_id_RANfunctionID_Item ((ProtocolIE_ID_t)6) -#define ProtocolIE_ID_id_RANfunctionIEcause_Item ((ProtocolIE_ID_t)7) -#define ProtocolIE_ID_id_RANfunction_Item ((ProtocolIE_ID_t)8) -#define ProtocolIE_ID_id_RANfunctionsAccepted ((ProtocolIE_ID_t)9) -#define ProtocolIE_ID_id_RANfunctionsAdded ((ProtocolIE_ID_t)10) -#define ProtocolIE_ID_id_RANfunctionsDeleted ((ProtocolIE_ID_t)11) -#define ProtocolIE_ID_id_RANfunctionsModified ((ProtocolIE_ID_t)12) -#define ProtocolIE_ID_id_RANfunctionsRejected ((ProtocolIE_ID_t)13) -#define ProtocolIE_ID_id_RICaction_Admitted_Item ((ProtocolIE_ID_t)14) -#define ProtocolIE_ID_id_RICactionID ((ProtocolIE_ID_t)15) -#define ProtocolIE_ID_id_RICaction_NotAdmitted_Item ((ProtocolIE_ID_t)16) -#define ProtocolIE_ID_id_RICactions_Admitted ((ProtocolIE_ID_t)17) -#define ProtocolIE_ID_id_RICactions_NotAdmitted ((ProtocolIE_ID_t)18) -#define ProtocolIE_ID_id_RICaction_ToBeSetup_Item ((ProtocolIE_ID_t)19) -#define ProtocolIE_ID_id_RICcallProcessID ((ProtocolIE_ID_t)20) -#define ProtocolIE_ID_id_RICcontrolAckRequest ((ProtocolIE_ID_t)21) -#define ProtocolIE_ID_id_RICcontrolHeader ((ProtocolIE_ID_t)22) -#define ProtocolIE_ID_id_RICcontrolMessage ((ProtocolIE_ID_t)23) -#define ProtocolIE_ID_id_RICcontrolStatus ((ProtocolIE_ID_t)24) -#define ProtocolIE_ID_id_RICindicationHeader ((ProtocolIE_ID_t)25) -#define ProtocolIE_ID_id_RICindicationMessage ((ProtocolIE_ID_t)26) -#define ProtocolIE_ID_id_RICindicationSN ((ProtocolIE_ID_t)27) -#define ProtocolIE_ID_id_RICindicationType ((ProtocolIE_ID_t)28) -#define ProtocolIE_ID_id_RICrequestID ((ProtocolIE_ID_t)29) -#define ProtocolIE_ID_id_RICsubscriptionDetails ((ProtocolIE_ID_t)30) -#define ProtocolIE_ID_id_TimeToWait ((ProtocolIE_ID_t)31) -#define ProtocolIE_ID_id_RICcontrolOutcome ((ProtocolIE_ID_t)32) -#define ProtocolIE_ID_id_E2nodeComponentConfigUpdate ((ProtocolIE_ID_t)33) -#define ProtocolIE_ID_id_E2nodeComponentConfigUpdate_Item ((ProtocolIE_ID_t)34) -#define ProtocolIE_ID_id_E2nodeComponentConfigUpdateAck ((ProtocolIE_ID_t)35) -#define ProtocolIE_ID_id_E2nodeComponentConfigUpdateAck_Item ((ProtocolIE_ID_t)36) -#define ProtocolIE_ID_id_E2connectionSetup ((ProtocolIE_ID_t)39) -#define ProtocolIE_ID_id_E2connectionSetupFailed ((ProtocolIE_ID_t)40) -#define ProtocolIE_ID_id_E2connectionSetupFailed_Item ((ProtocolIE_ID_t)41) -#define ProtocolIE_ID_id_E2connectionFailed_Item ((ProtocolIE_ID_t)42) -#define ProtocolIE_ID_id_E2connectionUpdate_Item ((ProtocolIE_ID_t)43) -#define ProtocolIE_ID_id_E2connectionUpdateAdd ((ProtocolIE_ID_t)44) -#define ProtocolIE_ID_id_E2connectionUpdateModify ((ProtocolIE_ID_t)45) -#define ProtocolIE_ID_id_E2connectionUpdateRemove ((ProtocolIE_ID_t)46) -#define ProtocolIE_ID_id_E2connectionUpdateRemove_Item ((ProtocolIE_ID_t)47) -#define ProtocolIE_ID_id_TNLinformation ((ProtocolIE_ID_t)48) -#define ProtocolIE_ID_id_TransactionID ((ProtocolIE_ID_t)49) -#define ProtocolIE_ID_id_E2nodeComponentConfigAddition ((ProtocolIE_ID_t)50) -#define ProtocolIE_ID_id_E2nodeComponentConfigAddition_Item ((ProtocolIE_ID_t)51) -#define ProtocolIE_ID_id_E2nodeComponentConfigAdditionAck ((ProtocolIE_ID_t)52) -#define ProtocolIE_ID_id_E2nodeComponentConfigAdditionAck_Item ((ProtocolIE_ID_t)53) -#define ProtocolIE_ID_id_E2nodeComponentConfigRemoval ((ProtocolIE_ID_t)54) -#define ProtocolIE_ID_id_E2nodeComponentConfigRemoval_Item ((ProtocolIE_ID_t)55) -#define ProtocolIE_ID_id_E2nodeComponentConfigRemovalAck ((ProtocolIE_ID_t)56) -#define ProtocolIE_ID_id_E2nodeComponentConfigRemovalAck_Item ((ProtocolIE_ID_t)57) -#define ProtocolIE_ID_id_E2nodeTNLassociationRemoval ((ProtocolIE_ID_t)58) -#define ProtocolIE_ID_id_E2nodeTNLassociationRemoval_Item ((ProtocolIE_ID_t)59) -#define ProtocolIE_ID_id_RICsubscriptionToBeRemoved ((ProtocolIE_ID_t)50) -#define ProtocolIE_ID_id_RICsubscription_withCause_Item ((ProtocolIE_ID_t)51) - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-SingleContainer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-SingleContainer.c deleted file mode 100644 index e56a8dc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-SingleContainer.c +++ /dev/null @@ -1,400 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ProtocolIE-SingleContainer.h" - -/* - * This type is implemented using RICaction_ToBeSetup_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RICaction_Admitted_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RICaction_NotAdmitted_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RICsubscription_withCause_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2connectionUpdate_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2connectionUpdateRemove_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2connectionSetupFailed_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigAddition_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigUpdate_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigRemoval_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeTNLassociationRemoval_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigAdditionAck_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigUpdateAck_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigRemovalAck_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RANfunction_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RANfunctionID_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RANfunctionIDcause_ItemIEs, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P0 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_ToBeSetup_ItemIEs_1, - 3, /* Elements count */ - &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P1 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_Admitted_ItemIEs_5, - 3, /* Elements count */ - &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P2 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_NotAdmitted_ItemIEs_9, - 3, /* Elements count */ - &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P3 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscription_withCause_ItemIEs_13, - 3, /* Elements count */ - &asn_SPC_RICsubscription_withCause_ItemIEs_specs_13 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P4 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_ItemIEs_17, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdate_ItemIEs_specs_17 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P5 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateRemove_ItemIEs_21, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_21 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P6 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionSetupFailed_ItemIEs_25, - 3, /* Elements count */ - &asn_SPC_E2connectionSetupFailed_ItemIEs_specs_25 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P7 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAddition_ItemIEs_29, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_29 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P8 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_33, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_33 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P9 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_37, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_37 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P10 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_41, - 3, /* Elements count */ - &asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_41 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P11 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_45, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_45 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P12 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_49, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_49 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P13 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_53, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_53 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P14 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_ItemIEs_57, - 3, /* Elements count */ - &asn_SPC_RANfunction_ItemIEs_specs_57 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P15 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionID_ItemIEs_61, - 3, /* Elements count */ - &asn_SPC_RANfunctionID_ItemIEs_specs_61 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P16 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionIDcause_ItemIEs_65, - 3, /* Elements count */ - &asn_SPC_RANfunctionIDcause_ItemIEs_specs_65 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-SingleContainer.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-SingleContainer.h deleted file mode 100644 index e3d59b5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ProtocolIE-SingleContainer.h +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ProtocolIE_SingleContainer_H_ -#define _ProtocolIE_SingleContainer_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Field.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ProtocolIE-SingleContainer */ -typedef RICaction_ToBeSetup_ItemIEs_t ProtocolIE_SingleContainer_1920P0_t; -typedef RICaction_Admitted_ItemIEs_t ProtocolIE_SingleContainer_1920P1_t; -typedef RICaction_NotAdmitted_ItemIEs_t ProtocolIE_SingleContainer_1920P2_t; -typedef RICsubscription_withCause_ItemIEs_t ProtocolIE_SingleContainer_1920P3_t; -typedef E2connectionUpdate_ItemIEs_t ProtocolIE_SingleContainer_1920P4_t; -typedef E2connectionUpdateRemove_ItemIEs_t ProtocolIE_SingleContainer_1920P5_t; -typedef E2connectionSetupFailed_ItemIEs_t ProtocolIE_SingleContainer_1920P6_t; -typedef E2nodeComponentConfigAddition_ItemIEs_t ProtocolIE_SingleContainer_1920P7_t; -typedef E2nodeComponentConfigUpdate_ItemIEs_t ProtocolIE_SingleContainer_1920P8_t; -typedef E2nodeComponentConfigRemoval_ItemIEs_t ProtocolIE_SingleContainer_1920P9_t; -typedef E2nodeTNLassociationRemoval_ItemIEs_t ProtocolIE_SingleContainer_1920P10_t; -typedef E2nodeComponentConfigAdditionAck_ItemIEs_t ProtocolIE_SingleContainer_1920P11_t; -typedef E2nodeComponentConfigUpdateAck_ItemIEs_t ProtocolIE_SingleContainer_1920P12_t; -typedef E2nodeComponentConfigRemovalAck_ItemIEs_t ProtocolIE_SingleContainer_1920P13_t; -typedef RANfunction_ItemIEs_t ProtocolIE_SingleContainer_1920P14_t; -typedef RANfunctionID_ItemIEs_t ProtocolIE_SingleContainer_1920P15_t; -typedef RANfunctionIDcause_ItemIEs_t ProtocolIE_SingleContainer_1920P16_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P0; -asn_struct_free_f ProtocolIE_SingleContainer_1920P0_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P0_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P0_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P0_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P0_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P0_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P0_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P0_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P0_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P0_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P0_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P0_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P0_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P1; -asn_struct_free_f ProtocolIE_SingleContainer_1920P1_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P1_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P1_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P1_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P1_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P1_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P1_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P1_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P1_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P1_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P1_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P1_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P1_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P2; -asn_struct_free_f ProtocolIE_SingleContainer_1920P2_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P2_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P2_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P2_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P2_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P2_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P2_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P2_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P2_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P2_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P2_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P2_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P2_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P3; -asn_struct_free_f ProtocolIE_SingleContainer_1920P3_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P3_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P3_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P3_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P3_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P3_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P3_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P3_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P3_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P3_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P3_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P3_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P3_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P4; -asn_struct_free_f ProtocolIE_SingleContainer_1920P4_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P4_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P4_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P4_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P4_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P4_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P4_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P4_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P4_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P4_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P4_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P4_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P4_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P5; -asn_struct_free_f ProtocolIE_SingleContainer_1920P5_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P5_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P5_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P5_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P5_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P5_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P5_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P5_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P5_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P5_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P5_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P5_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P5_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P6; -asn_struct_free_f ProtocolIE_SingleContainer_1920P6_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P6_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P6_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P6_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P6_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P6_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P6_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P6_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P6_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P6_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P6_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P6_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P6_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P7; -asn_struct_free_f ProtocolIE_SingleContainer_1920P7_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P7_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P7_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P7_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P7_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P7_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P7_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P7_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P7_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P7_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P7_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P7_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P7_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P8; -asn_struct_free_f ProtocolIE_SingleContainer_1920P8_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P8_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P8_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P8_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P8_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P8_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P8_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P8_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P8_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P8_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P8_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P8_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P8_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P9; -asn_struct_free_f ProtocolIE_SingleContainer_1920P9_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P9_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P9_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P9_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P9_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P9_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P9_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P9_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P9_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P9_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P9_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P9_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P9_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P10; -asn_struct_free_f ProtocolIE_SingleContainer_1920P10_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P10_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P10_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P10_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P10_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P10_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P10_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P10_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P10_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P10_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P10_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P10_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P10_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P11; -asn_struct_free_f ProtocolIE_SingleContainer_1920P11_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P11_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P11_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P11_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P11_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P11_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P11_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P11_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P11_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P11_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P11_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P11_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P11_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P12; -asn_struct_free_f ProtocolIE_SingleContainer_1920P12_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P12_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P12_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P12_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P12_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P12_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P12_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P12_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P12_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P12_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P12_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P12_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P12_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P13; -asn_struct_free_f ProtocolIE_SingleContainer_1920P13_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P13_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P13_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P13_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P13_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P13_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P13_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P13_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P13_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P13_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P13_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P13_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P13_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P14; -asn_struct_free_f ProtocolIE_SingleContainer_1920P14_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P14_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P14_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P14_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P14_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P14_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P14_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P14_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P14_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P14_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P14_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P14_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P14_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P15; -asn_struct_free_f ProtocolIE_SingleContainer_1920P15_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P15_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P15_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P15_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P15_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P15_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P15_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P15_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P15_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P15_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P15_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P15_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P15_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P16; -asn_struct_free_f ProtocolIE_SingleContainer_1920P16_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P16_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P16_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P16_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P16_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P16_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P16_encode_xer; -oer_type_decoder_f ProtocolIE_SingleContainer_1920P16_decode_oer; -oer_type_encoder_f ProtocolIE_SingleContainer_1920P16_encode_oer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P16_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P16_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P16_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P16_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_SingleContainer_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RAN-Container.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RAN-Container.c deleted file mode 100644 index 373508b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RAN-Container.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RAN-Container.h" - -static asn_oer_constraints_t asn_OER_type_reportContainer_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_reportContainer_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_reportContainer_3[] = { - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container__reportContainer, choice.oDU_UE), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_DU_Usage_Report_Per_UE, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oDU-UE" - }, - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container__reportContainer, choice.oCU_CP_UE), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CU_CP_Usage_Report_Per_UE, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oCU-CP-UE" - }, - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container__reportContainer, choice.oCU_UP_UE), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CU_UP_Usage_Report_Per_UE, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "oCU-UP-UE" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_reportContainer_tag2el_3[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oDU-UE */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* oCU-CP-UE */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* oCU-UP-UE */ -}; -static asn_CHOICE_specifics_t asn_SPC_reportContainer_specs_3 = { - sizeof(struct RAN_Container__reportContainer), - offsetof(struct RAN_Container__reportContainer, _asn_ctx), - offsetof(struct RAN_Container__reportContainer, present), - sizeof(((struct RAN_Container__reportContainer *)0)->present), - asn_MAP_reportContainer_tag2el_3, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_reportContainer_3 = { - "reportContainer", - "reportContainer", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { &asn_OER_type_reportContainer_constr_3, &asn_PER_type_reportContainer_constr_3, CHOICE_constraint }, - asn_MBR_reportContainer_3, - 3, /* Elements count */ - &asn_SPC_reportContainer_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RAN_Container_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container, timestamp), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Timestamp, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "timestamp" - }, - { ATF_NOFLAGS, 0, offsetof(struct RAN_Container, reportContainer), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_reportContainer_3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "reportContainer" - }, -}; -static const ber_tlv_tag_t asn_DEF_RAN_Container_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RAN_Container_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timestamp */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reportContainer */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RAN_Container_specs_1 = { - sizeof(struct RAN_Container), - offsetof(struct RAN_Container, _asn_ctx), - asn_MAP_RAN_Container_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RAN_Container = { - "RAN-Container", - "RAN-Container", - &asn_OP_SEQUENCE, - asn_DEF_RAN_Container_tags_1, - sizeof(asn_DEF_RAN_Container_tags_1) - /sizeof(asn_DEF_RAN_Container_tags_1[0]), /* 1 */ - asn_DEF_RAN_Container_tags_1, /* Same as above */ - sizeof(asn_DEF_RAN_Container_tags_1) - /sizeof(asn_DEF_RAN_Container_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RAN_Container_1, - 2, /* Elements count */ - &asn_SPC_RAN_Container_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RAN-Container.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RAN-Container.h deleted file mode 100644 index 8184460..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RAN-Container.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RAN_Container_H_ -#define _RAN_Container_H_ - - -#include - -/* Including external dependencies */ -#include "Timestamp.h" -#include "DU-Usage-Report-Per-UE.h" -#include "CU-CP-Usage-Report-Per-UE.h" -#include "CU-UP-Usage-Report-Per-UE.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RAN_Container__reportContainer_PR { - RAN_Container__reportContainer_PR_NOTHING, /* No components present */ - RAN_Container__reportContainer_PR_oDU_UE, - RAN_Container__reportContainer_PR_oCU_CP_UE, - RAN_Container__reportContainer_PR_oCU_UP_UE - /* Extensions may appear below */ - -} RAN_Container__reportContainer_PR; - -/* RAN-Container */ -typedef struct RAN_Container { - Timestamp_t timestamp; - struct RAN_Container__reportContainer { - RAN_Container__reportContainer_PR present; - union RAN_Container__reportContainer_u { - DU_Usage_Report_Per_UE_t oDU_UE; - CU_CP_Usage_Report_Per_UE_t oCU_CP_UE; - CU_UP_Usage_Report_Per_UE_t oCU_UP_UE; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } reportContainer; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RAN_Container_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RAN_Container; -extern asn_SEQUENCE_specifics_t asn_SPC_RAN_Container_specs_1; -extern asn_TYPE_member_t asn_MBR_RAN_Container_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RAN_Container_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.c deleted file mode 100644 index 4cd1b70..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RANcallProcess-ID-string.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -RANcallProcess_ID_string_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_RANcallProcess_ID_string_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_RANcallProcess_ID_string_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -static asn_per_constraints_t asn_PER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_RANcallProcess_ID_string_1_v2c, /* Value to PER code map */ - asn_PER_MAP_RANcallProcess_ID_string_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANcallProcess_ID_string_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANcallProcess_ID_string = { - "RANcallProcess-ID-string", - "RANcallProcess-ID-string", - &asn_OP_PrintableString, - asn_DEF_RANcallProcess_ID_string_tags_1, - sizeof(asn_DEF_RANcallProcess_ID_string_tags_1) - /sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */ - asn_DEF_RANcallProcess_ID_string_tags_1, /* Same as above */ - sizeof(asn_DEF_RANcallProcess_ID_string_tags_1) - /sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */ - { &asn_OER_type_RANcallProcess_ID_string_constr_1, &asn_PER_type_RANcallProcess_ID_string_constr_1, RANcallProcess_ID_string_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.h deleted file mode 100644 index 087cdc0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANcallProcess-ID-string.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RANcallProcess_ID_string_H_ -#define _RANcallProcess_ID_string_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANcallProcess-ID-string */ -typedef PrintableString_t RANcallProcess_ID_string_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANcallProcess_ID_string; -asn_struct_free_f RANcallProcess_ID_string_free; -asn_struct_print_f RANcallProcess_ID_string_print; -asn_constr_check_f RANcallProcess_ID_string_constraint; -ber_type_decoder_f RANcallProcess_ID_string_decode_ber; -der_type_encoder_f RANcallProcess_ID_string_encode_der; -xer_type_decoder_f RANcallProcess_ID_string_decode_xer; -xer_type_encoder_f RANcallProcess_ID_string_encode_xer; -oer_type_decoder_f RANcallProcess_ID_string_decode_oer; -oer_type_encoder_f RANcallProcess_ID_string_encode_oer; -per_type_decoder_f RANcallProcess_ID_string_decode_uper; -per_type_encoder_f RANcallProcess_ID_string_encode_uper; -per_type_decoder_f RANcallProcess_ID_string_decode_aper; -per_type_encoder_f RANcallProcess_ID_string_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANcallProcess_ID_string_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Item.c deleted file mode 100644 index fc406d5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Item.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunction-Item.h" - -static asn_TYPE_member_t asn_MBR_RANfunction_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionDefinition), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionDefinition" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionRevision), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionRevision, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionRevision" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionOID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionOID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionOID" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunction_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunctionRevision */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunctionOID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Item_specs_1 = { - sizeof(struct RANfunction_Item), - offsetof(struct RANfunction_Item, _asn_ctx), - asn_MAP_RANfunction_Item_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunction_Item = { - "RANfunction-Item", - "RANfunction-Item", - &asn_OP_SEQUENCE, - asn_DEF_RANfunction_Item_tags_1, - sizeof(asn_DEF_RANfunction_Item_tags_1) - /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ - asn_DEF_RANfunction_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunction_Item_tags_1) - /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_Item_1, - 4, /* Elements count */ - &asn_SPC_RANfunction_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Item.h deleted file mode 100644 index df49735..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunction_Item_H_ -#define _RANfunction_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RANfunctionID.h" -#include "RANfunctionDefinition.h" -#include "RANfunctionRevision.h" -#include "RANfunctionOID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunction-Item */ -typedef struct RANfunction_Item { - RANfunctionID_t ranFunctionID; - RANfunctionDefinition_t ranFunctionDefinition; - RANfunctionRevision_t ranFunctionRevision; - RANfunctionOID_t ranFunctionOID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunction_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunction_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Name.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Name.c deleted file mode 100644 index 72a90a9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Name.c +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RANfunction-Name.h" - -static const int permitted_alphabet_table_2[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_2[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_2(const void *sptr) { - const int *table = permitted_alphabet_table_2; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static const int permitted_alphabet_table_3[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_3[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_3(const void *sptr) { - const int *table = permitted_alphabet_table_3; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static const int permitted_alphabet_table_4[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_4[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_4(const void *sptr) { - const int *table = permitted_alphabet_table_4; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -static int -memb_ranFunction_ShortName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_2(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_ranFunction_ShortName_2_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_2)/sizeof(permitted_alphabet_table_2[0])) - return -1; - return permitted_alphabet_table_2[value] - 1; -} -static int asn_PER_MAP_ranFunction_ShortName_2_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_2)/sizeof(permitted_alphabet_code2value_2[0])) - return -1; - return permitted_alphabet_code2value_2[code]; -} -static int -memb_ranFunction_E2SM_OID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 1000) - && !check_permitted_alphabet_3(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_ranFunction_E2SM_OID_3_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0])) - return -1; - return permitted_alphabet_table_3[value] - 1; -} -static int asn_PER_MAP_ranFunction_E2SM_OID_3_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0])) - return -1; - return permitted_alphabet_code2value_3[code]; -} -static int -memb_ranFunction_Description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_4(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_ranFunction_Description_4_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0])) - return -1; - return permitted_alphabet_table_4[value] - 1; -} -static int asn_PER_MAP_ranFunction_Description_4_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0])) - return -1; - return permitted_alphabet_code2value_4[code]; -} -static asn_oer_constraints_t asn_OER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -static asn_per_constraints_t asn_PER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_ranFunction_ShortName_2_v2c, /* Value to PER code map */ - asn_PER_MAP_ranFunction_ShortName_2_c2v /* PER code to value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -static asn_per_constraints_t asn_PER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */, - asn_PER_MAP_ranFunction_E2SM_OID_3_v2c, /* Value to PER code map */ - asn_PER_MAP_ranFunction_E2SM_OID_3_c2v /* PER code to value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ranFunction_Description_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -static asn_per_constraints_t asn_PER_memb_ranFunction_Description_constr_4 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_ranFunction_Description_4_v2c, /* Value to PER code map */ - asn_PER_MAP_ranFunction_Description_4_c2v /* PER code to value map */ -}; -asn_TYPE_member_t asn_MBR_RANfunction_Name_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_ShortName), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { &asn_OER_memb_ranFunction_ShortName_constr_2, &asn_PER_memb_ranFunction_ShortName_constr_2, memb_ranFunction_ShortName_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-ShortName" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_E2SM_OID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { &asn_OER_memb_ranFunction_E2SM_OID_constr_3, &asn_PER_memb_ranFunction_E2SM_OID_constr_3, memb_ranFunction_E2SM_OID_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-E2SM-OID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_Description), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PrintableString, - 0, - { &asn_OER_memb_ranFunction_Description_constr_4, &asn_PER_memb_ranFunction_Description_constr_4, memb_ranFunction_Description_constraint_1 }, - 0, 0, /* No default value */ - "ranFunction-Description" - }, - { ATF_POINTER, 1, offsetof(struct RANfunction_Name, ranFunction_Instance), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunction-Instance" - }, -}; -static const int asn_MAP_RANfunction_Name_oms_1[] = { 3 }; -static const ber_tlv_tag_t asn_DEF_RANfunction_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Name_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-ShortName */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunction-E2SM-OID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunction-Description */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunction-Instance */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1 = { - sizeof(struct RANfunction_Name), - offsetof(struct RANfunction_Name, _asn_ctx), - asn_MAP_RANfunction_Name_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_RANfunction_Name_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunction_Name = { - "RANfunction-Name", - "RANfunction-Name", - &asn_OP_SEQUENCE, - asn_DEF_RANfunction_Name_tags_1, - sizeof(asn_DEF_RANfunction_Name_tags_1) - /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */ - asn_DEF_RANfunction_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunction_Name_tags_1) - /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_Name_1, - 4, /* Elements count */ - &asn_SPC_RANfunction_Name_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Name.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Name.h deleted file mode 100644 index 0fe182b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunction-Name.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RANfunction_Name_H_ -#define _RANfunction_Name_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunction-Name */ -typedef struct RANfunction_Name { - PrintableString_t ranFunction_ShortName; - PrintableString_t ranFunction_E2SM_OID; - PrintableString_t ranFunction_Description; - long *ranFunction_Instance; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunction_Name_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Name; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1; -extern asn_TYPE_member_t asn_MBR_RANfunction_Name_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunction_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionDefinition.c deleted file mode 100644 index 14eaaec..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionDefinition.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunctionDefinition.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RANfunctionDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition = { - "RANfunctionDefinition", - "RANfunctionDefinition", - &asn_OP_OCTET_STRING, - asn_DEF_RANfunctionDefinition_tags_1, - sizeof(asn_DEF_RANfunctionDefinition_tags_1) - /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionDefinition_tags_1) - /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionDefinition.h deleted file mode 100644 index c78ff90..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionDefinition.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunctionDefinition_H_ -#define _RANfunctionDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionDefinition */ -typedef OCTET_STRING_t RANfunctionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition; -asn_struct_free_f RANfunctionDefinition_free; -asn_struct_print_f RANfunctionDefinition_print; -asn_constr_check_f RANfunctionDefinition_constraint; -ber_type_decoder_f RANfunctionDefinition_decode_ber; -der_type_encoder_f RANfunctionDefinition_encode_der; -xer_type_decoder_f RANfunctionDefinition_decode_xer; -xer_type_encoder_f RANfunctionDefinition_encode_xer; -oer_type_decoder_f RANfunctionDefinition_decode_oer; -oer_type_encoder_f RANfunctionDefinition_encode_oer; -per_type_decoder_f RANfunctionDefinition_decode_uper; -per_type_encoder_f RANfunctionDefinition_encode_uper; -per_type_decoder_f RANfunctionDefinition_decode_aper; -per_type_encoder_f RANfunctionDefinition_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionDefinition_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID-Item.c deleted file mode 100644 index 563e65b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunctionID-Item.h" - -static asn_TYPE_member_t asn_MBR_RANfunctionID_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionRevision), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionRevision, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionRevision" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionID_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranFunctionRevision */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_Item_specs_1 = { - sizeof(struct RANfunctionID_Item), - offsetof(struct RANfunctionID_Item, _asn_ctx), - asn_MAP_RANfunctionID_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item = { - "RANfunctionID-Item", - "RANfunctionID-Item", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionID_Item_tags_1, - sizeof(asn_DEF_RANfunctionID_Item_tags_1) - /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionID_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionID_Item_tags_1) - /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionID_Item_1, - 2, /* Elements count */ - &asn_SPC_RANfunctionID_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID-Item.h deleted file mode 100644 index fc30438..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunctionID_Item_H_ -#define _RANfunctionID_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RANfunctionID.h" -#include "RANfunctionRevision.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionID-Item */ -typedef struct RANfunctionID_Item { - RANfunctionID_t ranFunctionID; - RANfunctionRevision_t ranFunctionRevision; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionID_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionID_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID.c deleted file mode 100644 index d835872..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunctionID.h" - -int -RANfunctionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 4095)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RANfunctionID_constr_1 CC_NOTUSED = { - { 2, 1 } /* (0..4095) */, - -1}; -asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionID = { - "RANfunctionID", - "RANfunctionID", - &asn_OP_NativeInteger, - asn_DEF_RANfunctionID_tags_1, - sizeof(asn_DEF_RANfunctionID_tags_1) - /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionID_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionID_tags_1) - /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ - { &asn_OER_type_RANfunctionID_constr_1, &asn_PER_type_RANfunctionID_constr_1, RANfunctionID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID.h deleted file mode 100644 index a44c4b4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunctionID_H_ -#define _RANfunctionID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionID */ -typedef long RANfunctionID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID; -asn_struct_free_f RANfunctionID_free; -asn_struct_print_f RANfunctionID_print; -asn_constr_check_f RANfunctionID_constraint; -ber_type_decoder_f RANfunctionID_decode_ber; -der_type_encoder_f RANfunctionID_encode_der; -xer_type_decoder_f RANfunctionID_decode_xer; -xer_type_encoder_f RANfunctionID_encode_xer; -oer_type_decoder_f RANfunctionID_decode_oer; -oer_type_encoder_f RANfunctionID_encode_oer; -per_type_decoder_f RANfunctionID_decode_uper; -per_type_encoder_f RANfunctionID_encode_uper; -per_type_decoder_f RANfunctionID_decode_aper; -per_type_encoder_f RANfunctionID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.c deleted file mode 100644 index 99f2b58..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunctionIDcause-Item.h" - -static asn_TYPE_member_t asn_MBR_RANfunctionIDcause_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_Item_specs_1 = { - sizeof(struct RANfunctionIDcause_Item), - offsetof(struct RANfunctionIDcause_Item, _asn_ctx), - asn_MAP_RANfunctionIDcause_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item = { - "RANfunctionIDcause-Item", - "RANfunctionIDcause-Item", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionIDcause_Item_tags_1, - sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) - /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionIDcause_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) - /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionIDcause_Item_1, - 2, /* Elements count */ - &asn_SPC_RANfunctionIDcause_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.h deleted file mode 100644 index 91621cf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionIDcause-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunctionIDcause_Item_H_ -#define _RANfunctionIDcause_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RANfunctionID.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionIDcause-Item */ -typedef struct RANfunctionIDcause_Item { - RANfunctionID_t ranFunctionID; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionIDcause_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionIDcause_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionOID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionOID.c deleted file mode 100644 index 11bfe86..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionOID.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunctionOID.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -RANfunctionOID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 1000) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_RANfunctionOID_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_RANfunctionOID_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RANfunctionOID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_RANfunctionOID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */, - asn_PER_MAP_RANfunctionOID_1_v2c, /* Value to PER code map */ - asn_PER_MAP_RANfunctionOID_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionOID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionOID = { - "RANfunctionOID", - "RANfunctionOID", - &asn_OP_PrintableString, - asn_DEF_RANfunctionOID_tags_1, - sizeof(asn_DEF_RANfunctionOID_tags_1) - /sizeof(asn_DEF_RANfunctionOID_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionOID_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionOID_tags_1) - /sizeof(asn_DEF_RANfunctionOID_tags_1[0]), /* 1 */ - { &asn_OER_type_RANfunctionOID_constr_1, &asn_PER_type_RANfunctionOID_constr_1, RANfunctionOID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionOID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionOID.h deleted file mode 100644 index 84085ab..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionOID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunctionOID_H_ -#define _RANfunctionOID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionOID */ -typedef PrintableString_t RANfunctionOID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RANfunctionOID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionOID; -asn_struct_free_f RANfunctionOID_free; -asn_struct_print_f RANfunctionOID_print; -asn_constr_check_f RANfunctionOID_constraint; -ber_type_decoder_f RANfunctionOID_decode_ber; -der_type_encoder_f RANfunctionOID_encode_der; -xer_type_decoder_f RANfunctionOID_decode_xer; -xer_type_encoder_f RANfunctionOID_encode_xer; -oer_type_decoder_f RANfunctionOID_decode_oer; -oer_type_encoder_f RANfunctionOID_encode_oer; -per_type_decoder_f RANfunctionOID_decode_uper; -per_type_encoder_f RANfunctionOID_encode_uper; -per_type_decoder_f RANfunctionOID_decode_aper; -per_type_encoder_f RANfunctionOID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionOID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionRevision.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionRevision.c deleted file mode 100644 index 940862b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionRevision.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunctionRevision.h" - -int -RANfunctionRevision_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 4095)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RANfunctionRevision_constr_1 CC_NOTUSED = { - { 2, 1 } /* (0..4095) */, - -1}; -asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionRevision_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision = { - "RANfunctionRevision", - "RANfunctionRevision", - &asn_OP_NativeInteger, - asn_DEF_RANfunctionRevision_tags_1, - sizeof(asn_DEF_RANfunctionRevision_tags_1) - /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionRevision_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionRevision_tags_1) - /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ - { &asn_OER_type_RANfunctionRevision_constr_1, &asn_PER_type_RANfunctionRevision_constr_1, RANfunctionRevision_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionRevision.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionRevision.h deleted file mode 100644 index 3190cdc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionRevision.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunctionRevision_H_ -#define _RANfunctionRevision_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionRevision */ -typedef long RANfunctionRevision_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision; -asn_struct_free_f RANfunctionRevision_free; -asn_struct_print_f RANfunctionRevision_print; -asn_constr_check_f RANfunctionRevision_constraint; -ber_type_decoder_f RANfunctionRevision_decode_ber; -der_type_encoder_f RANfunctionRevision_encode_der; -xer_type_decoder_f RANfunctionRevision_decode_xer; -xer_type_encoder_f RANfunctionRevision_encode_xer; -oer_type_decoder_f RANfunctionRevision_decode_oer; -oer_type_encoder_f RANfunctionRevision_encode_oer; -per_type_decoder_f RANfunctionRevision_decode_uper; -per_type_encoder_f RANfunctionRevision_encode_uper; -per_type_decoder_f RANfunctionRevision_decode_aper; -per_type_encoder_f RANfunctionRevision_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionRevision_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctions-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctions-List.c deleted file mode 100644 index 3b1d0af..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctions-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunctions-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_RANfunctions_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_type_RANfunctions_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RANfunctions_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P14, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctions_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RANfunctions_List_specs_1 = { - sizeof(struct RANfunctions_List), - offsetof(struct RANfunctions_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctions_List = { - "RANfunctions-List", - "RANfunctions-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RANfunctions_List_tags_1, - sizeof(asn_DEF_RANfunctions_List_tags_1) - /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ - asn_DEF_RANfunctions_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctions_List_tags_1) - /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ - { &asn_OER_type_RANfunctions_List_constr_1, &asn_PER_type_RANfunctions_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RANfunctions_List_1, - 1, /* Single element */ - &asn_SPC_RANfunctions_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctions-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctions-List.h deleted file mode 100644 index 9cf4ac4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctions-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunctions_List_H_ -#define _RANfunctions_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RANfunctions-List */ -typedef struct RANfunctions_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctions_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctions_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctions_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsID-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsID-List.c deleted file mode 100644 index 0eb7988..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsID-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunctionsID-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_RANfunctionsID_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_type_RANfunctionsID_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RANfunctionsID_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P15, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionsID_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RANfunctionsID_List_specs_1 = { - sizeof(struct RANfunctionsID_List), - offsetof(struct RANfunctionsID_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List = { - "RANfunctionsID-List", - "RANfunctionsID-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RANfunctionsID_List_tags_1, - sizeof(asn_DEF_RANfunctionsID_List_tags_1) - /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionsID_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionsID_List_tags_1) - /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ - { &asn_OER_type_RANfunctionsID_List_constr_1, &asn_PER_type_RANfunctionsID_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RANfunctionsID_List_1, - 1, /* Single element */ - &asn_SPC_RANfunctionsID_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsID-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsID-List.h deleted file mode 100644 index ad5722a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsID-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunctionsID_List_H_ -#define _RANfunctionsID_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RANfunctionsID-List */ -typedef struct RANfunctionsID_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionsID_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionsID_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.c deleted file mode 100644 index f557347..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RANfunctionsIDcause-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_RANfunctionsIDcause_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..256)) */}; -static asn_per_constraints_t asn_PER_type_RANfunctionsIDcause_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RANfunctionsIDcause_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P16, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionsIDcause_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RANfunctionsIDcause_List_specs_1 = { - sizeof(struct RANfunctionsIDcause_List), - offsetof(struct RANfunctionsIDcause_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List = { - "RANfunctionsIDcause-List", - "RANfunctionsIDcause-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RANfunctionsIDcause_List_tags_1, - sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) - /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionsIDcause_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) - /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ - { &asn_OER_type_RANfunctionsIDcause_List_constr_1, &asn_PER_type_RANfunctionsIDcause_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RANfunctionsIDcause_List_1, - 1, /* Single element */ - &asn_SPC_RANfunctionsIDcause_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.h deleted file mode 100644 index 6d8de97..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RANfunctionsIDcause-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RANfunctionsIDcause_List_H_ -#define _RANfunctionsIDcause_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RANfunctionsIDcause-List */ -typedef struct RANfunctionsIDcause_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionsIDcause_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionsIDcause_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-EventTriggerStyle-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-EventTriggerStyle-List.c deleted file mode 100644 index 246322a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-EventTriggerStyle-List.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-EventTriggerStyle-List.h" - -asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_List, ric_EventTriggerFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-EventTriggerFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_RIC_EventTriggerStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RIC_EventTriggerStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_List_specs_1 = { - sizeof(struct RIC_EventTriggerStyle_List), - offsetof(struct RIC_EventTriggerStyle_List, _asn_ctx), - asn_MAP_RIC_EventTriggerStyle_List_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_List = { - "RIC-EventTriggerStyle-List", - "RIC-EventTriggerStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_RIC_EventTriggerStyle_List_tags_1, - sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1) - /sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ - asn_DEF_RIC_EventTriggerStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1) - /sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RIC_EventTriggerStyle_List_1, - 3, /* Elements count */ - &asn_SPC_RIC_EventTriggerStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-EventTriggerStyle-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-EventTriggerStyle-List.h deleted file mode 100644 index 18a6a8a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-EventTriggerStyle-List.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_EventTriggerStyle_List_H_ -#define _RIC_EventTriggerStyle_List_H_ - - -#include - -/* Including external dependencies */ -#include "RIC-Style-Type.h" -#include "RIC-Style-Name.h" -#include "RIC-Format-Type.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-EventTriggerStyle-List */ -typedef struct RIC_EventTriggerStyle_List { - RIC_Style_Type_t ric_EventTriggerStyle_Type; - RIC_Style_Name_t ric_EventTriggerStyle_Name; - RIC_Format_Type_t ric_EventTriggerFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RIC_EventTriggerStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_List_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_EventTriggerStyle_List_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Format-Type.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Format-Type.c deleted file mode 100644 index 53f0624..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Format-Type.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-Format-Type.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RIC_Format_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type = { - "RIC-Format-Type", - "RIC-Format-Type", - &asn_OP_NativeInteger, - asn_DEF_RIC_Format_Type_tags_1, - sizeof(asn_DEF_RIC_Format_Type_tags_1) - /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */ - asn_DEF_RIC_Format_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_Format_Type_tags_1) - /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Format-Type.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Format-Type.h deleted file mode 100644 index 81cec85..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Format-Type.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_Format_Type_H_ -#define _RIC_Format_Type_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-Format-Type */ -typedef long RIC_Format_Type_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type; -asn_struct_free_f RIC_Format_Type_free; -asn_struct_print_f RIC_Format_Type_print; -asn_constr_check_f RIC_Format_Type_constraint; -ber_type_decoder_f RIC_Format_Type_decode_ber; -der_type_encoder_f RIC_Format_Type_encode_der; -xer_type_decoder_f RIC_Format_Type_decode_xer; -xer_type_encoder_f RIC_Format_Type_encode_xer; -oer_type_decoder_f RIC_Format_Type_decode_oer; -oer_type_encoder_f RIC_Format_Type_encode_oer; -per_type_decoder_f RIC_Format_Type_decode_uper; -per_type_encoder_f RIC_Format_Type_encode_uper; -per_type_decoder_f RIC_Format_Type_decode_aper; -per_type_encoder_f RIC_Format_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_Format_Type_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.c deleted file mode 100644 index 93d4a15..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-ReportStyle-List.h" - -asn_TYPE_member_t asn_MBR_RIC_ReportStyle_List_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_ReportStyle_Type), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportStyle-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_ReportStyle_Name), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Style_Name, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-ReportStyle-Name" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_IndicationHeaderFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationHeaderFormat-Type" - }, - { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_IndicationMessageFormat_Type), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RIC_Format_Type, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ric-IndicationMessageFormat-Type" - }, -}; -static const ber_tlv_tag_t asn_DEF_RIC_ReportStyle_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RIC_ReportStyle_List_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-IndicationHeaderFormat-Type */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ric-IndicationMessageFormat-Type */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_List_specs_1 = { - sizeof(struct RIC_ReportStyle_List), - offsetof(struct RIC_ReportStyle_List, _asn_ctx), - asn_MAP_RIC_ReportStyle_List_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_List = { - "RIC-ReportStyle-List", - "RIC-ReportStyle-List", - &asn_OP_SEQUENCE, - asn_DEF_RIC_ReportStyle_List_tags_1, - sizeof(asn_DEF_RIC_ReportStyle_List_tags_1) - /sizeof(asn_DEF_RIC_ReportStyle_List_tags_1[0]), /* 1 */ - asn_DEF_RIC_ReportStyle_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_ReportStyle_List_tags_1) - /sizeof(asn_DEF_RIC_ReportStyle_List_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RIC_ReportStyle_List_1, - 4, /* Elements count */ - &asn_SPC_RIC_ReportStyle_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.h deleted file mode 100644 index af886aa..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-ReportStyle-List.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_ReportStyle_List_H_ -#define _RIC_ReportStyle_List_H_ - - -#include - -/* Including external dependencies */ -#include "RIC-Style-Type.h" -#include "RIC-Style-Name.h" -#include "RIC-Format-Type.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-ReportStyle-List */ -typedef struct RIC_ReportStyle_List { - RIC_Style_Type_t ric_ReportStyle_Type; - RIC_Style_Name_t ric_ReportStyle_Name; - RIC_Format_Type_t ric_IndicationHeaderFormat_Type; - RIC_Format_Type_t ric_IndicationMessageFormat_Type; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RIC_ReportStyle_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_List; -extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_List_specs_1; -extern asn_TYPE_member_t asn_MBR_RIC_ReportStyle_List_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_ReportStyle_List_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Name.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Name.c deleted file mode 100644 index 2c4a054..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Name.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-Style-Name.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -RIC_Style_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_RIC_Style_Name_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_RIC_Style_Name_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RIC_Style_Name_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_RIC_Style_Name_1_v2c, /* Value to PER code map */ - asn_PER_MAP_RIC_Style_Name_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_RIC_Style_Name_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name = { - "RIC-Style-Name", - "RIC-Style-Name", - &asn_OP_PrintableString, - asn_DEF_RIC_Style_Name_tags_1, - sizeof(asn_DEF_RIC_Style_Name_tags_1) - /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */ - asn_DEF_RIC_Style_Name_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_Style_Name_tags_1) - /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */ - { &asn_OER_type_RIC_Style_Name_constr_1, &asn_PER_type_RIC_Style_Name_constr_1, RIC_Style_Name_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Name.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Name.h deleted file mode 100644 index bb02b2c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Name.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_Style_Name_H_ -#define _RIC_Style_Name_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-Style-Name */ -typedef PrintableString_t RIC_Style_Name_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name; -asn_struct_free_f RIC_Style_Name_free; -asn_struct_print_f RIC_Style_Name_print; -asn_constr_check_f RIC_Style_Name_constraint; -ber_type_decoder_f RIC_Style_Name_decode_ber; -der_type_encoder_f RIC_Style_Name_encode_der; -xer_type_decoder_f RIC_Style_Name_decode_xer; -xer_type_encoder_f RIC_Style_Name_encode_xer; -oer_type_decoder_f RIC_Style_Name_decode_oer; -oer_type_encoder_f RIC_Style_Name_encode_oer; -per_type_decoder_f RIC_Style_Name_decode_uper; -per_type_encoder_f RIC_Style_Name_encode_uper; -per_type_decoder_f RIC_Style_Name_decode_aper; -per_type_encoder_f RIC_Style_Name_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_Style_Name_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Type.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Type.c deleted file mode 100644 index 5324c4a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Type.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RIC-Style-Type.h" - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RIC_Style_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type = { - "RIC-Style-Type", - "RIC-Style-Type", - &asn_OP_NativeInteger, - asn_DEF_RIC_Style_Type_tags_1, - sizeof(asn_DEF_RIC_Style_Type_tags_1) - /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */ - asn_DEF_RIC_Style_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_RIC_Style_Type_tags_1) - /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */ - { 0, 0, NativeInteger_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Type.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Type.h deleted file mode 100644 index 9948bb0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RIC-Style-Type.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RIC_Style_Type_H_ -#define _RIC_Style_Type_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* RIC-Style-Type */ -typedef long RIC_Style_Type_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type; -asn_struct_free_f RIC_Style_Type_free; -asn_struct_print_f RIC_Style_Type_print; -asn_constr_check_f RIC_Style_Type_constraint; -ber_type_decoder_f RIC_Style_Type_decode_ber; -der_type_encoder_f RIC_Style_Type_encode_der; -xer_type_decoder_f RIC_Style_Type_decode_xer; -xer_type_encoder_f RIC_Style_Type_encode_xer; -oer_type_decoder_f RIC_Style_Type_decode_oer; -oer_type_encoder_f RIC_Style_Type_encode_oer; -per_type_decoder_f RIC_Style_Type_decode_uper; -per_type_encoder_f RIC_Style_Type_encode_uper; -per_type_decoder_f RIC_Style_Type_decode_aper; -per_type_encoder_f RIC_Style_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RIC_Style_Type_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.c deleted file mode 100644 index bc952d3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICaction-Admitted-Item.h" - -static asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_Item, ricActionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionID" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1 = { - sizeof(struct RICaction_Admitted_Item), - offsetof(struct RICaction_Admitted_Item, _asn_ctx), - asn_MAP_RICaction_Admitted_Item_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item = { - "RICaction-Admitted-Item", - "RICaction-Admitted-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_Admitted_Item_tags_1, - sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ - asn_DEF_RICaction_Admitted_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_Admitted_Item_1, - 1, /* Elements count */ - &asn_SPC_RICaction_Admitted_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.h deleted file mode 100644 index 1c7fce7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-Item.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICaction_Admitted_Item_H_ -#define _RICaction_Admitted_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICactionID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICaction-Admitted-Item */ -typedef struct RICaction_Admitted_Item { - RICactionID_t ricActionID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_Admitted_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_Admitted_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-List.c deleted file mode 100644 index 0028709..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICaction-Admitted-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_RICaction_Admitted_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..16)) */}; -static asn_per_constraints_t asn_PER_type_RICaction_Admitted_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RICaction_Admitted_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RICaction_Admitted_List_specs_1 = { - sizeof(struct RICaction_Admitted_List), - offsetof(struct RICaction_Admitted_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List = { - "RICaction-Admitted-List", - "RICaction-Admitted-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICaction_Admitted_List_tags_1, - sizeof(asn_DEF_RICaction_Admitted_List_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ - asn_DEF_RICaction_Admitted_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_Admitted_List_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ - { &asn_OER_type_RICaction_Admitted_List_constr_1, &asn_PER_type_RICaction_Admitted_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICaction_Admitted_List_1, - 1, /* Single element */ - &asn_SPC_RICaction_Admitted_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-List.h deleted file mode 100644 index f10a2a0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-Admitted-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICaction_Admitted_List_H_ -#define _RICaction_Admitted_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICaction-Admitted-List */ -typedef struct RICaction_Admitted_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_Admitted_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_Admitted_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-Item.c deleted file mode 100644 index 57e5663..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICaction-NotAdmitted-Item.h" - -static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricActionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_Item_specs_1 = { - sizeof(struct RICaction_NotAdmitted_Item), - offsetof(struct RICaction_NotAdmitted_Item, _asn_ctx), - asn_MAP_RICaction_NotAdmitted_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item = { - "RICaction-NotAdmitted-Item", - "RICaction-NotAdmitted-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_NotAdmitted_Item_tags_1, - sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ - asn_DEF_RICaction_NotAdmitted_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_NotAdmitted_Item_1, - 2, /* Elements count */ - &asn_SPC_RICaction_NotAdmitted_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-Item.h deleted file mode 100644 index f0d09d0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICaction_NotAdmitted_Item_H_ -#define _RICaction_NotAdmitted_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICactionID.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICaction-NotAdmitted-Item */ -typedef struct RICaction_NotAdmitted_Item { - RICactionID_t ricActionID; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_NotAdmitted_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_NotAdmitted_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-List.c deleted file mode 100644 index ce63307..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICaction-NotAdmitted-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_RICaction_NotAdmitted_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..16)) */}; -static asn_per_constraints_t asn_PER_type_RICaction_NotAdmitted_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RICaction_NotAdmitted_List_specs_1 = { - sizeof(struct RICaction_NotAdmitted_List), - offsetof(struct RICaction_NotAdmitted_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List = { - "RICaction-NotAdmitted-List", - "RICaction-NotAdmitted-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICaction_NotAdmitted_List_tags_1, - sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ - asn_DEF_RICaction_NotAdmitted_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ - { &asn_OER_type_RICaction_NotAdmitted_List_constr_1, &asn_PER_type_RICaction_NotAdmitted_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICaction_NotAdmitted_List_1, - 1, /* Single element */ - &asn_SPC_RICaction_NotAdmitted_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-List.h deleted file mode 100644 index 1ba455f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-NotAdmitted-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICaction_NotAdmitted_List_H_ -#define _RICaction_NotAdmitted_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICaction-NotAdmitted-List */ -typedef struct RICaction_NotAdmitted_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_NotAdmitted_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_NotAdmitted_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.c deleted file mode 100644 index aac91ba..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICaction-ToBeSetup-Item.h" - -#include "RICsubsequentAction.h" -static asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionType), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionType" - }, - { ATF_POINTER, 2, offsetof(struct RICaction_ToBeSetup_Item, ricActionDefinition), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionDefinition" - }, - { ATF_POINTER, 1, offsetof(struct RICaction_ToBeSetup_Item, ricSubsequentAction), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICsubsequentAction, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricSubsequentAction" - }, -}; -static const int asn_MAP_RICaction_ToBeSetup_Item_oms_1[] = { 2, 3 }; -static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionType */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ricSubsequentAction */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_Item_specs_1 = { - sizeof(struct RICaction_ToBeSetup_Item), - offsetof(struct RICaction_ToBeSetup_Item, _asn_ctx), - asn_MAP_RICaction_ToBeSetup_Item_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_RICaction_ToBeSetup_Item_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item = { - "RICaction-ToBeSetup-Item", - "RICaction-ToBeSetup-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_ToBeSetup_Item_tags_1, - sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ - asn_DEF_RICaction_ToBeSetup_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_ToBeSetup_Item_1, - 4, /* Elements count */ - &asn_SPC_RICaction_ToBeSetup_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.h deleted file mode 100644 index 767749c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICaction-ToBeSetup-Item.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICaction_ToBeSetup_Item_H_ -#define _RICaction_ToBeSetup_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICactionID.h" -#include "RICactionType.h" -#include "RICactionDefinition.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RICsubsequentAction; - -/* RICaction-ToBeSetup-Item */ -typedef struct RICaction_ToBeSetup_Item { - RICactionID_t ricActionID; - RICactionType_t ricActionType; - RICactionDefinition_t *ricActionDefinition; /* OPTIONAL */ - struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_ToBeSetup_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_ToBeSetup_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionDefinition.c deleted file mode 100644 index 2d15df4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionDefinition.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICactionDefinition.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICactionDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICactionDefinition = { - "RICactionDefinition", - "RICactionDefinition", - &asn_OP_OCTET_STRING, - asn_DEF_RICactionDefinition_tags_1, - sizeof(asn_DEF_RICactionDefinition_tags_1) - /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ - asn_DEF_RICactionDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactionDefinition_tags_1) - /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionDefinition.h deleted file mode 100644 index 3d553ba..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionDefinition.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICactionDefinition_H_ -#define _RICactionDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICactionDefinition */ -typedef OCTET_STRING_t RICactionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICactionDefinition; -asn_struct_free_f RICactionDefinition_free; -asn_struct_print_f RICactionDefinition_print; -asn_constr_check_f RICactionDefinition_constraint; -ber_type_decoder_f RICactionDefinition_decode_ber; -der_type_encoder_f RICactionDefinition_encode_der; -xer_type_decoder_f RICactionDefinition_decode_xer; -xer_type_encoder_f RICactionDefinition_encode_xer; -oer_type_decoder_f RICactionDefinition_decode_oer; -oer_type_encoder_f RICactionDefinition_encode_oer; -per_type_decoder_f RICactionDefinition_decode_uper; -per_type_encoder_f RICactionDefinition_encode_uper; -per_type_decoder_f RICactionDefinition_decode_aper; -per_type_encoder_f RICactionDefinition_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactionDefinition_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.c deleted file mode 100644 index abe442a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICactionID.h" - -int -RICactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RICactionID_constr_1 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -asn_per_constraints_t asn_PER_type_RICactionID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RICactionID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICactionID = { - "RICactionID", - "RICactionID", - &asn_OP_NativeInteger, - asn_DEF_RICactionID_tags_1, - sizeof(asn_DEF_RICactionID_tags_1) - /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ - asn_DEF_RICactionID_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactionID_tags_1) - /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ - { &asn_OER_type_RICactionID_constr_1, &asn_PER_type_RICactionID_constr_1, RICactionID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.h deleted file mode 100644 index 4c255b7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICactionID_H_ -#define _RICactionID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICactionID */ -typedef long RICactionID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICactionID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICactionID; -asn_struct_free_f RICactionID_free; -asn_struct_print_f RICactionID_print; -asn_constr_check_f RICactionID_constraint; -ber_type_decoder_f RICactionID_decode_ber; -der_type_encoder_f RICactionID_encode_der; -xer_type_decoder_f RICactionID_decode_xer; -xer_type_encoder_f RICactionID_encode_xer; -oer_type_decoder_f RICactionID_decode_oer; -oer_type_encoder_f RICactionID_encode_oer; -per_type_decoder_f RICactionID_decode_uper; -per_type_encoder_f RICactionID_encode_uper; -per_type_decoder_f RICactionID_decode_aper; -per_type_encoder_f RICactionID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactionID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionType.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionType.c deleted file mode 100644 index 133ac04..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionType.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICactionType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RICactionType_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_RICactionType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICactionType_value2enum_1[] = { - { 0, 6, "report" }, - { 1, 6, "insert" }, - { 2, 6, "policy" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICactionType_enum2value_1[] = { - 1, /* insert(1) */ - 2, /* policy(2) */ - 0 /* report(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1 = { - asn_MAP_RICactionType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICactionType_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICactionType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICactionType = { - "RICactionType", - "RICactionType", - &asn_OP_NativeEnumerated, - asn_DEF_RICactionType_tags_1, - sizeof(asn_DEF_RICactionType_tags_1) - /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ - asn_DEF_RICactionType_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactionType_tags_1) - /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ - { &asn_OER_type_RICactionType_constr_1, &asn_PER_type_RICactionType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICactionType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionType.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionType.h deleted file mode 100644 index 8b3e10e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactionType.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICactionType_H_ -#define _RICactionType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICactionType { - RICactionType_report = 0, - RICactionType_insert = 1, - RICactionType_policy = 2 - /* - * Enumeration is extensible - */ -} e_RICactionType; - -/* RICactionType */ -typedef long RICactionType_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICactionType_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICactionType; -extern const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1; -asn_struct_free_f RICactionType_free; -asn_struct_print_f RICactionType_print; -asn_constr_check_f RICactionType_constraint; -ber_type_decoder_f RICactionType_decode_ber; -der_type_encoder_f RICactionType_encode_der; -xer_type_decoder_f RICactionType_decode_xer; -xer_type_encoder_f RICactionType_encode_xer; -oer_type_decoder_f RICactionType_decode_oer; -oer_type_encoder_f RICactionType_encode_oer; -per_type_decoder_f RICactionType_decode_uper; -per_type_encoder_f RICactionType_encode_uper; -per_type_decoder_f RICactionType_decode_aper; -per_type_encoder_f RICactionType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactionType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.c deleted file mode 100644 index 0236112..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICactions-ToBeSetup-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_RICactions_ToBeSetup_List_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..16)) */}; -asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P0, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICactions_ToBeSetup_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1 = { - sizeof(struct RICactions_ToBeSetup_List), - offsetof(struct RICactions_ToBeSetup_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List = { - "RICactions-ToBeSetup-List", - "RICactions-ToBeSetup-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICactions_ToBeSetup_List_tags_1, - sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) - /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ - asn_DEF_RICactions_ToBeSetup_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) - /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ - { &asn_OER_type_RICactions_ToBeSetup_List_constr_1, &asn_PER_type_RICactions_ToBeSetup_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICactions_ToBeSetup_List_1, - 1, /* Single element */ - &asn_SPC_RICactions_ToBeSetup_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.h deleted file mode 100644 index 95834cf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICactions-ToBeSetup-List.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICactions_ToBeSetup_List_H_ -#define _RICactions_ToBeSetup_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICactions-ToBeSetup-List */ -typedef struct RICactions_ToBeSetup_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICactions_ToBeSetup_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List; -extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1; -extern asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[1]; -extern asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactions_ToBeSetup_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcallProcessID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcallProcessID.c deleted file mode 100644 index 10c2fd4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcallProcessID.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICcallProcessID.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcallProcessID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcallProcessID = { - "RICcallProcessID", - "RICcallProcessID", - &asn_OP_OCTET_STRING, - asn_DEF_RICcallProcessID_tags_1, - sizeof(asn_DEF_RICcallProcessID_tags_1) - /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ - asn_DEF_RICcallProcessID_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcallProcessID_tags_1) - /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcallProcessID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcallProcessID.h deleted file mode 100644 index 0ba6bdb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcallProcessID.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICcallProcessID_H_ -#define _RICcallProcessID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcallProcessID */ -typedef OCTET_STRING_t RICcallProcessID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcallProcessID; -asn_struct_free_f RICcallProcessID_free; -asn_struct_print_f RICcallProcessID_print; -asn_constr_check_f RICcallProcessID_constraint; -ber_type_decoder_f RICcallProcessID_decode_ber; -der_type_encoder_f RICcallProcessID_encode_der; -xer_type_decoder_f RICcallProcessID_decode_xer; -xer_type_encoder_f RICcallProcessID_encode_xer; -oer_type_decoder_f RICcallProcessID_decode_oer; -oer_type_encoder_f RICcallProcessID_encode_oer; -per_type_decoder_f RICcallProcessID_decode_uper; -per_type_encoder_f RICcallProcessID_encode_uper; -per_type_decoder_f RICcallProcessID_decode_aper; -per_type_encoder_f RICcallProcessID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcallProcessID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAckRequest.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAckRequest.c deleted file mode 100644 index 417dc30..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAckRequest.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICcontrolAckRequest.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RICcontrolAckRequest_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_RICcontrolAckRequest_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolAckRequest_value2enum_1[] = { - { 0, 5, "noAck" }, - { 1, 3, "ack" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICcontrolAckRequest_enum2value_1[] = { - 1, /* ack(1) */ - 0 /* noAck(0) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_RICcontrolAckRequest_specs_1 = { - asn_MAP_RICcontrolAckRequest_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICcontrolAckRequest_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolAckRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest = { - "RICcontrolAckRequest", - "RICcontrolAckRequest", - &asn_OP_NativeEnumerated, - asn_DEF_RICcontrolAckRequest_tags_1, - sizeof(asn_DEF_RICcontrolAckRequest_tags_1) - /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolAckRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolAckRequest_tags_1) - /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ - { &asn_OER_type_RICcontrolAckRequest_constr_1, &asn_PER_type_RICcontrolAckRequest_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICcontrolAckRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAckRequest.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAckRequest.h deleted file mode 100644 index 4fb713a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAckRequest.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICcontrolAckRequest_H_ -#define _RICcontrolAckRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICcontrolAckRequest { - RICcontrolAckRequest_noAck = 0, - RICcontrolAckRequest_ack = 1 - /* - * Enumeration is extensible - */ -} e_RICcontrolAckRequest; - -/* RICcontrolAckRequest */ -typedef long RICcontrolAckRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest; -asn_struct_free_f RICcontrolAckRequest_free; -asn_struct_print_f RICcontrolAckRequest_print; -asn_constr_check_f RICcontrolAckRequest_constraint; -ber_type_decoder_f RICcontrolAckRequest_decode_ber; -der_type_encoder_f RICcontrolAckRequest_encode_der; -xer_type_decoder_f RICcontrolAckRequest_decode_xer; -xer_type_encoder_f RICcontrolAckRequest_encode_xer; -oer_type_decoder_f RICcontrolAckRequest_decode_oer; -oer_type_encoder_f RICcontrolAckRequest_encode_oer; -per_type_decoder_f RICcontrolAckRequest_decode_uper; -per_type_encoder_f RICcontrolAckRequest_encode_uper; -per_type_decoder_f RICcontrolAckRequest_decode_aper; -per_type_encoder_f RICcontrolAckRequest_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolAckRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.c deleted file mode 100644 index bc16991..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICcontrolAcknowledge.h" - -asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P9, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1 = { - sizeof(struct RICcontrolAcknowledge), - offsetof(struct RICcontrolAcknowledge, _asn_ctx), - asn_MAP_RICcontrolAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge = { - "RICcontrolAcknowledge", - "RICcontrolAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolAcknowledge_tags_1, - sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) - /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) - /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_RICcontrolAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.h deleted file mode 100644 index afa6870..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICcontrolAcknowledge_H_ -#define _RICcontrolAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolAcknowledge */ -typedef struct RICcontrolAcknowledge { - ProtocolIE_Container_1917P9_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolFailure.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolFailure.c deleted file mode 100644 index c4ea6bc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICcontrolFailure.h" - -asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P10, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1 = { - sizeof(struct RICcontrolFailure), - offsetof(struct RICcontrolFailure, _asn_ctx), - asn_MAP_RICcontrolFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure = { - "RICcontrolFailure", - "RICcontrolFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolFailure_tags_1, - sizeof(asn_DEF_RICcontrolFailure_tags_1) - /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolFailure_tags_1) - /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolFailure_1, - 1, /* Elements count */ - &asn_SPC_RICcontrolFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolFailure.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolFailure.h deleted file mode 100644 index 9119a50..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICcontrolFailure_H_ -#define _RICcontrolFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolFailure */ -typedef struct RICcontrolFailure { - ProtocolIE_Container_1917P10_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolHeader.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolHeader.c deleted file mode 100644 index 34a7d05..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolHeader.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICcontrolHeader.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcontrolHeader_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader = { - "RICcontrolHeader", - "RICcontrolHeader", - &asn_OP_OCTET_STRING, - asn_DEF_RICcontrolHeader_tags_1, - sizeof(asn_DEF_RICcontrolHeader_tags_1) - /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolHeader_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolHeader_tags_1) - /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolHeader.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolHeader.h deleted file mode 100644 index f4b3091..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolHeader.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICcontrolHeader_H_ -#define _RICcontrolHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolHeader */ -typedef OCTET_STRING_t RICcontrolHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader; -asn_struct_free_f RICcontrolHeader_free; -asn_struct_print_f RICcontrolHeader_print; -asn_constr_check_f RICcontrolHeader_constraint; -ber_type_decoder_f RICcontrolHeader_decode_ber; -der_type_encoder_f RICcontrolHeader_encode_der; -xer_type_decoder_f RICcontrolHeader_decode_xer; -xer_type_encoder_f RICcontrolHeader_encode_xer; -oer_type_decoder_f RICcontrolHeader_decode_oer; -oer_type_encoder_f RICcontrolHeader_encode_oer; -per_type_decoder_f RICcontrolHeader_decode_uper; -per_type_encoder_f RICcontrolHeader_encode_uper; -per_type_decoder_f RICcontrolHeader_decode_aper; -per_type_encoder_f RICcontrolHeader_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolHeader_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolMessage.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolMessage.c deleted file mode 100644 index 9237dc5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolMessage.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICcontrolMessage.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcontrolMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage = { - "RICcontrolMessage", - "RICcontrolMessage", - &asn_OP_OCTET_STRING, - asn_DEF_RICcontrolMessage_tags_1, - sizeof(asn_DEF_RICcontrolMessage_tags_1) - /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolMessage_tags_1) - /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolMessage.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolMessage.h deleted file mode 100644 index 4177e59..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolMessage.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICcontrolMessage_H_ -#define _RICcontrolMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolMessage */ -typedef OCTET_STRING_t RICcontrolMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage; -asn_struct_free_f RICcontrolMessage_free; -asn_struct_print_f RICcontrolMessage_print; -asn_constr_check_f RICcontrolMessage_constraint; -ber_type_decoder_f RICcontrolMessage_decode_ber; -der_type_encoder_f RICcontrolMessage_encode_der; -xer_type_decoder_f RICcontrolMessage_decode_xer; -xer_type_encoder_f RICcontrolMessage_encode_xer; -oer_type_decoder_f RICcontrolMessage_decode_oer; -oer_type_encoder_f RICcontrolMessage_encode_oer; -per_type_decoder_f RICcontrolMessage_decode_uper; -per_type_encoder_f RICcontrolMessage_encode_uper; -per_type_decoder_f RICcontrolMessage_decode_aper; -per_type_encoder_f RICcontrolMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolOutcome.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolOutcome.c deleted file mode 100644 index 0bedd24..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolOutcome.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICcontrolOutcome.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcontrolOutcome_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome = { - "RICcontrolOutcome", - "RICcontrolOutcome", - &asn_OP_OCTET_STRING, - asn_DEF_RICcontrolOutcome_tags_1, - sizeof(asn_DEF_RICcontrolOutcome_tags_1) - /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolOutcome_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolOutcome_tags_1) - /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolOutcome.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolOutcome.h deleted file mode 100644 index c285f44..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolOutcome.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICcontrolOutcome_H_ -#define _RICcontrolOutcome_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolOutcome */ -typedef OCTET_STRING_t RICcontrolOutcome_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome; -asn_struct_free_f RICcontrolOutcome_free; -asn_struct_print_f RICcontrolOutcome_print; -asn_constr_check_f RICcontrolOutcome_constraint; -ber_type_decoder_f RICcontrolOutcome_decode_ber; -der_type_encoder_f RICcontrolOutcome_encode_der; -xer_type_decoder_f RICcontrolOutcome_decode_xer; -xer_type_encoder_f RICcontrolOutcome_encode_xer; -oer_type_decoder_f RICcontrolOutcome_decode_oer; -oer_type_encoder_f RICcontrolOutcome_encode_oer; -per_type_decoder_f RICcontrolOutcome_decode_uper; -per_type_encoder_f RICcontrolOutcome_encode_uper; -per_type_decoder_f RICcontrolOutcome_decode_aper; -per_type_encoder_f RICcontrolOutcome_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolOutcome_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolRequest.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolRequest.c deleted file mode 100644 index 467ff4b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICcontrolRequest.h" - -asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P8, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1 = { - sizeof(struct RICcontrolRequest), - offsetof(struct RICcontrolRequest, _asn_ctx), - asn_MAP_RICcontrolRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest = { - "RICcontrolRequest", - "RICcontrolRequest", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolRequest_tags_1, - sizeof(asn_DEF_RICcontrolRequest_tags_1) - /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolRequest_tags_1) - /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolRequest_1, - 1, /* Elements count */ - &asn_SPC_RICcontrolRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolRequest.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolRequest.h deleted file mode 100644 index 561fd37..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICcontrolRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICcontrolRequest_H_ -#define _RICcontrolRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolRequest */ -typedef struct RICcontrolRequest { - ProtocolIE_Container_1917P8_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.c deleted file mode 100644 index bec7659..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICeventTriggerDefinition.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICeventTriggerDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition = { - "RICeventTriggerDefinition", - "RICeventTriggerDefinition", - &asn_OP_OCTET_STRING, - asn_DEF_RICeventTriggerDefinition_tags_1, - sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) - /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ - asn_DEF_RICeventTriggerDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) - /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.h deleted file mode 100644 index d53ac38..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICeventTriggerDefinition.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICeventTriggerDefinition_H_ -#define _RICeventTriggerDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICeventTriggerDefinition */ -typedef OCTET_STRING_t RICeventTriggerDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition; -asn_struct_free_f RICeventTriggerDefinition_free; -asn_struct_print_f RICeventTriggerDefinition_print; -asn_constr_check_f RICeventTriggerDefinition_constraint; -ber_type_decoder_f RICeventTriggerDefinition_decode_ber; -der_type_encoder_f RICeventTriggerDefinition_encode_der; -xer_type_decoder_f RICeventTriggerDefinition_decode_xer; -xer_type_encoder_f RICeventTriggerDefinition_encode_xer; -oer_type_decoder_f RICeventTriggerDefinition_decode_oer; -oer_type_encoder_f RICeventTriggerDefinition_encode_oer; -per_type_decoder_f RICeventTriggerDefinition_decode_uper; -per_type_encoder_f RICeventTriggerDefinition_encode_uper; -per_type_decoder_f RICeventTriggerDefinition_decode_aper; -per_type_encoder_f RICeventTriggerDefinition_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICeventTriggerDefinition_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindication.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindication.c deleted file mode 100644 index 5f164b5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindication.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICindication.h" - -asn_TYPE_member_t asn_MBR_RICindication_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICindication, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P7, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICindication_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICindication_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1 = { - sizeof(struct RICindication), - offsetof(struct RICindication, _asn_ctx), - asn_MAP_RICindication_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICindication = { - "RICindication", - "RICindication", - &asn_OP_SEQUENCE, - asn_DEF_RICindication_tags_1, - sizeof(asn_DEF_RICindication_tags_1) - /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ - asn_DEF_RICindication_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindication_tags_1) - /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICindication_1, - 1, /* Elements count */ - &asn_SPC_RICindication_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindication.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindication.h deleted file mode 100644 index b189589..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindication.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICindication_H_ -#define _RICindication_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindication */ -typedef struct RICindication { - ProtocolIE_Container_1917P7_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICindication_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindication; -extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1; -extern asn_TYPE_member_t asn_MBR_RICindication_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindication_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationHeader.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationHeader.c deleted file mode 100644 index 7a3b70c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationHeader.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICindicationHeader.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICindicationHeader_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationHeader = { - "RICindicationHeader", - "RICindicationHeader", - &asn_OP_OCTET_STRING, - asn_DEF_RICindicationHeader_tags_1, - sizeof(asn_DEF_RICindicationHeader_tags_1) - /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ - asn_DEF_RICindicationHeader_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationHeader_tags_1) - /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationHeader.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationHeader.h deleted file mode 100644 index 9b99d11..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationHeader.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICindicationHeader_H_ -#define _RICindicationHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindicationHeader */ -typedef OCTET_STRING_t RICindicationHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationHeader; -asn_struct_free_f RICindicationHeader_free; -asn_struct_print_f RICindicationHeader_print; -asn_constr_check_f RICindicationHeader_constraint; -ber_type_decoder_f RICindicationHeader_decode_ber; -der_type_encoder_f RICindicationHeader_encode_der; -xer_type_decoder_f RICindicationHeader_decode_xer; -xer_type_encoder_f RICindicationHeader_encode_xer; -oer_type_decoder_f RICindicationHeader_decode_oer; -oer_type_encoder_f RICindicationHeader_encode_oer; -per_type_decoder_f RICindicationHeader_decode_uper; -per_type_encoder_f RICindicationHeader_encode_uper; -per_type_decoder_f RICindicationHeader_decode_aper; -per_type_encoder_f RICindicationHeader_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationHeader_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationMessage.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationMessage.c deleted file mode 100644 index 85d3627..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationMessage.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICindicationMessage.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICindicationMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationMessage = { - "RICindicationMessage", - "RICindicationMessage", - &asn_OP_OCTET_STRING, - asn_DEF_RICindicationMessage_tags_1, - sizeof(asn_DEF_RICindicationMessage_tags_1) - /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ - asn_DEF_RICindicationMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationMessage_tags_1) - /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationMessage.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationMessage.h deleted file mode 100644 index 794f93d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationMessage.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICindicationMessage_H_ -#define _RICindicationMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindicationMessage */ -typedef OCTET_STRING_t RICindicationMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationMessage; -asn_struct_free_f RICindicationMessage_free; -asn_struct_print_f RICindicationMessage_print; -asn_constr_check_f RICindicationMessage_constraint; -ber_type_decoder_f RICindicationMessage_decode_ber; -der_type_encoder_f RICindicationMessage_encode_der; -xer_type_decoder_f RICindicationMessage_decode_xer; -xer_type_encoder_f RICindicationMessage_encode_xer; -oer_type_decoder_f RICindicationMessage_decode_oer; -oer_type_encoder_f RICindicationMessage_encode_oer; -per_type_decoder_f RICindicationMessage_decode_uper; -per_type_encoder_f RICindicationMessage_encode_uper; -per_type_decoder_f RICindicationMessage_decode_aper; -per_type_encoder_f RICindicationMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationSN.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationSN.c deleted file mode 100644 index 02e15d9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationSN.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICindicationSN.h" - -int -RICindicationSN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RICindicationSN_constr_1 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_type_RICindicationSN_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RICindicationSN_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationSN = { - "RICindicationSN", - "RICindicationSN", - &asn_OP_NativeInteger, - asn_DEF_RICindicationSN_tags_1, - sizeof(asn_DEF_RICindicationSN_tags_1) - /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ - asn_DEF_RICindicationSN_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationSN_tags_1) - /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ - { &asn_OER_type_RICindicationSN_constr_1, &asn_PER_type_RICindicationSN_constr_1, RICindicationSN_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationSN.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationSN.h deleted file mode 100644 index b802c11..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationSN.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICindicationSN_H_ -#define _RICindicationSN_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindicationSN */ -typedef long RICindicationSN_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationSN; -asn_struct_free_f RICindicationSN_free; -asn_struct_print_f RICindicationSN_print; -asn_constr_check_f RICindicationSN_constraint; -ber_type_decoder_f RICindicationSN_decode_ber; -der_type_encoder_f RICindicationSN_encode_der; -xer_type_decoder_f RICindicationSN_decode_xer; -xer_type_encoder_f RICindicationSN_encode_xer; -oer_type_decoder_f RICindicationSN_decode_oer; -oer_type_encoder_f RICindicationSN_encode_oer; -per_type_decoder_f RICindicationSN_decode_uper; -per_type_encoder_f RICindicationSN_encode_uper; -per_type_decoder_f RICindicationSN_decode_aper; -per_type_encoder_f RICindicationSN_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationSN_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationType.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationType.c deleted file mode 100644 index d4b4ef6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationType.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICindicationType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RICindicationType_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_RICindicationType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICindicationType_value2enum_1[] = { - { 0, 6, "report" }, - { 1, 6, "insert" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICindicationType_enum2value_1[] = { - 1, /* insert(1) */ - 0 /* report(0) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_RICindicationType_specs_1 = { - asn_MAP_RICindicationType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICindicationType_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICindicationType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationType = { - "RICindicationType", - "RICindicationType", - &asn_OP_NativeEnumerated, - asn_DEF_RICindicationType_tags_1, - sizeof(asn_DEF_RICindicationType_tags_1) - /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ - asn_DEF_RICindicationType_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationType_tags_1) - /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ - { &asn_OER_type_RICindicationType_constr_1, &asn_PER_type_RICindicationType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICindicationType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationType.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationType.h deleted file mode 100644 index b21a107..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICindicationType.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICindicationType_H_ -#define _RICindicationType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICindicationType { - RICindicationType_report = 0, - RICindicationType_insert = 1 - /* - * Enumeration is extensible - */ -} e_RICindicationType; - -/* RICindicationType */ -typedef long RICindicationType_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationType; -asn_struct_free_f RICindicationType_free; -asn_struct_print_f RICindicationType_print; -asn_constr_check_f RICindicationType_constraint; -ber_type_decoder_f RICindicationType_decode_ber; -der_type_encoder_f RICindicationType_encode_der; -xer_type_decoder_f RICindicationType_decode_xer; -xer_type_encoder_f RICindicationType_encode_xer; -oer_type_decoder_f RICindicationType_decode_oer; -oer_type_encoder_f RICindicationType_encode_oer; -per_type_decoder_f RICindicationType_decode_uper; -per_type_encoder_f RICindicationType_encode_uper; -per_type_decoder_f RICindicationType_decode_aper; -per_type_encoder_f RICindicationType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICrequestID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICrequestID.c deleted file mode 100644 index 0a77044..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICrequestID.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICrequestID.h" - -static int -memb_ricRequestorID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ricInstanceID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_ricRequestorID_constr_2 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_ricRequestorID_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_ricInstanceID_constr_3 CC_NOTUSED = { - { 2, 1 } /* (0..65535) */, - -1}; -static asn_per_constraints_t asn_PER_memb_ricInstanceID_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_RICrequestID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestorID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ricRequestorID_constr_2, &asn_PER_memb_ricRequestorID_constr_2, memb_ricRequestorID_constraint_1 }, - 0, 0, /* No default value */ - "ricRequestorID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricInstanceID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { &asn_OER_memb_ricInstanceID_constr_3, &asn_PER_memb_ricInstanceID_constr_3, memb_ricInstanceID_constraint_1 }, - 0, 0, /* No default value */ - "ricInstanceID" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICrequestID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICrequestID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestorID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricInstanceID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1 = { - sizeof(struct RICrequestID), - offsetof(struct RICrequestID, _asn_ctx), - asn_MAP_RICrequestID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICrequestID = { - "RICrequestID", - "RICrequestID", - &asn_OP_SEQUENCE, - asn_DEF_RICrequestID_tags_1, - sizeof(asn_DEF_RICrequestID_tags_1) - /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ - asn_DEF_RICrequestID_tags_1, /* Same as above */ - sizeof(asn_DEF_RICrequestID_tags_1) - /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICrequestID_1, - 2, /* Elements count */ - &asn_SPC_RICrequestID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICrequestID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICrequestID.h deleted file mode 100644 index 5e2fe15..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICrequestID.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICrequestID_H_ -#define _RICrequestID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICrequestID */ -typedef struct RICrequestID { - long ricRequestorID; - long ricInstanceID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICrequestID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICrequestID; -extern asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1; -extern asn_TYPE_member_t asn_MBR_RICrequestID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICrequestID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceQuery.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceQuery.c deleted file mode 100644 index a5a5a03..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceQuery.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICserviceQuery.h" - -asn_TYPE_member_t asn_MBR_RICserviceQuery_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P26, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceQuery_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1 = { - sizeof(struct RICserviceQuery), - offsetof(struct RICserviceQuery, _asn_ctx), - asn_MAP_RICserviceQuery_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceQuery = { - "RICserviceQuery", - "RICserviceQuery", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceQuery_tags_1, - sizeof(asn_DEF_RICserviceQuery_tags_1) - /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ - asn_DEF_RICserviceQuery_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceQuery_tags_1) - /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceQuery_1, - 1, /* Elements count */ - &asn_SPC_RICserviceQuery_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceQuery.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceQuery.h deleted file mode 100644 index 7760fc7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceQuery.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICserviceQuery_H_ -#define _RICserviceQuery_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceQuery */ -typedef struct RICserviceQuery { - ProtocolIE_Container_1917P26_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceQuery_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceQuery_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceQuery_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdate.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdate.c deleted file mode 100644 index 5ee17e3..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdate.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICserviceUpdate.h" - -asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P23, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1 = { - sizeof(struct RICserviceUpdate), - offsetof(struct RICserviceUpdate, _asn_ctx), - asn_MAP_RICserviceUpdate_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate = { - "RICserviceUpdate", - "RICserviceUpdate", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdate_tags_1, - sizeof(asn_DEF_RICserviceUpdate_tags_1) - /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ - asn_DEF_RICserviceUpdate_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdate_tags_1) - /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdate_1, - 1, /* Elements count */ - &asn_SPC_RICserviceUpdate_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdate.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdate.h deleted file mode 100644 index 7425da6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdate.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICserviceUpdate_H_ -#define _RICserviceUpdate_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceUpdate */ -typedef struct RICserviceUpdate { - ProtocolIE_Container_1917P23_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdate_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceUpdate_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateAcknowledge.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateAcknowledge.c deleted file mode 100644 index e16604f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICserviceUpdateAcknowledge.h" - -asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P24, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1 = { - sizeof(struct RICserviceUpdateAcknowledge), - offsetof(struct RICserviceUpdateAcknowledge, _asn_ctx), - asn_MAP_RICserviceUpdateAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge = { - "RICserviceUpdateAcknowledge", - "RICserviceUpdateAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateAcknowledge_tags_1, - sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_RICserviceUpdateAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_RICserviceUpdateAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateAcknowledge.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateAcknowledge.h deleted file mode 100644 index aae8baf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICserviceUpdateAcknowledge_H_ -#define _RICserviceUpdateAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceUpdateAcknowledge */ -typedef struct RICserviceUpdateAcknowledge { - ProtocolIE_Container_1917P24_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceUpdateAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.c deleted file mode 100644 index 314d892..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICserviceUpdateFailure.h" - -asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P25, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1 = { - sizeof(struct RICserviceUpdateFailure), - offsetof(struct RICserviceUpdateFailure, _asn_ctx), - asn_MAP_RICserviceUpdateFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure = { - "RICserviceUpdateFailure", - "RICserviceUpdateFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateFailure_tags_1, - sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) - /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ - asn_DEF_RICserviceUpdateFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) - /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateFailure_1, - 1, /* Elements count */ - &asn_SPC_RICserviceUpdateFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.h deleted file mode 100644 index f418bc8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICserviceUpdateFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICserviceUpdateFailure_H_ -#define _RICserviceUpdateFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceUpdateFailure */ -typedef struct RICserviceUpdateFailure { - ProtocolIE_Container_1917P25_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceUpdateFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-List-withCause.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-List-withCause.c deleted file mode 100644 index 384fc73..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-List-withCause.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscription-List-withCause.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_oer_constraints_t asn_OER_type_RICsubscription_List_withCause_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..4294967295)) */}; -static asn_per_constraints_t asn_PER_type_RICsubscription_List_withCause_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 32, -1, 1, 4294967295 } /* (SIZE(1..4294967295)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RICsubscription_List_withCause_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscription_List_withCause_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RICsubscription_List_withCause_specs_1 = { - sizeof(struct RICsubscription_List_withCause), - offsetof(struct RICsubscription_List_withCause, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscription_List_withCause = { - "RICsubscription-List-withCause", - "RICsubscription-List-withCause", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICsubscription_List_withCause_tags_1, - sizeof(asn_DEF_RICsubscription_List_withCause_tags_1) - /sizeof(asn_DEF_RICsubscription_List_withCause_tags_1[0]), /* 1 */ - asn_DEF_RICsubscription_List_withCause_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscription_List_withCause_tags_1) - /sizeof(asn_DEF_RICsubscription_List_withCause_tags_1[0]), /* 1 */ - { &asn_OER_type_RICsubscription_List_withCause_constr_1, &asn_PER_type_RICsubscription_List_withCause_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICsubscription_List_withCause_1, - 1, /* Single element */ - &asn_SPC_RICsubscription_List_withCause_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-List-withCause.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-List-withCause.h deleted file mode 100644 index 43117cd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-List-withCause.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscription_List_withCause_H_ -#define _RICsubscription_List_withCause_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICsubscription-List-withCause */ -typedef struct RICsubscription_List_withCause { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscription_List_withCause_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscription_List_withCause; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscription_List_withCause_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-withCause-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-withCause-Item.c deleted file mode 100644 index fef3391..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-withCause-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscription-withCause-Item.h" - -static asn_TYPE_member_t asn_MBR_RICsubscription_withCause_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_Item, ricRequestID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricRequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscription_withCause_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscription_withCause_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_Item_specs_1 = { - sizeof(struct RICsubscription_withCause_Item), - offsetof(struct RICsubscription_withCause_Item, _asn_ctx), - asn_MAP_RICsubscription_withCause_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_Item = { - "RICsubscription-withCause-Item", - "RICsubscription-withCause-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscription_withCause_Item_tags_1, - sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1) - /sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1[0]), /* 1 */ - asn_DEF_RICsubscription_withCause_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1) - /sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscription_withCause_Item_1, - 3, /* Elements count */ - &asn_SPC_RICsubscription_withCause_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-withCause-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-withCause-Item.h deleted file mode 100644 index db46929..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscription-withCause-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscription_withCause_Item_H_ -#define _RICsubscription_withCause_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICrequestID.h" -#include "RANfunctionID.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscription-withCause-Item */ -typedef struct RICsubscription_withCause_Item { - RICrequestID_t ricRequestID; - RANfunctionID_t ranFunctionID; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscription_withCause_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscription_withCause_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteFailure.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteFailure.c deleted file mode 100644 index 7ecf563..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscriptionDeleteFailure.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P5, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1 = { - sizeof(struct RICsubscriptionDeleteFailure), - offsetof(struct RICsubscriptionDeleteFailure, _asn_ctx), - asn_MAP_RICsubscriptionDeleteFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure = { - "RICsubscriptionDeleteFailure", - "RICsubscriptionDeleteFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteFailure_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteFailure_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteFailure.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteFailure.h deleted file mode 100644 index 6279bf9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscriptionDeleteFailure_H_ -#define _RICsubscriptionDeleteFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteFailure */ -typedef struct RICsubscriptionDeleteFailure { - ProtocolIE_Container_1917P5_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequest.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequest.c deleted file mode 100644 index deecbb5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscriptionDeleteRequest.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1 = { - sizeof(struct RICsubscriptionDeleteRequest), - offsetof(struct RICsubscriptionDeleteRequest, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest = { - "RICsubscriptionDeleteRequest", - "RICsubscriptionDeleteRequest", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequest_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequest_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequest.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequest.h deleted file mode 100644 index 3365757..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscriptionDeleteRequest_H_ -#define _RICsubscriptionDeleteRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteRequest */ -typedef struct RICsubscriptionDeleteRequest { - ProtocolIE_Container_1917P3_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequired.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequired.c deleted file mode 100644 index e52fc9c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequired.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscriptionDeleteRequired.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P6, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequired_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequired_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_specs_1 = { - sizeof(struct RICsubscriptionDeleteRequired), - offsetof(struct RICsubscriptionDeleteRequired, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequired_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired = { - "RICsubscriptionDeleteRequired", - "RICsubscriptionDeleteRequired", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequired_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequired_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequired_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequired_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequired.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequired.h deleted file mode 100644 index ed1945d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteRequired.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscriptionDeleteRequired_H_ -#define _RICsubscriptionDeleteRequired_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteRequired */ -typedef struct RICsubscriptionDeleteRequired { - ProtocolIE_Container_1917P6_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequired_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteRequired_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteResponse.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteResponse.c deleted file mode 100644 index 2170d81..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscriptionDeleteResponse.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P4, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1 = { - sizeof(struct RICsubscriptionDeleteResponse), - offsetof(struct RICsubscriptionDeleteResponse, _asn_ctx), - asn_MAP_RICsubscriptionDeleteResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse = { - "RICsubscriptionDeleteResponse", - "RICsubscriptionDeleteResponse", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteResponse_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteResponse_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteResponse.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteResponse.h deleted file mode 100644 index cddc20e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDeleteResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscriptionDeleteResponse_H_ -#define _RICsubscriptionDeleteResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteResponse */ -typedef struct RICsubscriptionDeleteResponse { - ProtocolIE_Container_1917P4_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDetails.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDetails.c deleted file mode 100644 index 777fae0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDetails.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscriptionDetails.h" - -static asn_TYPE_member_t asn_MBR_RICsubscriptionDetails_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricEventTriggerDefinition), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICeventTriggerDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricEventTriggerDefinition" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricAction_ToBeSetup_List), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactions_ToBeSetup_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricAction-ToBeSetup-List" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDetails_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDetails_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricEventTriggerDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricAction-ToBeSetup-List */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDetails_specs_1 = { - sizeof(struct RICsubscriptionDetails), - offsetof(struct RICsubscriptionDetails, _asn_ctx), - asn_MAP_RICsubscriptionDetails_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails = { - "RICsubscriptionDetails", - "RICsubscriptionDetails", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDetails_tags_1, - sizeof(asn_DEF_RICsubscriptionDetails_tags_1) - /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDetails_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDetails_tags_1) - /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDetails_1, - 2, /* Elements count */ - &asn_SPC_RICsubscriptionDetails_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDetails.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDetails.h deleted file mode 100644 index 4f45d46..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionDetails.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscriptionDetails_H_ -#define _RICsubscriptionDetails_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICeventTriggerDefinition.h" -#include "RICactions-ToBeSetup-List.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDetails */ -typedef struct RICsubscriptionDetails { - RICeventTriggerDefinition_t ricEventTriggerDefinition; - RICactions_ToBeSetup_List_t ricAction_ToBeSetup_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDetails_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDetails_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionFailure.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionFailure.c deleted file mode 100644 index 576e1cf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscriptionFailure.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1 = { - sizeof(struct RICsubscriptionFailure), - offsetof(struct RICsubscriptionFailure, _asn_ctx), - asn_MAP_RICsubscriptionFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure = { - "RICsubscriptionFailure", - "RICsubscriptionFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionFailure_tags_1, - sizeof(asn_DEF_RICsubscriptionFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionFailure_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionFailure.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionFailure.h deleted file mode 100644 index e5bfe7d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscriptionFailure_H_ -#define _RICsubscriptionFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionFailure */ -typedef struct RICsubscriptionFailure { - ProtocolIE_Container_1917P2_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionRequest.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionRequest.c deleted file mode 100644 index 383a300..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscriptionRequest.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P0, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1 = { - sizeof(struct RICsubscriptionRequest), - offsetof(struct RICsubscriptionRequest, _asn_ctx), - asn_MAP_RICsubscriptionRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest = { - "RICsubscriptionRequest", - "RICsubscriptionRequest", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionRequest_tags_1, - sizeof(asn_DEF_RICsubscriptionRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionRequest_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionRequest.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionRequest.h deleted file mode 100644 index ed87c29..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscriptionRequest_H_ -#define _RICsubscriptionRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionRequest */ -typedef struct RICsubscriptionRequest { - ProtocolIE_Container_1917P0_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionResponse.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionResponse.c deleted file mode 100644 index 8c46f2e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubscriptionResponse.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1 = { - sizeof(struct RICsubscriptionResponse), - offsetof(struct RICsubscriptionResponse, _asn_ctx), - asn_MAP_RICsubscriptionResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse = { - "RICsubscriptionResponse", - "RICsubscriptionResponse", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionResponse_tags_1, - sizeof(asn_DEF_RICsubscriptionResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionResponse_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionResponse.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionResponse.h deleted file mode 100644 index 7367e7b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubscriptionResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubscriptionResponse_H_ -#define _RICsubscriptionResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionResponse */ -typedef struct RICsubscriptionResponse { - ProtocolIE_Container_1917P1_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentAction.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentAction.c deleted file mode 100644 index 3205562..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentAction.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubsequentAction.h" - -asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricSubsequentActionType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICsubsequentActionType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricSubsequentActionType" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricTimeToWait), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICtimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricTimeToWait" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubsequentAction_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubsequentAction_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricSubsequentActionType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricTimeToWait */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1 = { - sizeof(struct RICsubsequentAction), - offsetof(struct RICsubsequentAction, _asn_ctx), - asn_MAP_RICsubsequentAction_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction = { - "RICsubsequentAction", - "RICsubsequentAction", - &asn_OP_SEQUENCE, - asn_DEF_RICsubsequentAction_tags_1, - sizeof(asn_DEF_RICsubsequentAction_tags_1) - /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ - asn_DEF_RICsubsequentAction_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubsequentAction_tags_1) - /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubsequentAction_1, - 2, /* Elements count */ - &asn_SPC_RICsubsequentAction_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentAction.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentAction.h deleted file mode 100644 index d485d2f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentAction.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubsequentAction_H_ -#define _RICsubsequentAction_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICsubsequentActionType.h" -#include "RICtimeToWait.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubsequentAction */ -typedef struct RICsubsequentAction { - RICsubsequentActionType_t ricSubsequentActionType; - RICtimeToWait_t ricTimeToWait; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubsequentAction_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubsequentAction_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentActionType.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentActionType.c deleted file mode 100644 index 4a21d06..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentActionType.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICsubsequentActionType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RICsubsequentActionType_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICsubsequentActionType_value2enum_1[] = { - { 0, 8, "continue" }, - { 1, 4, "wait" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICsubsequentActionType_enum2value_1[] = { - 0, /* continue(0) */ - 1 /* wait(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1 = { - asn_MAP_RICsubsequentActionType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICsubsequentActionType_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICsubsequentActionType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType = { - "RICsubsequentActionType", - "RICsubsequentActionType", - &asn_OP_NativeEnumerated, - asn_DEF_RICsubsequentActionType_tags_1, - sizeof(asn_DEF_RICsubsequentActionType_tags_1) - /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ - asn_DEF_RICsubsequentActionType_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubsequentActionType_tags_1) - /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ - { &asn_OER_type_RICsubsequentActionType_constr_1, &asn_PER_type_RICsubsequentActionType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICsubsequentActionType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentActionType.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentActionType.h deleted file mode 100644 index 2faa650..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICsubsequentActionType.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICsubsequentActionType_H_ -#define _RICsubsequentActionType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICsubsequentActionType { - RICsubsequentActionType_continue = 0, - RICsubsequentActionType_wait = 1 - /* - * Enumeration is extensible - */ -} e_RICsubsequentActionType; - -/* RICsubsequentActionType */ -typedef long RICsubsequentActionType_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType; -extern const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1; -asn_struct_free_f RICsubsequentActionType_free; -asn_struct_print_f RICsubsequentActionType_print; -asn_constr_check_f RICsubsequentActionType_constraint; -ber_type_decoder_f RICsubsequentActionType_decode_ber; -der_type_encoder_f RICsubsequentActionType_encode_der; -xer_type_decoder_f RICsubsequentActionType_decode_xer; -xer_type_encoder_f RICsubsequentActionType_encode_xer; -oer_type_decoder_f RICsubsequentActionType_decode_oer; -oer_type_encoder_f RICsubsequentActionType_encode_oer; -per_type_decoder_f RICsubsequentActionType_decode_uper; -per_type_encoder_f RICsubsequentActionType_encode_uper; -per_type_decoder_f RICsubsequentActionType_decode_aper; -per_type_encoder_f RICsubsequentActionType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubsequentActionType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICtimeToWait.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICtimeToWait.c deleted file mode 100644 index 5a5e765..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICtimeToWait.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "RICtimeToWait.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RICtimeToWait_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 16 } /* (0..16,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICtimeToWait_value2enum_1[] = { - { 0, 4, "w1ms" }, - { 1, 4, "w2ms" }, - { 2, 4, "w5ms" }, - { 3, 5, "w10ms" }, - { 4, 5, "w20ms" }, - { 5, 5, "w30ms" }, - { 6, 5, "w40ms" }, - { 7, 5, "w50ms" }, - { 8, 6, "w100ms" }, - { 9, 6, "w200ms" }, - { 10, 6, "w500ms" }, - { 11, 3, "w1s" }, - { 12, 3, "w2s" }, - { 13, 3, "w5s" }, - { 14, 4, "w10s" }, - { 15, 4, "w20s" }, - { 16, 4, "w60s" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICtimeToWait_enum2value_1[] = { - 8, /* w100ms(8) */ - 3, /* w10ms(3) */ - 14, /* w10s(14) */ - 0, /* w1ms(0) */ - 11, /* w1s(11) */ - 9, /* w200ms(9) */ - 4, /* w20ms(4) */ - 15, /* w20s(15) */ - 1, /* w2ms(1) */ - 12, /* w2s(12) */ - 5, /* w30ms(5) */ - 6, /* w40ms(6) */ - 10, /* w500ms(10) */ - 7, /* w50ms(7) */ - 2, /* w5ms(2) */ - 13, /* w5s(13) */ - 16 /* w60s(16) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1 = { - asn_MAP_RICtimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICtimeToWait_enum2value_1, /* N => "tag"; sorted by N */ - 17, /* Number of elements in the maps */ - 18, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICtimeToWait_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICtimeToWait = { - "RICtimeToWait", - "RICtimeToWait", - &asn_OP_NativeEnumerated, - asn_DEF_RICtimeToWait_tags_1, - sizeof(asn_DEF_RICtimeToWait_tags_1) - /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ - asn_DEF_RICtimeToWait_tags_1, /* Same as above */ - sizeof(asn_DEF_RICtimeToWait_tags_1) - /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ - { &asn_OER_type_RICtimeToWait_constr_1, &asn_PER_type_RICtimeToWait_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICtimeToWait_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICtimeToWait.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICtimeToWait.h deleted file mode 100644 index 840bc00..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RICtimeToWait.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _RICtimeToWait_H_ -#define _RICtimeToWait_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICtimeToWait { - RICtimeToWait_w1ms = 0, - RICtimeToWait_w2ms = 1, - RICtimeToWait_w5ms = 2, - RICtimeToWait_w10ms = 3, - RICtimeToWait_w20ms = 4, - RICtimeToWait_w30ms = 5, - RICtimeToWait_w40ms = 6, - RICtimeToWait_w50ms = 7, - RICtimeToWait_w100ms = 8, - RICtimeToWait_w200ms = 9, - RICtimeToWait_w500ms = 10, - RICtimeToWait_w1s = 11, - RICtimeToWait_w2s = 12, - RICtimeToWait_w5s = 13, - RICtimeToWait_w10s = 14, - RICtimeToWait_w20s = 15, - RICtimeToWait_w60s = 16 - /* - * Enumeration is extensible - */ -} e_RICtimeToWait; - -/* RICtimeToWait */ -typedef long RICtimeToWait_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICtimeToWait; -extern const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1; -asn_struct_free_f RICtimeToWait_free; -asn_struct_print_f RICtimeToWait_print; -asn_constr_check_f RICtimeToWait_constraint; -ber_type_decoder_f RICtimeToWait_decode_ber; -der_type_encoder_f RICtimeToWait_encode_der; -xer_type_decoder_f RICtimeToWait_decode_xer; -xer_type_encoder_f RICtimeToWait_encode_xer; -oer_type_decoder_f RICtimeToWait_decode_oer; -oer_type_encoder_f RICtimeToWait_encode_oer; -per_type_decoder_f RICtimeToWait_decode_uper; -per_type_encoder_f RICtimeToWait_encode_uper; -per_type_decoder_f RICtimeToWait_decode_aper; -per_type_encoder_f RICtimeToWait_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICtimeToWait_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RT-Period-IE.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RT-Period-IE.c deleted file mode 100644 index 5f99297..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RT-Period-IE.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "RT-Period-IE.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_RT_Period_IE_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_RT_Period_IE_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 19 } /* (0..19,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RT_Period_IE_value2enum_1[] = { - { 0, 4, "ms10" }, - { 1, 4, "ms20" }, - { 2, 4, "ms32" }, - { 3, 4, "ms40" }, - { 4, 4, "ms60" }, - { 5, 4, "ms64" }, - { 6, 4, "ms70" }, - { 7, 4, "ms80" }, - { 8, 5, "ms128" }, - { 9, 5, "ms160" }, - { 10, 5, "ms256" }, - { 11, 5, "ms320" }, - { 12, 5, "ms512" }, - { 13, 5, "ms640" }, - { 14, 6, "ms1024" }, - { 15, 6, "ms1280" }, - { 16, 6, "ms2048" }, - { 17, 6, "ms2560" }, - { 18, 6, "ms5120" }, - { 19, 7, "ms10240" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RT_Period_IE_enum2value_1[] = { - 0, /* ms10(0) */ - 14, /* ms1024(14) */ - 19, /* ms10240(19) */ - 8, /* ms128(8) */ - 15, /* ms1280(15) */ - 9, /* ms160(9) */ - 1, /* ms20(1) */ - 16, /* ms2048(16) */ - 10, /* ms256(10) */ - 17, /* ms2560(17) */ - 2, /* ms32(2) */ - 11, /* ms320(11) */ - 3, /* ms40(3) */ - 12, /* ms512(12) */ - 18, /* ms5120(18) */ - 4, /* ms60(4) */ - 5, /* ms64(5) */ - 13, /* ms640(13) */ - 6, /* ms70(6) */ - 7 /* ms80(7) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RT_Period_IE_specs_1 = { - asn_MAP_RT_Period_IE_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RT_Period_IE_enum2value_1, /* N => "tag"; sorted by N */ - 20, /* Number of elements in the maps */ - 21, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RT_Period_IE_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RT_Period_IE = { - "RT-Period-IE", - "RT-Period-IE", - &asn_OP_NativeEnumerated, - asn_DEF_RT_Period_IE_tags_1, - sizeof(asn_DEF_RT_Period_IE_tags_1) - /sizeof(asn_DEF_RT_Period_IE_tags_1[0]), /* 1 */ - asn_DEF_RT_Period_IE_tags_1, /* Same as above */ - sizeof(asn_DEF_RT_Period_IE_tags_1) - /sizeof(asn_DEF_RT_Period_IE_tags_1[0]), /* 1 */ - { &asn_OER_type_RT_Period_IE_constr_1, &asn_PER_type_RT_Period_IE_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RT_Period_IE_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RT-Period-IE.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RT-Period-IE.h deleted file mode 100644 index 30d2843..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/RT-Period-IE.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _RT_Period_IE_H_ -#define _RT_Period_IE_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RT_Period_IE { - RT_Period_IE_ms10 = 0, - RT_Period_IE_ms20 = 1, - RT_Period_IE_ms32 = 2, - RT_Period_IE_ms40 = 3, - RT_Period_IE_ms60 = 4, - RT_Period_IE_ms64 = 5, - RT_Period_IE_ms70 = 6, - RT_Period_IE_ms80 = 7, - RT_Period_IE_ms128 = 8, - RT_Period_IE_ms160 = 9, - RT_Period_IE_ms256 = 10, - RT_Period_IE_ms320 = 11, - RT_Period_IE_ms512 = 12, - RT_Period_IE_ms640 = 13, - RT_Period_IE_ms1024 = 14, - RT_Period_IE_ms1280 = 15, - RT_Period_IE_ms2048 = 16, - RT_Period_IE_ms2560 = 17, - RT_Period_IE_ms5120 = 18, - RT_Period_IE_ms10240 = 19 - /* - * Enumeration is extensible - */ -} e_RT_Period_IE; - -/* RT-Period-IE */ -typedef long RT_Period_IE_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RT_Period_IE_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RT_Period_IE; -extern const asn_INTEGER_specifics_t asn_SPC_RT_Period_IE_specs_1; -asn_struct_free_f RT_Period_IE_free; -asn_struct_print_f RT_Period_IE_print; -asn_constr_check_f RT_Period_IE_constraint; -ber_type_decoder_f RT_Period_IE_decode_ber; -der_type_encoder_f RT_Period_IE_encode_der; -xer_type_decoder_f RT_Period_IE_decode_xer; -xer_type_encoder_f RT_Period_IE_encode_xer; -oer_type_decoder_f RT_Period_IE_decode_oer; -oer_type_encoder_f RT_Period_IE_encode_oer; -per_type_decoder_f RT_Period_IE_decode_uper; -per_type_encoder_f RT_Period_IE_encode_uper; -per_type_decoder_f RT_Period_IE_decode_aper; -per_type_encoder_f RT_Period_IE_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RT_Period_IE_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetRequest.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetRequest.c deleted file mode 100644 index c5b85be..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ResetRequest.h" - -asn_TYPE_member_t asn_MBR_ResetRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P21, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1 = { - sizeof(struct ResetRequest), - offsetof(struct ResetRequest, _asn_ctx), - asn_MAP_ResetRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetRequest = { - "ResetRequest", - "ResetRequest", - &asn_OP_SEQUENCE, - asn_DEF_ResetRequest_tags_1, - sizeof(asn_DEF_ResetRequest_tags_1) - /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ - asn_DEF_ResetRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_ResetRequest_tags_1) - /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetRequest_1, - 1, /* Elements count */ - &asn_SPC_ResetRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetRequest.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetRequest.h deleted file mode 100644 index 0299fa9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ResetRequest_H_ -#define _ResetRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ResetRequest */ -typedef struct ResetRequest { - ProtocolIE_Container_1917P21_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ResetRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_ResetRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ResetRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetResponse.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetResponse.c deleted file mode 100644 index a969a9c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "ResetResponse.h" - -asn_TYPE_member_t asn_MBR_ResetResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P22, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1 = { - sizeof(struct ResetResponse), - offsetof(struct ResetResponse, _asn_ctx), - asn_MAP_ResetResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetResponse = { - "ResetResponse", - "ResetResponse", - &asn_OP_SEQUENCE, - asn_DEF_ResetResponse_tags_1, - sizeof(asn_DEF_ResetResponse_tags_1) - /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ - asn_DEF_ResetResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_ResetResponse_tags_1) - /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetResponse_1, - 1, /* Elements count */ - &asn_SPC_ResetResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetResponse.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetResponse.h deleted file mode 100644 index ed09c06..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ResetResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _ResetResponse_H_ -#define _ResetResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ResetResponse */ -typedef struct ResetResponse { - ProtocolIE_Container_1917P22_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ResetResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_ResetResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ResetResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.c deleted file mode 100644 index 39afcad..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "SNSSAI.h" - -static int -memb_sST_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 1)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_sD_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 3)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_sST_constr_2 CC_NOTUSED = { - { 0, 0 }, - 1 /* (SIZE(1..1)) */}; -static asn_per_constraints_t asn_PER_memb_sST_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_sD_constr_3 CC_NOTUSED = { - { 0, 0 }, - 3 /* (SIZE(3..3)) */}; -static asn_per_constraints_t asn_PER_memb_sD_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_SNSSAI_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct SNSSAI, sST), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { &asn_OER_memb_sST_constr_2, &asn_PER_memb_sST_constr_2, memb_sST_constraint_1 }, - 0, 0, /* No default value */ - "sST" - }, - { ATF_POINTER, 1, offsetof(struct SNSSAI, sD), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { &asn_OER_memb_sD_constr_3, &asn_PER_memb_sD_constr_3, memb_sD_constraint_1 }, - 0, 0, /* No default value */ - "sD" - }, -}; -static const int asn_MAP_SNSSAI_oms_1[] = { 1 }; -static const ber_tlv_tag_t asn_DEF_SNSSAI_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_SNSSAI_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sST */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sD */ -}; -asn_SEQUENCE_specifics_t asn_SPC_SNSSAI_specs_1 = { - sizeof(struct SNSSAI), - offsetof(struct SNSSAI, _asn_ctx), - asn_MAP_SNSSAI_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_SNSSAI_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_SNSSAI = { - "SNSSAI", - "SNSSAI", - &asn_OP_SEQUENCE, - asn_DEF_SNSSAI_tags_1, - sizeof(asn_DEF_SNSSAI_tags_1) - /sizeof(asn_DEF_SNSSAI_tags_1[0]), /* 1 */ - asn_DEF_SNSSAI_tags_1, /* Same as above */ - sizeof(asn_DEF_SNSSAI_tags_1) - /sizeof(asn_DEF_SNSSAI_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_SNSSAI_1, - 2, /* Elements count */ - &asn_SPC_SNSSAI_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.h deleted file mode 100644 index b854e6f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SNSSAI.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _SNSSAI_H_ -#define _SNSSAI_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* SNSSAI */ -typedef struct SNSSAI { - OCTET_STRING_t sST; - OCTET_STRING_t *sD; /* OPTIONAL */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} SNSSAI_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_SNSSAI; -extern asn_SEQUENCE_specifics_t asn_SPC_SNSSAI_specs_1; -extern asn_TYPE_member_t asn_MBR_SNSSAI_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _SNSSAI_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.c deleted file mode 100644 index 52fbaf5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "ServedPlmnPerCellListItem.h" - -asn_TYPE_member_t asn_MBR_ServedPlmnPerCellListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ServedPlmnPerCellListItem, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_POINTER, 2, offsetof(struct ServedPlmnPerCellListItem, du_PM_5GC), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_FGC_DU_PM_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "du-PM-5GC" - }, - { ATF_POINTER, 1, offsetof(struct ServedPlmnPerCellListItem, du_PM_EPC), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_EPC_DU_PM_Container, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "du-PM-EPC" - }, -}; -static const int asn_MAP_ServedPlmnPerCellListItem_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_ServedPlmnPerCellListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ServedPlmnPerCellListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* du-PM-5GC */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* du-PM-EPC */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ServedPlmnPerCellListItem_specs_1 = { - sizeof(struct ServedPlmnPerCellListItem), - offsetof(struct ServedPlmnPerCellListItem, _asn_ctx), - asn_MAP_ServedPlmnPerCellListItem_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_ServedPlmnPerCellListItem_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ServedPlmnPerCellListItem = { - "ServedPlmnPerCellListItem", - "ServedPlmnPerCellListItem", - &asn_OP_SEQUENCE, - asn_DEF_ServedPlmnPerCellListItem_tags_1, - sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1[0]), /* 1 */ - asn_DEF_ServedPlmnPerCellListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ServedPlmnPerCellListItem_1, - 3, /* Elements count */ - &asn_SPC_ServedPlmnPerCellListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.h deleted file mode 100644 index be5ecd6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ServedPlmnPerCellListItem.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _ServedPlmnPerCellListItem_H_ -#define _ServedPlmnPerCellListItem_H_ - - -#include - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct FGC_DU_PM_Container; -struct EPC_DU_PM_Container; - -/* ServedPlmnPerCellListItem */ -typedef struct ServedPlmnPerCellListItem { - PLMN_Identity_t pLMN_Identity; - struct FGC_DU_PM_Container *du_PM_5GC; /* OPTIONAL */ - struct EPC_DU_PM_Container *du_PM_EPC; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ServedPlmnPerCellListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ServedPlmnPerCellListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_ServedPlmnPerCellListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_ServedPlmnPerCellListItem_1[3]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "FGC-DU-PM-Container.h" -#include "EPC-DU-PM-Container.h" - -#endif /* _ServedPlmnPerCellListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SlicePerPlmnPerCellListItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SlicePerPlmnPerCellListItem.c deleted file mode 100644 index a463803..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SlicePerPlmnPerCellListItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "SlicePerPlmnPerCellListItem.h" - -static int -memb_fQIPERSlicesPerPlmnPerCellList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 64)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..64)) */}; -static asn_per_constraints_t asn_PER_type_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 64 } /* (SIZE(1..64)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..64)) */}; -static asn_per_constraints_t asn_PER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 64 } /* (SIZE(1..64)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_fQIPERSlicesPerPlmnPerCellList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_FQIPERSlicesPerPlmnPerCellListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_fQIPERSlicesPerPlmnPerCellList_specs_3 = { - sizeof(struct SlicePerPlmnPerCellListItem__fQIPERSlicesPerPlmnPerCellList), - offsetof(struct SlicePerPlmnPerCellListItem__fQIPERSlicesPerPlmnPerCellList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_fQIPERSlicesPerPlmnPerCellList_3 = { - "fQIPERSlicesPerPlmnPerCellList", - "fQIPERSlicesPerPlmnPerCellList", - &asn_OP_SEQUENCE_OF, - asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3, - sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3) - /sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3[0]) - 1, /* 1 */ - asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3, /* Same as above */ - sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3) - /sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3[0]), /* 2 */ - { &asn_OER_type_fQIPERSlicesPerPlmnPerCellList_constr_3, &asn_PER_type_fQIPERSlicesPerPlmnPerCellList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_fQIPERSlicesPerPlmnPerCellList_3, - 1, /* Single element */ - &asn_SPC_fQIPERSlicesPerPlmnPerCellList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_SlicePerPlmnPerCellListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct SlicePerPlmnPerCellListItem, sliceID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SNSSAI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "sliceID" - }, - { ATF_NOFLAGS, 0, offsetof(struct SlicePerPlmnPerCellListItem, fQIPERSlicesPerPlmnPerCellList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_fQIPERSlicesPerPlmnPerCellList_3, - 0, - { &asn_OER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3, &asn_PER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3, memb_fQIPERSlicesPerPlmnPerCellList_constraint_1 }, - 0, 0, /* No default value */ - "fQIPERSlicesPerPlmnPerCellList" - }, -}; -static const ber_tlv_tag_t asn_DEF_SlicePerPlmnPerCellListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_SlicePerPlmnPerCellListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sliceID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fQIPERSlicesPerPlmnPerCellList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_SlicePerPlmnPerCellListItem_specs_1 = { - sizeof(struct SlicePerPlmnPerCellListItem), - offsetof(struct SlicePerPlmnPerCellListItem, _asn_ctx), - asn_MAP_SlicePerPlmnPerCellListItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_SlicePerPlmnPerCellListItem = { - "SlicePerPlmnPerCellListItem", - "SlicePerPlmnPerCellListItem", - &asn_OP_SEQUENCE, - asn_DEF_SlicePerPlmnPerCellListItem_tags_1, - sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1[0]), /* 1 */ - asn_DEF_SlicePerPlmnPerCellListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1) - /sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_SlicePerPlmnPerCellListItem_1, - 2, /* Elements count */ - &asn_SPC_SlicePerPlmnPerCellListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SlicePerPlmnPerCellListItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SlicePerPlmnPerCellListItem.h deleted file mode 100644 index 1d704d5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SlicePerPlmnPerCellListItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _SlicePerPlmnPerCellListItem_H_ -#define _SlicePerPlmnPerCellListItem_H_ - - -#include - -/* Including external dependencies */ -#include "SNSSAI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct FQIPERSlicesPerPlmnPerCellListItem; - -/* SlicePerPlmnPerCellListItem */ -typedef struct SlicePerPlmnPerCellListItem { - SNSSAI_t sliceID; - struct SlicePerPlmnPerCellListItem__fQIPERSlicesPerPlmnPerCellList { - A_SEQUENCE_OF(struct FQIPERSlicesPerPlmnPerCellListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } fQIPERSlicesPerPlmnPerCellList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} SlicePerPlmnPerCellListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_SlicePerPlmnPerCellListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_SlicePerPlmnPerCellListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_SlicePerPlmnPerCellListItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "FQIPERSlicesPerPlmnPerCellListItem.h" - -#endif /* _SlicePerPlmnPerCellListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SliceToReportListItem.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SliceToReportListItem.c deleted file mode 100644 index ae32ba9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SliceToReportListItem.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "SliceToReportListItem.h" - -static int -memb_fQIPERSlicesPerPlmnList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* Determine the number of elements */ - size = _A_CSEQUENCE_FROM_VOID(sptr)->count; - - if((size >= 1 && size <= 64)) { - /* Perform validation of the inner elements */ - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_type_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..64)) */}; -static asn_per_constraints_t asn_PER_type_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 64 } /* (SIZE(1..64)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(1..64)) */}; -static asn_per_constraints_t asn_PER_memb_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 6, 6, 1, 64 } /* (SIZE(1..64)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_fQIPERSlicesPerPlmnList_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_FQIPERSlicesPerPlmnListItem, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_fQIPERSlicesPerPlmnList_tags_3[] = { - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_fQIPERSlicesPerPlmnList_specs_3 = { - sizeof(struct SliceToReportListItem__fQIPERSlicesPerPlmnList), - offsetof(struct SliceToReportListItem__fQIPERSlicesPerPlmnList, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_fQIPERSlicesPerPlmnList_3 = { - "fQIPERSlicesPerPlmnList", - "fQIPERSlicesPerPlmnList", - &asn_OP_SEQUENCE_OF, - asn_DEF_fQIPERSlicesPerPlmnList_tags_3, - sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3) - /sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3[0]) - 1, /* 1 */ - asn_DEF_fQIPERSlicesPerPlmnList_tags_3, /* Same as above */ - sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3) - /sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3[0]), /* 2 */ - { &asn_OER_type_fQIPERSlicesPerPlmnList_constr_3, &asn_PER_type_fQIPERSlicesPerPlmnList_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_fQIPERSlicesPerPlmnList_3, - 1, /* Single element */ - &asn_SPC_fQIPERSlicesPerPlmnList_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_SliceToReportListItem_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct SliceToReportListItem, sliceID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SNSSAI, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "sliceID" - }, - { ATF_NOFLAGS, 0, offsetof(struct SliceToReportListItem, fQIPERSlicesPerPlmnList), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - 0, - &asn_DEF_fQIPERSlicesPerPlmnList_3, - 0, - { &asn_OER_memb_fQIPERSlicesPerPlmnList_constr_3, &asn_PER_memb_fQIPERSlicesPerPlmnList_constr_3, memb_fQIPERSlicesPerPlmnList_constraint_1 }, - 0, 0, /* No default value */ - "fQIPERSlicesPerPlmnList" - }, -}; -static const ber_tlv_tag_t asn_DEF_SliceToReportListItem_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_SliceToReportListItem_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sliceID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fQIPERSlicesPerPlmnList */ -}; -asn_SEQUENCE_specifics_t asn_SPC_SliceToReportListItem_specs_1 = { - sizeof(struct SliceToReportListItem), - offsetof(struct SliceToReportListItem, _asn_ctx), - asn_MAP_SliceToReportListItem_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_SliceToReportListItem = { - "SliceToReportListItem", - "SliceToReportListItem", - &asn_OP_SEQUENCE, - asn_DEF_SliceToReportListItem_tags_1, - sizeof(asn_DEF_SliceToReportListItem_tags_1) - /sizeof(asn_DEF_SliceToReportListItem_tags_1[0]), /* 1 */ - asn_DEF_SliceToReportListItem_tags_1, /* Same as above */ - sizeof(asn_DEF_SliceToReportListItem_tags_1) - /sizeof(asn_DEF_SliceToReportListItem_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_SliceToReportListItem_1, - 2, /* Elements count */ - &asn_SPC_SliceToReportListItem_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SliceToReportListItem.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SliceToReportListItem.h deleted file mode 100644 index c25b20a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SliceToReportListItem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _SliceToReportListItem_H_ -#define _SliceToReportListItem_H_ - - -#include - -/* Including external dependencies */ -#include "SNSSAI.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct FQIPERSlicesPerPlmnListItem; - -/* SliceToReportListItem */ -typedef struct SliceToReportListItem { - SNSSAI_t sliceID; - struct SliceToReportListItem__fQIPERSlicesPerPlmnList { - A_SEQUENCE_OF(struct FQIPERSlicesPerPlmnListItem) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } fQIPERSlicesPerPlmnList; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} SliceToReportListItem_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_SliceToReportListItem; -extern asn_SEQUENCE_specifics_t asn_SPC_SliceToReportListItem_specs_1; -extern asn_TYPE_member_t asn_MBR_SliceToReportListItem_1[2]; - -#ifdef __cplusplus -} -#endif - -/* Referred external types */ -#include "FQIPERSlicesPerPlmnListItem.h" - -#endif /* _SliceToReportListItem_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SuccessfulOutcome.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SuccessfulOutcome.c deleted file mode 100644 index 2992230..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SuccessfulOutcome.c +++ /dev/null @@ -1,409 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "SuccessfulOutcome.h" - -static const long asn_VAL_1_id_RICsubscription = 8; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_2_id_RICsubscriptionDelete = 9; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_3_id_RICserviceUpdate = 7; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_4_id_RICcontrol = 4; -static const long asn_VAL_4_reject = 0; -static const long asn_VAL_5_id_E2setup = 1; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_6_id_E2nodeConfigurationUpdate = 10; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_7_id_E2connectionUpdate = 11; -static const long asn_VAL_7_reject = 0; -static const long asn_VAL_8_id_Reset = 3; -static const long asn_VAL_8_reject = 0; -static const long asn_VAL_9_id_RICindication = 5; -static const long asn_VAL_9_ignore = 1; -static const long asn_VAL_10_id_RICserviceQuery = 6; -static const long asn_VAL_10_ignore = 1; -static const long asn_VAL_11_id_ErrorIndication = 2; -static const long asn_VAL_11_ignore = 1; -static const long asn_VAL_12_id_RICsubscriptionDeleteRequired = 12; -static const long asn_VAL_12_ignore = 1; -static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2nodeConfigurationUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_E2nodeConfigurationUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2connectionUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_E2connectionUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_Reset }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_RICindication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_RICserviceQuery }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ErrorIndication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequired }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_RICsubscriptionDeleteRequired }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore } -}; -static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { - { 12, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } -}; -static int -memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_SuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 4; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_SuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 1; /* &SuccessfulOutcome */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_oer_constraints_t asn_OER_memb_procedureCode_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionResponse" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionDeleteResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteResponse" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICserviceUpdateAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceUpdateAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICcontrolAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2setupResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2setupResponse" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2nodeConfigurationUpdateAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdateAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeConfigurationUpdateAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2connectionUpdateAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdateAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResetResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ResetResponse" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 7 }, /* RICsubscriptionResponse */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 6 }, /* RICsubscriptionDeleteResponse */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 5 }, /* RICserviceUpdateAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 4 }, /* RICcontrolAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 3 }, /* E2setupResponse */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 2 }, /* E2nodeConfigurationUpdateAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 1 }, /* E2connectionUpdateAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 0 } /* ResetResponse */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct SuccessfulOutcome__value), - offsetof(struct SuccessfulOutcome__value, _asn_ctx), - offsetof(struct SuccessfulOutcome__value, present), - sizeof(((struct SuccessfulOutcome__value *)0)->present), - asn_MAP_value_tag2el_4, - 8, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 8, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { &asn_OER_memb_procedureCode_constr_2, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_SuccessfulOutcome_criticality_type, - { &asn_OER_memb_criticality_constr_3, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_SuccessfulOutcome_value_type, - { &asn_OER_memb_value_constr_4, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = { - sizeof(struct SuccessfulOutcome), - offsetof(struct SuccessfulOutcome, _asn_ctx), - asn_MAP_SuccessfulOutcome_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = { - "SuccessfulOutcome", - "SuccessfulOutcome", - &asn_OP_SEQUENCE, - asn_DEF_SuccessfulOutcome_tags_1, - sizeof(asn_DEF_SuccessfulOutcome_tags_1) - /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ - asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */ - sizeof(asn_DEF_SuccessfulOutcome_tags_1) - /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_SuccessfulOutcome_1, - 3, /* Elements count */ - &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SuccessfulOutcome.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SuccessfulOutcome.h deleted file mode 100644 index 4798fa0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/SuccessfulOutcome.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _SuccessfulOutcome_H_ -#define _SuccessfulOutcome_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICsubscriptionRequest.h" -#include "RICsubscriptionResponse.h" -#include "RICsubscriptionFailure.h" -#include "RICsubscriptionDeleteRequest.h" -#include "RICsubscriptionDeleteResponse.h" -#include "RICsubscriptionDeleteFailure.h" -#include "RICserviceUpdate.h" -#include "RICserviceUpdateAcknowledge.h" -#include "RICserviceUpdateFailure.h" -#include "RICcontrolRequest.h" -#include "RICcontrolAcknowledge.h" -#include "RICcontrolFailure.h" -#include "E2setupRequest.h" -#include "E2setupResponse.h" -#include "E2setupFailure.h" -#include "E2nodeConfigurationUpdate.h" -#include "E2nodeConfigurationUpdateAcknowledge.h" -#include "E2nodeConfigurationUpdateFailure.h" -#include "E2connectionUpdate.h" -#include "E2connectionUpdateAcknowledge.h" -#include "E2connectionUpdateFailure.h" -#include "ResetRequest.h" -#include "ResetResponse.h" -#include "RICindication.h" -#include "RICserviceQuery.h" -#include "ErrorIndication.h" -#include "RICsubscriptionDeleteRequired.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum SuccessfulOutcome__value_PR { - SuccessfulOutcome__value_PR_NOTHING, /* No components present */ - SuccessfulOutcome__value_PR_RICsubscriptionResponse, - SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse, - SuccessfulOutcome__value_PR_RICserviceUpdateAcknowledge, - SuccessfulOutcome__value_PR_RICcontrolAcknowledge, - SuccessfulOutcome__value_PR_E2setupResponse, - SuccessfulOutcome__value_PR_E2nodeConfigurationUpdateAcknowledge, - SuccessfulOutcome__value_PR_E2connectionUpdateAcknowledge, - SuccessfulOutcome__value_PR_ResetResponse -} SuccessfulOutcome__value_PR; - -/* SuccessfulOutcome */ -typedef struct SuccessfulOutcome { - ProcedureCode_t procedureCode; - Criticality_t criticality; - struct SuccessfulOutcome__value { - SuccessfulOutcome__value_PR present; - union SuccessfulOutcome__value_u { - RICsubscriptionResponse_t RICsubscriptionResponse; - RICsubscriptionDeleteResponse_t RICsubscriptionDeleteResponse; - RICserviceUpdateAcknowledge_t RICserviceUpdateAcknowledge; - RICcontrolAcknowledge_t RICcontrolAcknowledge; - E2setupResponse_t E2setupResponse; - E2nodeConfigurationUpdateAcknowledge_t E2nodeConfigurationUpdateAcknowledge; - E2connectionUpdateAcknowledge_t E2connectionUpdateAcknowledge; - ResetResponse_t ResetResponse; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} SuccessfulOutcome_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome; -extern asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1; -extern asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _SuccessfulOutcome_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLinformation.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLinformation.c deleted file mode 100644 index 0c37796..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLinformation.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "TNLinformation.h" - -static int -memb_tnlAddress_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size >= 1 && size <= 160)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_tnlPort_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 16)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_oer_constraints_t asn_OER_memb_tnlAddress_constr_2 CC_NOTUSED = { - { 0, 0 }, - -1 /* (SIZE(0..MAX)) */}; -static asn_per_constraints_t asn_PER_memb_tnlAddress_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 160 } /* (SIZE(1..160,...)) */, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_tnlPort_constr_3 CC_NOTUSED = { - { 0, 0 }, - 16 /* (SIZE(16..16)) */}; -static asn_per_constraints_t asn_PER_memb_tnlPort_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_TNLinformation_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct TNLinformation, tnlAddress), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_tnlAddress_constr_2, &asn_PER_memb_tnlAddress_constr_2, memb_tnlAddress_constraint_1 }, - 0, 0, /* No default value */ - "tnlAddress" - }, - { ATF_POINTER, 1, offsetof(struct TNLinformation, tnlPort), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { &asn_OER_memb_tnlPort_constr_3, &asn_PER_memb_tnlPort_constr_3, memb_tnlPort_constraint_1 }, - 0, 0, /* No default value */ - "tnlPort" - }, -}; -static const int asn_MAP_TNLinformation_oms_1[] = { 1 }; -static const ber_tlv_tag_t asn_DEF_TNLinformation_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_TNLinformation_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlAddress */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tnlPort */ -}; -asn_SEQUENCE_specifics_t asn_SPC_TNLinformation_specs_1 = { - sizeof(struct TNLinformation), - offsetof(struct TNLinformation, _asn_ctx), - asn_MAP_TNLinformation_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_TNLinformation_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_TNLinformation = { - "TNLinformation", - "TNLinformation", - &asn_OP_SEQUENCE, - asn_DEF_TNLinformation_tags_1, - sizeof(asn_DEF_TNLinformation_tags_1) - /sizeof(asn_DEF_TNLinformation_tags_1[0]), /* 1 */ - asn_DEF_TNLinformation_tags_1, /* Same as above */ - sizeof(asn_DEF_TNLinformation_tags_1) - /sizeof(asn_DEF_TNLinformation_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_TNLinformation_1, - 2, /* Elements count */ - &asn_SPC_TNLinformation_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLinformation.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLinformation.h deleted file mode 100644 index cbb3c46..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLinformation.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _TNLinformation_H_ -#define _TNLinformation_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* TNLinformation */ -typedef struct TNLinformation { - BIT_STRING_t tnlAddress; - BIT_STRING_t *tnlPort; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} TNLinformation_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_TNLinformation; -extern asn_SEQUENCE_specifics_t asn_SPC_TNLinformation_specs_1; -extern asn_TYPE_member_t asn_MBR_TNLinformation_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _TNLinformation_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.c deleted file mode 100644 index 8c0ce3a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "TNLusage.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_TNLusage_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_TNLusage_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TNLusage_value2enum_1[] = { - { 0, 11, "ric-service" }, - { 1, 16, "support-function" }, - { 2, 4, "both" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_TNLusage_enum2value_1[] = { - 2, /* both(2) */ - 0, /* ric-service(0) */ - 1 /* support-function(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_TNLusage_specs_1 = { - asn_MAP_TNLusage_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TNLusage_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TNLusage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TNLusage = { - "TNLusage", - "TNLusage", - &asn_OP_NativeEnumerated, - asn_DEF_TNLusage_tags_1, - sizeof(asn_DEF_TNLusage_tags_1) - /sizeof(asn_DEF_TNLusage_tags_1[0]), /* 1 */ - asn_DEF_TNLusage_tags_1, /* Same as above */ - sizeof(asn_DEF_TNLusage_tags_1) - /sizeof(asn_DEF_TNLusage_tags_1[0]), /* 1 */ - { &asn_OER_type_TNLusage_constr_1, &asn_PER_type_TNLusage_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TNLusage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.h deleted file mode 100644 index 30b0aee..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TNLusage.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _TNLusage_H_ -#define _TNLusage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TNLusage { - TNLusage_ric_service = 0, - TNLusage_support_function = 1, - TNLusage_both = 2 - /* - * Enumeration is extensible - */ -} e_TNLusage; - -/* TNLusage */ -typedef long TNLusage_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_TNLusage_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_TNLusage; -extern const asn_INTEGER_specifics_t asn_SPC_TNLusage_specs_1; -asn_struct_free_f TNLusage_free; -asn_struct_print_f TNLusage_print; -asn_constr_check_f TNLusage_constraint; -ber_type_decoder_f TNLusage_decode_ber; -der_type_encoder_f TNLusage_encode_der; -xer_type_decoder_f TNLusage_decode_xer; -xer_type_encoder_f TNLusage_encode_xer; -oer_type_decoder_f TNLusage_decode_oer; -oer_type_encoder_f TNLusage_encode_oer; -per_type_decoder_f TNLusage_decode_uper; -per_type_encoder_f TNLusage_encode_uper; -per_type_decoder_f TNLusage_decode_aper; -per_type_encoder_f TNLusage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TNLusage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.c deleted file mode 100644 index 4c5ec81..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "TimeToWait.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_TimeToWait_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_TimeToWait_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TimeToWait_value2enum_1[] = { - { 0, 3, "v1s" }, - { 1, 3, "v2s" }, - { 2, 3, "v5s" }, - { 3, 4, "v10s" }, - { 4, 4, "v20s" }, - { 5, 4, "v60s" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_TimeToWait_enum2value_1[] = { - 3, /* v10s(3) */ - 0, /* v1s(0) */ - 4, /* v20s(4) */ - 1, /* v2s(1) */ - 2, /* v5s(2) */ - 5 /* v60s(5) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1 = { - asn_MAP_TimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TimeToWait_enum2value_1, /* N => "tag"; sorted by N */ - 6, /* Number of elements in the maps */ - 7, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TimeToWait_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TimeToWait = { - "TimeToWait", - "TimeToWait", - &asn_OP_NativeEnumerated, - asn_DEF_TimeToWait_tags_1, - sizeof(asn_DEF_TimeToWait_tags_1) - /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ - asn_DEF_TimeToWait_tags_1, /* Same as above */ - sizeof(asn_DEF_TimeToWait_tags_1) - /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ - { &asn_OER_type_TimeToWait_constr_1, &asn_PER_type_TimeToWait_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TimeToWait_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.h deleted file mode 100644 index 69793d7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TimeToWait.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _TimeToWait_H_ -#define _TimeToWait_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TimeToWait { - TimeToWait_v1s = 0, - TimeToWait_v2s = 1, - TimeToWait_v5s = 2, - TimeToWait_v10s = 3, - TimeToWait_v20s = 4, - TimeToWait_v60s = 5 - /* - * Enumeration is extensible - */ -} e_TimeToWait; - -/* TimeToWait */ -typedef long TimeToWait_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_TimeToWait; -asn_struct_free_f TimeToWait_free; -asn_struct_print_f TimeToWait_print; -asn_constr_check_f TimeToWait_constraint; -ber_type_decoder_f TimeToWait_decode_ber; -der_type_encoder_f TimeToWait_encode_der; -xer_type_decoder_f TimeToWait_decode_xer; -xer_type_encoder_f TimeToWait_encode_xer; -oer_type_decoder_f TimeToWait_decode_oer; -oer_type_encoder_f TimeToWait_encode_oer; -per_type_decoder_f TimeToWait_decode_uper; -per_type_encoder_f TimeToWait_encode_uper; -per_type_decoder_f TimeToWait_decode_aper; -per_type_encoder_f TimeToWait_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TimeToWait_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.c deleted file mode 100644 index 4087751..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "Timestamp.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_Timestamp_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_Timestamp = { - "Timestamp", - "Timestamp", - &asn_OP_OCTET_STRING, - asn_DEF_Timestamp_tags_1, - sizeof(asn_DEF_Timestamp_tags_1) - /sizeof(asn_DEF_Timestamp_tags_1[0]), /* 1 */ - asn_DEF_Timestamp_tags_1, /* Same as above */ - sizeof(asn_DEF_Timestamp_tags_1) - /sizeof(asn_DEF_Timestamp_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.h deleted file mode 100644 index f77ac4a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Timestamp.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _Timestamp_H_ -#define _Timestamp_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Timestamp */ -typedef OCTET_STRING_t Timestamp_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_Timestamp; -asn_struct_free_f Timestamp_free; -asn_struct_print_f Timestamp_print; -asn_constr_check_f Timestamp_constraint; -ber_type_decoder_f Timestamp_decode_ber; -der_type_encoder_f Timestamp_encode_der; -xer_type_decoder_f Timestamp_decode_xer; -xer_type_encoder_f Timestamp_encode_xer; -oer_type_decoder_f Timestamp_decode_oer; -oer_type_encoder_f Timestamp_encode_oer; -per_type_decoder_f Timestamp_decode_uper; -per_type_encoder_f Timestamp_encode_uper; -per_type_decoder_f Timestamp_decode_aper; -per_type_encoder_f Timestamp_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _Timestamp_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TransactionID.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TransactionID.c deleted file mode 100644 index b6c2c44..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TransactionID.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "TransactionID.h" - -int -TransactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_TransactionID_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_type_TransactionID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 0, 255 } /* (0..255,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_TransactionID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TransactionID = { - "TransactionID", - "TransactionID", - &asn_OP_NativeInteger, - asn_DEF_TransactionID_tags_1, - sizeof(asn_DEF_TransactionID_tags_1) - /sizeof(asn_DEF_TransactionID_tags_1[0]), /* 1 */ - asn_DEF_TransactionID_tags_1, /* Same as above */ - sizeof(asn_DEF_TransactionID_tags_1) - /sizeof(asn_DEF_TransactionID_tags_1[0]), /* 1 */ - { &asn_OER_type_TransactionID_constr_1, &asn_PER_type_TransactionID_constr_1, TransactionID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TransactionID.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TransactionID.h deleted file mode 100644 index bcfd5b8..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TransactionID.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _TransactionID_H_ -#define _TransactionID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* TransactionID */ -typedef long TransactionID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_TransactionID; -asn_struct_free_f TransactionID_free; -asn_struct_print_f TransactionID_print; -asn_constr_check_f TransactionID_constraint; -ber_type_decoder_f TransactionID_decode_ber; -der_type_encoder_f TransactionID_encode_der; -xer_type_decoder_f TransactionID_decode_xer; -xer_type_encoder_f TransactionID_encode_xer; -oer_type_decoder_f TransactionID_decode_oer; -oer_type_encoder_f TransactionID_encode_oer; -per_type_decoder_f TransactionID_decode_uper; -per_type_encoder_f TransactionID_encode_uper; -per_type_decoder_f TransactionID_decode_aper; -per_type_encoder_f TransactionID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TransactionID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.c deleted file mode 100644 index 069fd1d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "Trigger-ConditionIE-Item.h" - -asn_TYPE_member_t asn_MBR_Trigger_ConditionIE_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct Trigger_ConditionIE_Item, report_Period_IE), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RT_Period_IE, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "report-Period-IE" - }, -}; -static const ber_tlv_tag_t asn_DEF_Trigger_ConditionIE_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_Trigger_ConditionIE_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* report-Period-IE */ -}; -asn_SEQUENCE_specifics_t asn_SPC_Trigger_ConditionIE_Item_specs_1 = { - sizeof(struct Trigger_ConditionIE_Item), - offsetof(struct Trigger_ConditionIE_Item, _asn_ctx), - asn_MAP_Trigger_ConditionIE_Item_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_Trigger_ConditionIE_Item = { - "Trigger-ConditionIE-Item", - "Trigger-ConditionIE-Item", - &asn_OP_SEQUENCE, - asn_DEF_Trigger_ConditionIE_Item_tags_1, - sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1) - /sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1[0]), /* 1 */ - asn_DEF_Trigger_ConditionIE_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1) - /sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_Trigger_ConditionIE_Item_1, - 1, /* Elements count */ - &asn_SPC_Trigger_ConditionIE_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.h deleted file mode 100644 index 173b46a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/Trigger-ConditionIE-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _Trigger_ConditionIE_Item_H_ -#define _Trigger_ConditionIE_Item_H_ - - -#include - -/* Including external dependencies */ -#include "RT-Period-IE.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Trigger-ConditionIE-Item */ -typedef struct Trigger_ConditionIE_Item { - RT_Period_IE_t report_Period_IE; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} Trigger_ConditionIE_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_Trigger_ConditionIE_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_Trigger_ConditionIE_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_Trigger_ConditionIE_Item_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _Trigger_ConditionIE_Item_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TriggeringMessage.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TriggeringMessage.c deleted file mode 100644 index 9f286d1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TriggeringMessage.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "TriggeringMessage.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_TriggeringMessage_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = { - { 0, 18, "initiating-message" }, - { 1, 18, "successful-outcome" }, - { 2, 21, "unsuccessfull-outcome" } -}; -static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = { - 0, /* initiating-message(0) */ - 1, /* successful-outcome(1) */ - 2 /* unsuccessfull-outcome(2) */ -}; -const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = { - asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = { - "TriggeringMessage", - "TriggeringMessage", - &asn_OP_NativeEnumerated, - asn_DEF_TriggeringMessage_tags_1, - sizeof(asn_DEF_TriggeringMessage_tags_1) - /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ - asn_DEF_TriggeringMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_TriggeringMessage_tags_1) - /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ - { &asn_OER_type_TriggeringMessage_constr_1, &asn_PER_type_TriggeringMessage_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TriggeringMessage.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TriggeringMessage.h deleted file mode 100644 index b614674..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TriggeringMessage.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _TriggeringMessage_H_ -#define _TriggeringMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TriggeringMessage { - TriggeringMessage_initiating_message = 0, - TriggeringMessage_successful_outcome = 1, - TriggeringMessage_unsuccessfull_outcome = 2 -} e_TriggeringMessage; - -/* TriggeringMessage */ -typedef long TriggeringMessage_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage; -extern const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1; -asn_struct_free_f TriggeringMessage_free; -asn_struct_print_f TriggeringMessage_print; -asn_constr_check_f TriggeringMessage_constraint; -ber_type_decoder_f TriggeringMessage_decode_ber; -der_type_encoder_f TriggeringMessage_encode_der; -xer_type_decoder_f TriggeringMessage_decode_xer; -xer_type_encoder_f TriggeringMessage_encode_xer; -oer_type_decoder_f TriggeringMessage_decode_oer; -oer_type_encoder_f TriggeringMessage_encode_oer; -per_type_decoder_f TriggeringMessage_decode_uper; -per_type_encoder_f TriggeringMessage_encode_uper; -per_type_decoder_f TriggeringMessage_decode_aper; -per_type_encoder_f TriggeringMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TriggeringMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.c deleted file mode 100644 index ea504c9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "TypeOfError.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_TypeOfError_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = { - { 0, 14, "not-understood" }, - { 1, 7, "missing" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = { - 1, /* missing(1) */ - 0 /* not-understood(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = { - asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TypeOfError_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TypeOfError = { - "TypeOfError", - "TypeOfError", - &asn_OP_NativeEnumerated, - asn_DEF_TypeOfError_tags_1, - sizeof(asn_DEF_TypeOfError_tags_1) - /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ - asn_DEF_TypeOfError_tags_1, /* Same as above */ - sizeof(asn_DEF_TypeOfError_tags_1) - /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ - { &asn_OER_type_TypeOfError_constr_1, &asn_PER_type_TypeOfError_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TypeOfError_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.h deleted file mode 100644 index 51c08b9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/TypeOfError.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _TypeOfError_H_ -#define _TypeOfError_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TypeOfError { - TypeOfError_not_understood = 0, - TypeOfError_missing = 1 - /* - * Enumeration is extensible - */ -} e_TypeOfError; - -/* TypeOfError */ -typedef long TypeOfError_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_TypeOfError_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_TypeOfError; -extern const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1; -asn_struct_free_f TypeOfError_free; -asn_struct_print_f TypeOfError_print; -asn_constr_check_f TypeOfError_constraint; -ber_type_decoder_f TypeOfError_decode_ber; -der_type_encoder_f TypeOfError_encode_der; -xer_type_decoder_f TypeOfError_decode_xer; -xer_type_encoder_f TypeOfError_encode_xer; -oer_type_decoder_f TypeOfError_decode_oer; -oer_type_encoder_f TypeOfError_encode_oer; -per_type_decoder_f TypeOfError_decode_uper; -per_type_encoder_f TypeOfError_encode_uper; -per_type_decoder_f TypeOfError_decode_aper; -per_type_encoder_f TypeOfError_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TypeOfError_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UE-Report-Type.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UE-Report-Type.c deleted file mode 100644 index 1966c27..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UE-Report-Type.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#include "UE-Report-Type.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_oer_constraints_t asn_OER_type_UE_Report_Type_constr_1 CC_NOTUSED = { - { 0, 0 }, - -1}; -asn_per_constraints_t asn_PER_type_UE_Report_Type_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_UE_Report_Type_value2enum_1[] = { - { 0, 17, "oDU-Report-Per-UE" }, - { 1, 20, "oCU-CP-Report-Per-UE" }, - { 2, 20, "oCU-UP-Report-Per-UE" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_UE_Report_Type_enum2value_1[] = { - 1, /* oCU-CP-Report-Per-UE(1) */ - 2, /* oCU-UP-Report-Per-UE(2) */ - 0 /* oDU-Report-Per-UE(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_UE_Report_Type_specs_1 = { - asn_MAP_UE_Report_Type_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_UE_Report_Type_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_UE_Report_Type_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_UE_Report_Type = { - "UE-Report-Type", - "UE-Report-Type", - &asn_OP_NativeEnumerated, - asn_DEF_UE_Report_Type_tags_1, - sizeof(asn_DEF_UE_Report_Type_tags_1) - /sizeof(asn_DEF_UE_Report_Type_tags_1[0]), /* 1 */ - asn_DEF_UE_Report_Type_tags_1, /* Same as above */ - sizeof(asn_DEF_UE_Report_Type_tags_1) - /sizeof(asn_DEF_UE_Report_Type_tags_1[0]), /* 1 */ - { &asn_OER_type_UE_Report_Type_constr_1, &asn_PER_type_UE_Report_Type_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_UE_Report_Type_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UE-Report-Type.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UE-Report-Type.h deleted file mode 100644 index 02e7cb5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UE-Report-Type.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2SM-KPM-IEs" - * found in "/home/rshacham/e2sm-kpm-v01.02.asn" - * `asn1c -fcompound-names` - */ - -#ifndef _UE_Report_Type_H_ -#define _UE_Report_Type_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum UE_Report_Type { - UE_Report_Type_oDU_Report_Per_UE = 0, - UE_Report_Type_oCU_CP_Report_Per_UE = 1, - UE_Report_Type_oCU_UP_Report_Per_UE = 2 - /* - * Enumeration is extensible - */ -} e_UE_Report_Type; - -/* UE-Report-Type */ -typedef long UE_Report_Type_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_UE_Report_Type_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_UE_Report_Type; -extern const asn_INTEGER_specifics_t asn_SPC_UE_Report_Type_specs_1; -asn_struct_free_f UE_Report_Type_free; -asn_struct_print_f UE_Report_Type_print; -asn_constr_check_f UE_Report_Type_constraint; -ber_type_decoder_f UE_Report_Type_decode_ber; -der_type_encoder_f UE_Report_Type_encode_der; -xer_type_decoder_f UE_Report_Type_decode_xer; -xer_type_encoder_f UE_Report_Type_encode_xer; -oer_type_decoder_f UE_Report_Type_decode_oer; -oer_type_encoder_f UE_Report_Type_encode_oer; -per_type_decoder_f UE_Report_Type_decode_uper; -per_type_encoder_f UE_Report_Type_encode_uper; -per_type_decoder_f UE_Report_Type_decode_aper; -per_type_encoder_f UE_Report_Type_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _UE_Report_Type_H_ */ -#include diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.c deleted file mode 100644 index 1a41540..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.c +++ /dev/null @@ -1,399 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#include "UnsuccessfulOutcome.h" - -static const long asn_VAL_1_id_RICsubscription = 8; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_2_id_RICsubscriptionDelete = 9; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_3_id_RICserviceUpdate = 7; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_4_id_RICcontrol = 4; -static const long asn_VAL_4_reject = 0; -static const long asn_VAL_5_id_E2setup = 1; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_6_id_E2nodeConfigurationUpdate = 10; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_7_id_E2connectionUpdate = 11; -static const long asn_VAL_7_reject = 0; -static const long asn_VAL_8_id_Reset = 3; -static const long asn_VAL_8_reject = 0; -static const long asn_VAL_9_id_RICindication = 5; -static const long asn_VAL_9_ignore = 1; -static const long asn_VAL_10_id_RICserviceQuery = 6; -static const long asn_VAL_10_ignore = 1; -static const long asn_VAL_11_id_ErrorIndication = 2; -static const long asn_VAL_11_ignore = 1; -static const long asn_VAL_12_id_RICsubscriptionDeleteRequired = 12; -static const long asn_VAL_12_ignore = 1; -static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2nodeConfigurationUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_E2nodeConfigurationUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2connectionUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_E2connectionUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_Reset }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_RICindication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_RICserviceQuery }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ErrorIndication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequired }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_RICsubscriptionDeleteRequired }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore } -}; -static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { - { 12, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } -}; -static int -memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_UnsuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 4; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_UnsuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 2; /* &UnsuccessfulOutcome */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_oer_constraints_t asn_OER_memb_procedureCode_constr_2 CC_NOTUSED = { - { 1, 1 } /* (0..255) */, - -1}; -static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_criticality_constr_3 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_oer_constraints_t asn_OER_memb_value_constr_4 CC_NOTUSED = { - { 0, 0 }, - -1}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionDeleteFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICserviceUpdateFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceUpdateFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICcontrolFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2setupFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2setupFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2nodeConfigurationUpdateFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdateFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeConfigurationUpdateFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2connectionUpdateFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdateFailure" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 6 }, /* RICsubscriptionFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 5 }, /* RICsubscriptionDeleteFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 4 }, /* RICserviceUpdateFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 3 }, /* RICcontrolFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 2 }, /* E2setupFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 1 }, /* E2nodeConfigurationUpdateFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 0 } /* E2connectionUpdateFailure */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct UnsuccessfulOutcome__value), - offsetof(struct UnsuccessfulOutcome__value, _asn_ctx), - offsetof(struct UnsuccessfulOutcome__value, present), - sizeof(((struct UnsuccessfulOutcome__value *)0)->present), - asn_MAP_value_tag2el_4, - 7, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 7, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { &asn_OER_memb_procedureCode_constr_2, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_UnsuccessfulOutcome_criticality_type, - { &asn_OER_memb_criticality_constr_3, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_UnsuccessfulOutcome_value_type, - { &asn_OER_memb_value_constr_4, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = { - sizeof(struct UnsuccessfulOutcome), - offsetof(struct UnsuccessfulOutcome, _asn_ctx), - asn_MAP_UnsuccessfulOutcome_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = { - "UnsuccessfulOutcome", - "UnsuccessfulOutcome", - &asn_OP_SEQUENCE, - asn_DEF_UnsuccessfulOutcome_tags_1, - sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) - /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ - asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */ - sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) - /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_UnsuccessfulOutcome_1, - 3, /* Elements count */ - &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.h deleted file mode 100644 index 2001573..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/UnsuccessfulOutcome.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example` - */ - -#ifndef _UnsuccessfulOutcome_H_ -#define _UnsuccessfulOutcome_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICsubscriptionRequest.h" -#include "RICsubscriptionResponse.h" -#include "RICsubscriptionFailure.h" -#include "RICsubscriptionDeleteRequest.h" -#include "RICsubscriptionDeleteResponse.h" -#include "RICsubscriptionDeleteFailure.h" -#include "RICserviceUpdate.h" -#include "RICserviceUpdateAcknowledge.h" -#include "RICserviceUpdateFailure.h" -#include "RICcontrolRequest.h" -#include "RICcontrolAcknowledge.h" -#include "RICcontrolFailure.h" -#include "E2setupRequest.h" -#include "E2setupResponse.h" -#include "E2setupFailure.h" -#include "E2nodeConfigurationUpdate.h" -#include "E2nodeConfigurationUpdateAcknowledge.h" -#include "E2nodeConfigurationUpdateFailure.h" -#include "E2connectionUpdate.h" -#include "E2connectionUpdateAcknowledge.h" -#include "E2connectionUpdateFailure.h" -#include "ResetRequest.h" -#include "ResetResponse.h" -#include "RICindication.h" -#include "RICserviceQuery.h" -#include "ErrorIndication.h" -#include "RICsubscriptionDeleteRequired.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum UnsuccessfulOutcome__value_PR { - UnsuccessfulOutcome__value_PR_NOTHING, /* No components present */ - UnsuccessfulOutcome__value_PR_RICsubscriptionFailure, - UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure, - UnsuccessfulOutcome__value_PR_RICserviceUpdateFailure, - UnsuccessfulOutcome__value_PR_RICcontrolFailure, - UnsuccessfulOutcome__value_PR_E2setupFailure, - UnsuccessfulOutcome__value_PR_E2nodeConfigurationUpdateFailure, - UnsuccessfulOutcome__value_PR_E2connectionUpdateFailure -} UnsuccessfulOutcome__value_PR; - -/* UnsuccessfulOutcome */ -typedef struct UnsuccessfulOutcome { - ProcedureCode_t procedureCode; - Criticality_t criticality; - struct UnsuccessfulOutcome__value { - UnsuccessfulOutcome__value_PR present; - union UnsuccessfulOutcome__value_u { - RICsubscriptionFailure_t RICsubscriptionFailure; - RICsubscriptionDeleteFailure_t RICsubscriptionDeleteFailure; - RICserviceUpdateFailure_t RICserviceUpdateFailure; - RICcontrolFailure_t RICcontrolFailure; - E2setupFailure_t E2setupFailure; - E2nodeConfigurationUpdateFailure_t E2nodeConfigurationUpdateFailure; - E2connectionUpdateFailure_t E2connectionUpdateFailure; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} UnsuccessfulOutcome_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome; -extern asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1; -extern asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _UnsuccessfulOutcome_H_ */ -#include "asn_internal.h" diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.c deleted file mode 100644 index ec952fc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.c +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.h deleted file mode 100644 index e35bc44..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SEQUENCE_OF.h +++ /dev/null @@ -1,52 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.c deleted file mode 100644 index 944f2cb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.c +++ /dev/null @@ -1,88 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.h deleted file mode 100644 index 882e1a4..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_SET_OF.h +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_application.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_application.c deleted file mode 100644 index 2bff460..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_application.c +++ /dev/null @@ -1,481 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_app_consume_bytes_f *callback, - void *callback_key); - - -struct callback_count_bytes_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - size_t computed_size; -}; - -/* - * Encoder which just counts bytes that come through it. - */ -static int -callback_count_bytes_cb(const void *data, size_t size, void *keyp) { - struct callback_count_bytes_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret >= 0) { - key->computed_size += size; - } - - return ret; -} - -struct overrun_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct dynamic_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct callback_failure_catch_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - int callback_failed; -}; - -/* - * Encoder which doesn't stop counting bytes - * even if it reaches the end of the buffer. - */ -static int -overrun_encoder_cb(const void *data, size_t size, void *keyp) { - struct overrun_encoder_key *key = keyp; - - if(key->computed_size + size > key->buffer_size) { - /* - * Avoid accident on the next call: - * stop adding bytes to the buffer. - */ - key->buffer_size = 0; - } else { - memcpy((char *)key->buffer + key->computed_size, data, size); - } - key->computed_size += size; - - return 0; -} - -/* - * Encoder which dynamically allocates output, and continues - * to count even if allocation failed. - */ -static int -dynamic_encoder_cb(const void *data, size_t size, void *keyp) { - struct dynamic_encoder_key *key = keyp; - - if(key->buffer) { - if(key->computed_size + size >= key->buffer_size) { - void *p; - size_t new_size = key->buffer_size; - - do { - new_size *= 2; - } while(new_size <= key->computed_size + size); - - p = REALLOC(key->buffer, new_size); - if(p) { - key->buffer = p; - key->buffer_size = new_size; - } else { - FREEMEM(key->buffer); - key->buffer = 0; - key->buffer_size = 0; - key->computed_size += size; - return 0; - } - } - memcpy((char *)key->buffer + key->computed_size, data, size); - } - - key->computed_size += size; - - return 0; -} - -/* - * Encoder which help convert the application level encoder failure into EIO. - */ -static int -callback_failure_catch_cb(const void *data, size_t size, void *keyp) { - struct callback_failure_catch_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret < 0) { - key->callback_failed = 1; - } - - return ret; -} - -asn_enc_rval_t -asn_encode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { - struct callback_failure_catch_key cb_key; - asn_enc_rval_t er = {0,0,0}; - - if(!callback) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.callback_failed = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - callback_failure_catch_cb, &cb_key); - if(cb_key.callback_failed) { - assert(er.encoded == -1); - assert(errno == EBADF); - errno = EIO; - } - - return er; -} - -asn_enc_rval_t -asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - void *buffer, size_t buffer_size) { - struct overrun_encoder_key buf_key; - asn_enc_rval_t er = {0,0,0}; - - if(buffer_size > 0 && !buffer) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - buf_key.buffer = buffer; - buf_key.buffer_size = buffer_size; - buf_key.computed_size = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - overrun_encoder_cb, &buf_key); - - if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - er.encoded, buf_key.computed_size); - assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); - } - - return er; -} - -asn_encode_to_new_buffer_result_t -asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr) { - struct dynamic_encoder_key buf_key; - asn_encode_to_new_buffer_result_t res; - - buf_key.buffer_size = 16; - buf_key.buffer = MALLOC(buf_key.buffer_size); - buf_key.computed_size = 0; - - res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - dynamic_encoder_cb, &buf_key); - - if(res.result.encoded >= 0 - && (size_t)res.result.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - res.result.encoded, buf_key.computed_size); - assert(res.result.encoded < 0 - || (size_t)res.result.encoded == buf_key.computed_size); - } - - res.buffer = buf_key.buffer; - - /* 0-terminate just in case. */ - if(res.buffer) { - assert(buf_key.computed_size < buf_key.buffer_size); - ((char *)res.buffer)[buf_key.computed_size] = '\0'; - } - - return res; -} - -static asn_enc_rval_t -asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_consume_bytes_f *callback, void *callback_key) { - asn_enc_rval_t er = {0,0,0}; - enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; - - (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ - - if(!td || !sptr) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - switch(syntax) { - case ATS_NONSTANDARD_PLAINTEXT: - if(td->op->print_struct) { - struct callback_count_bytes_key cb_key; - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.computed_size = 0; - if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, - &cb_key) - < 0 - || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { - errno = EBADF; /* Structure has incorrect form. */ - er.encoded = -1; - er.failed_type = td; - er.structure_ptr = sptr; - } else { - er.encoded = cb_key.computed_size; - er.failed_type = 0; - er.structure_ptr = 0; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - case ATS_RANDOM: - errno = ENOENT; /* Randomization doesn't make sense on output. */ - ASN__ENCODE_FAILED; - - case ATS_BER: - /* BER is a superset of DER. */ - /* Fall through. */ - case ATS_DER: - if(td->op->der_encoder) { - er = der_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->der_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* DER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_CER: - errno = ENOENT; /* Transfer syntax is not defined for any type. */ - ASN__ENCODE_FAILED; - -#ifdef ASN_DISABLE_OER_SUPPORT - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_OER_SUPPORT */ - case ATS_BASIC_OER: - /* CANONICAL-OER is a superset of BASIC-OER. */ - /* Fall through. */ - case ATS_CANONICAL_OER: - if(td->op->oer_encoder) { - er = oer_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->oer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* OER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_OER_SUPPORT */ - -#ifdef ASN_DISABLE_PER_SUPPORT - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_PER_SUPPORT */ - case ATS_UNALIGNED_BASIC_PER: - /* CANONICAL-UPER is a superset of BASIC-UPER. */ - /* Fall through. */ - case ATS_UNALIGNED_CANONICAL_PER: - if(td->op->uper_encoder) { - er = uper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->uper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* UPER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_ALIGNED_BASIC_PER: - /* CANONICAL-APER is a superset of BASIC-APER. */ - /* Fall through. */ - case ATS_ALIGNED_CANONICAL_PER: - if(td->op->aper_encoder) { - er = aper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->aper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* APER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_PER_SUPPORT */ - - case ATS_BASIC_XER: - /* CANONICAL-XER is a superset of BASIC-XER. */ - xer_flags &= ~XER_F_CANONICAL; - xer_flags |= XER_F_BASIC; - /* Fall through. */ - case ATS_CANONICAL_XER: - if(td->op->xer_encoder) { - er = xer_encode(td, sptr, xer_flags, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->xer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* XER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - default: - errno = ENOENT; - ASN__ENCODE_FAILED; - } - - return er; -} - -asn_dec_rval_t -asn_decode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - void **sptr, const void *buffer, size_t size) { - if(!td || !td->op || !sptr || (size && !buffer)) { - ASN__DECODE_FAILED; - } - - switch(syntax) { - case ATS_CER: - case ATS_NONSTANDARD_PLAINTEXT: - default: - errno = ENOENT; - ASN__DECODE_FAILED; - - case ATS_RANDOM: - if(!td->op->random_fill) { - ASN__DECODE_FAILED; - } else { - if(asn_random_fill(td, sptr, 16000) == 0) { - asn_dec_rval_t ret = {RC_OK, 0}; - return ret; - } else { - ASN__DECODE_FAILED; - } - } - break; - - case ATS_DER: - case ATS_BER: - return ber_decode(opt_codec_ctx, td, sptr, buffer, size); - - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: -#ifdef ASN_DISABLE_OER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return oer_decode(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_BASIC_XER: - case ATS_CANONICAL_XER: - return xer_decode(opt_codec_ctx, td, sptr, buffer, size); - } -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_application.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_application.h deleted file mode 100644 index 034f646..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_application.h +++ /dev/null @@ -1,171 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Application-level ASN.1 callbacks. - */ -#ifndef ASN_APPLICATION_H -#define ASN_APPLICATION_H - -#include "asn_system.h" /* for platform-dependent types */ -#include "asn_codecs.h" /* for ASN.1 codecs specifics */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * A selection of ASN.1 Transfer Syntaxes to use with generalized - * encoders and decoders declared further in this .h file. - */ -enum asn_transfer_syntax { - /* Avoid appearance of a default transfer syntax. */ - ATS_INVALID = 0, - /* Plaintext output (not conforming to any standard), for debugging. */ - ATS_NONSTANDARD_PLAINTEXT, - /* Returns a randomly generated structure. */ - ATS_RANDOM, - /* - * X.690: - * BER: Basic Encoding Rules. - * DER: Distinguished Encoding Rules. - * CER: Canonical Encoding Rules. - * DER and CER are more strict variants of BER. - */ - ATS_BER, - ATS_DER, - ATS_CER, /* Only decoding is supported */ - /* - * X.696: - * OER: Octet Encoding Rules. - * CANONICAL-OER is a more strict variant of BASIC-OER. - */ - ATS_BASIC_OER, - ATS_CANONICAL_OER, - /* - * X.691: - * PER: Packed Encoding Rules. - * CANONICAL-PER is a more strict variant of BASIC-PER. - * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). - */ - ATS_UNALIGNED_BASIC_PER, - ATS_UNALIGNED_CANONICAL_PER, - ATS_ALIGNED_BASIC_PER, - ATS_ALIGNED_CANONICAL_PER, - /* - * X.693: - * XER: XML Encoding Rules. - * CANONICAL-XER is a more strict variant of BASIC-XER. - */ - ATS_BASIC_XER, - ATS_CANONICAL_XER -}; - -/* - * A generic encoder for any supported transfer syntax. - * RETURN VALUES: - * The (.encoded) field of the return value is REDEFINED to mean the following: - * >=0: The computed size of the encoded data. Can exceed the (buffer_size). - * -1: Error encoding the structure. See the error code in (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate - * values at the place of failure, if at all possible. - * WARNING: The (.encoded) field of the return value can exceed the buffer_size. - * This is similar to snprintf(3) contract which might return values - * greater than the buffer size. - */ -asn_enc_rval_t asn_encode_to_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, void *buffer, size_t buffer_size); - -/* - * A variant of asn_encode_to_buffer() with automatically allocated buffer. - * RETURN VALUES: - * On success, returns a newly allocated (.buffer) containing the whole message. - * The message size is returned in (.result.encoded). - * On failure: - * (.buffer) is NULL, - * (.result.encoded) as in asn_encode_to_buffer(), - * The errno codes as in asn_encode_to_buffer(), plus the following: - * ENOMEM: Memory allocation failed due to system or internal limits. - * The user is responsible for freeing the (.buffer). - */ -typedef struct asn_encode_to_new_buffer_result_s { - void *buffer; /* NULL if failed to encode. */ - asn_enc_rval_t result; -} asn_encode_to_new_buffer_result_t; -asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode); - - -/* - * Generic type of an application-defined callback to return various - * types of data to the application. - * EXPECTED RETURN VALUES: - * -1: Failed to consume bytes. Abort the mission. - * Non-negative return values indicate success, and ignored. - */ -typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, - void *application_specific_key); - - -/* - * A generic encoder for any supported transfer syntax. - * Returns the comprehensive encoding result descriptor (see asn_codecs.h). - * RETURN VALUES: - * The negative (.encoded) field of the return values is accompanied with the - * following error codes (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * EIO: The (callback) has returned negative value during encoding. - */ -asn_enc_rval_t asn_encode( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, - asn_app_consume_bytes_f *callback, void *callback_key); - - -/* - * A generic decoder for any supported transfer syntax. - */ -asn_dec_rval_t asn_decode( - const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_decode, - void **structure_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ -); - - -/* - * A callback of this type is called whenever constraint validation fails - * on some ASN.1 type. See "constraints.h" for more details on constraint - * validation. - * This callback specifies a descriptor of the ASN.1 type which failed - * the constraint check, as well as human readable message on what - * particular constraint has failed. - */ -typedef void (asn_app_constraint_failed_f)(void *application_specific_key, - const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, - const void *structure_which_failed_ptr, - const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); - - -#ifdef __cplusplus -} -#endif - -#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ - -#endif /* ASN_APPLICATION_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_bit_data.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_bit_data.c deleted file mode 100644 index fe4b89b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_bit_data.c +++ /dev/null @@ -1,333 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_bit_data.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_bit_data.h deleted file mode 100644 index 59de7af..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_bit_data.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs.h deleted file mode 100644 index e75c270..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs_prim.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs_prim.c deleted file mode 100644 index fc24247..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs_prim.c +++ /dev/null @@ -1,317 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Decode an always-primitive type. - */ -asn_dec_rval_t -ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; - asn_dec_rval_t rval; - ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ - - /* - * If the structure is not there, allocate it. - */ - if(st == NULL) { - st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) ASN__DECODE_FAILED; - *sptr = (void *)st; - } - - ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", - td->name, tag_mode); - - /* - * Check tags and extract value length. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - st->size = (int)length; - /* The following better be optimized away. */ - if(sizeof(st->size) != sizeof(length) - && (ber_tlv_len_t)st->size != length) { - st->size = 0; - ASN__DECODE_FAILED; - } - - st->buf = (uint8_t *)MALLOC(length + 1); - if(!st->buf) { - st->size = 0; - ASN__DECODE_FAILED; - } - - memcpy(st->buf, buf_ptr, length); - st->buf[length] = '\0'; /* Just in case */ - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s", - (long)rval.consumed, - (long)length, td->name); - - return rval; -} - -/* - * Encode an always-primitive type using DER. - */ -asn_enc_rval_t -der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t erval = {0,0,0}; - const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; - - ASN_DEBUG("%s %s as a primitive type (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, - cb, app_key); - ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); - if(erval.encoded == -1) { - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - - if(cb && st->buf) { - if(cb(st->buf, st->size, app_key) < 0) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - } else { - assert(st->buf || st->size == 0); - } - - erval.encoded += st->size; - ASN__ENCODED_OK(erval); -} - -void -ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as a primitive type", td->name); - - if(st->buf) - FREEMEM(st->buf); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); - break; - } -} - - -/* - * Local internal type passed around as an argument. - */ -struct xdp_arg_s { - const asn_TYPE_descriptor_t *type_descriptor; - void *struct_key; - xer_primitive_body_decoder_f *prim_body_decoder; - int decoded_something; - int want_more; -}; - -/* - * Since some kinds of primitive values can be encoded using value-specific - * tags (, , etc), the primitive decoder must - * be supplied with such tags to parse them as needed. - */ -static int -xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - - /* - * The chunk_buf is guaranteed to start at '<'. - */ - assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); - - /* - * Decoding was performed once already. Prohibit doing it again. - */ - if(arg->decoded_something) - return -1; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return 0; - } - - return -1; -} - -static ssize_t -xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - size_t lead_wsp_size; - - if(arg->decoded_something) { - if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { - /* - * Example: - * "123 " - * ^- chunk_buf position. - */ - return chunk_size; - } - /* - * Decoding was done once already. Prohibit doing it again. - */ - return -1; - } - - if(!have_more) { - /* - * If we've received something like "1", we can't really - * tell whether it is really `1` or `123`, until we know - * that there is no more data coming. - * The have_more argument will be set to 1 once something - * like this is available to the caller of this callback: - * "1want_more = 1; - return -1; - } - - lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); - chunk_buf = (const char *)chunk_buf + lead_wsp_size; - chunk_size -= lead_wsp_size; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return lead_wsp_size + chunk_size; - } - - return -1; -} - - -asn_dec_rval_t -xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - size_t struct_size, const char *opt_mname, - const void *buf_ptr, size_t size, - xer_primitive_body_decoder_f *prim_body_decoder) { - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t s_ctx; - struct xdp_arg_s s_arg; - asn_dec_rval_t rc; - - /* - * Create the structure if does not exist. - */ - if(!*sptr) { - *sptr = CALLOC(1, struct_size); - if(!*sptr) ASN__DECODE_FAILED; - } - - memset(&s_ctx, 0, sizeof(s_ctx)); - s_arg.type_descriptor = td; - s_arg.struct_key = *sptr; - s_arg.prim_body_decoder = prim_body_decoder; - s_arg.decoded_something = 0; - s_arg.want_more = 0; - - rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, - xml_tag, buf_ptr, size, - xer_decode__unexpected_tag, xer_decode__primitive_body); - switch(rc.code) { - case RC_OK: - if(!s_arg.decoded_something) { - char ch; - ASN_DEBUG("Primitive body is not recognized, " - "supplying empty one"); - /* - * Decoding opportunity has come and gone. - * Where's the result? - * Try to feed with empty body, see if it eats it. - */ - if(prim_body_decoder(s_arg.type_descriptor, - s_arg.struct_key, &ch, 0) - != XPBD_BODY_CONSUMED) { - /* - * This decoder does not like empty stuff. - */ - ASN__DECODE_FAILED; - } - } - break; - case RC_WMORE: - /* - * Redo the whole thing later. - * We don't have a context to save intermediate parsing state. - */ - rc.consumed = 0; - break; - case RC_FAIL: - rc.consumed = 0; - if(s_arg.want_more) - rc.code = RC_WMORE; - else - ASN__DECODE_FAILED; - break; - } - return rc; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs_prim.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs_prim.h deleted file mode 100644 index fbc5576..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_codecs_prim.h +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_constant.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_constant.h deleted file mode 100644 index b850c56..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_constant.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - */ - -#ifndef _ASN_CONSTANT_H -#define _ASN_CONSTANT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define maxProtocolIEs (65535) -#define maxnoofErrors (256) -#define maxofE2nodeComponents (1024) -#define maxofRANfunctionID (256) -#define maxofRICactionID (16) -#define maxofTNLA (32) -#define maxofRICrequestID (4294967295) - - -#ifdef __cplusplus -} -#endif - -#endif /* _ASN_CONSTANT_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_internal.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_internal.c deleted file mode 100644 index 004660b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_internal.c +++ /dev/null @@ -1,49 +0,0 @@ -#include - -ssize_t -asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, - const char *fmt, ...) { - char scratch[64]; - char *buf = scratch; - size_t buf_size = sizeof(scratch); - int wrote; - int cb_ret; - - do { - va_list args; - va_start(args, fmt); - - wrote = vsnprintf(buf, buf_size, fmt, args); - if(wrote < (ssize_t)buf_size) { - if(wrote < 0) { - if(buf != scratch) FREEMEM(buf); - va_end(args); - return -1; - } - break; - } - - buf_size <<= 1; - if(buf == scratch) { - buf = MALLOC(buf_size); - if(!buf) { va_end(args); return -1; } - } else { - void *p = REALLOC(buf, buf_size); - if(!p) { - FREEMEM(buf); - va_end(args); - 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_internal.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_internal.h deleted file mode 100644 index c4105ad..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_internal.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Declarations internally useful for the ASN.1 support code. - */ -#ifndef ASN_INTERNAL_H -#define ASN_INTERNAL_H -#define __EXTENSIONS__ /* for Sun */ - -#include "asn_application.h" /* Application-visible API */ - -#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ -#include /* for assert() macro */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Environment version might be used to avoid running with the old library */ -#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ -int get_asn1c_environment_version(void); /* Run-time version */ - -#define CALLOC(nmemb, size) calloc(nmemb, size) -#define MALLOC(size) malloc(size) -#define REALLOC(oldptr, size) realloc(oldptr, size) -#define FREEMEM(ptr) free(ptr) - -#define asn_debug_indent 0 -#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) - -#ifdef EMIT_ASN_DEBUG -#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" -#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG -#endif - -/* - * A macro for debugging the ASN.1 internals. - * You may enable or override it. - */ -#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ -#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ -#if !defined(BELL_LABS) /* Bell Labs */ - //#if __STDC_VERSION__ >= 199901L -#ifdef ASN_THREAD_SAFE -/* Thread safety requires sacrifice in output indentation: - * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ -#else /* !ASN_THREAD_SAFE */ -#undef ASN_DEBUG_INDENT_ADD -#undef asn_debug_indent -int asn_debug_indent; -#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) -#endif /* ASN_THREAD_SAFE */ -#if defined(BELL_LABS) /* Bell Labs version */ -extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); -#define ASN_DEBUG(fmt, args...) do { \ - (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ - } while(0) -#else -#define ASN_DEBUG(fmt, args...) do { \ - int adi = asn_debug_indent; \ - while(adi--) fprintf(stderr, " "); \ - fprintf(stderr, fmt, ##args); \ - fprintf(stderr, " (%s:%d)\n", \ - __FILE__, __LINE__); \ - } while(0) -#endif /* BELL_LABS */ -#else /* !C99 */ -void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); -#define ASN_DEBUG ASN_DEBUG_f -#endif /* C99 */ -#else /* ASN_EMIT_DEBUG != 1 */ -#if __STDC_VERSION__ >= 199901L -#define ASN_DEBUG(...) do{}while(0) -#else /* not C99 */ -static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } -#endif /* C99 or better */ -#endif /* ASN_EMIT_DEBUG */ -#endif /* ASN_DEBUG */ - -/* - * Print to a callback. - * The callback is expected to return negative values on error. - * 0 and positive values are treated as success. - * RETURN VALUES: - * -1: Failed to format or invoke the callback. - * >0: Size of the data that got delivered to the callback. - */ -ssize_t CC_PRINTFLIKE(3, 4) -asn__format_to_callback( - int (*callback)(const void *, size_t, void *key), void *key, - const char *fmt, ...); - -/* - * Invoke the application-supplied callback and fail, if something is wrong. - */ -#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) -#define ASN__E_CALLBACK(size, foo) \ - do { \ - if(foo) goto cb_failed; \ - er.encoded += (size); \ - } while(0) -#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) -#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ - ASN__E_CALLBACK((size1) + (size2), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) -#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ - ASN__E_CALLBACK((size1) + (size2) + (size3), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ - || ASN__E_cbc(buf3, size3)) - -#define ASN__TEXT_INDENT(nl, level) \ - do { \ - int tmp_level = (level); \ - int tmp_nl = ((nl) != 0); \ - int tmp_i; \ - if(tmp_nl) ASN__CALLBACK("\n", 1); \ - if(tmp_level < 0) tmp_level = 0; \ - for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ - } while(0) - -#define _i_INDENT(nl) do { \ - int tmp_i; \ - if((nl) && cb("\n", 1, app_key) < 0) \ - return -1; \ - for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ - if(cb(" ", 4, app_key) < 0) \ - return -1; \ - } while(0) - -/* - * Check stack against overflow, if limit is set. - */ -#define ASN__DEFAULT_STACK_MAX (30000) -static int CC_NOTUSED -ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { - if(ctx && ctx->max_stack_size) { - - /* ctx MUST be allocated on the stack */ - ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); - if(usedstack > 0) usedstack = -usedstack; /* grows up! */ - - /* double negative required to avoid int wrap-around */ - if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { - ASN_DEBUG("Stack limit %ld reached", - (long)ctx->max_stack_size); - return -1; - } - } - return 0; -} - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_INTERNAL_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_ioc.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_ioc.h deleted file mode 100644 index 7de210e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_ioc.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_random_fill.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_random_fill.c deleted file mode 100644 index 819cf70..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_random_fill.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_random_fill.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_random_fill.h deleted file mode 100644 index 47f9b8a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_random_fill.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_system.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_system.h deleted file mode 100644 index fa8cf11..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/asn_system.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.c deleted file mode 100644 index 75d6016..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.c +++ /dev/null @@ -1,283 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.h deleted file mode 100644 index 1ac2a5e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_decoder.h +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_length.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_length.c deleted file mode 100644 index 0a0deec..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_length.c +++ /dev/null @@ -1,168 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_length.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_length.h deleted file mode 100644 index d1e4d48..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_length.h +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.c deleted file mode 100644 index 4a7d732..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.c +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.h deleted file mode 100644 index ce227ad..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/ber_tlv_tag.h +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE.c deleted file mode 100644 index 86dcbb0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE.c +++ /dev/null @@ -1,1533 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * See the definitions. - */ -static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, - unsigned size); -static void _set_present_idx(void *sptr, unsigned offset, unsigned size, - unsigned pres); -static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, - const void *sptr, asn_TYPE_member_t **elm, - unsigned *present); - -/* - * Tags are canonically sorted in the tag to member table. - */ -static int -_search4tag(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) - return 0; - else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - -/* - * The decoder of the CHOICE type. - */ -asn_dec_rval_t -CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - ssize_t tag_len; /* Length of TLV's T */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as CHOICE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - if(tag_mode || td->tags_count) { - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, -1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) { - /* ?Substracted below! */ - ctx->left += rval.consumed; - } - ADVANCE(rval.consumed); - } else { - ctx->left = -1; - } - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - do { - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key; - - key.el_tag = tlv_tag; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _search4tag); - if(t2m) { - /* - * Found the element corresponding to the tag. - */ - NEXT_PHASE(ctx); - ctx->step = t2m->el_no; - break; - } else if(specs->ext_start == -1) { - ASN_DEBUG("Unexpected tag %s " - "in non-extensible CHOICE %s", - ber_tlv_tag_string(tlv_tag), td->name); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - - ASN_DEBUG("Skipping unknown tag %s", - ber_tlv_tag_string(tlv_tag)); - - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - RETURN(RC_OK); - } - } while(0); - - case 2: - /* - * PHASE 2. - * Read in the element. - */ - do { - asn_TYPE_member_t *elm;/* CHOICE's element */ - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &elements[ctx->step]; - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - /* Set presence to be able to free it properly at any time */ - _set_present_idx(st, specs->pres_offset, - specs->pres_size, ctx->step + 1); - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, - memb_ptr2, ptr, LEFT, elm->tag_mode); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - RETURN(RC_FAIL); - case RC_FAIL: /* Fatal error */ - RETURN(rval.code); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } while(0); - - NEXT_PHASE(ctx); - - /* Fall through */ - case 3: - ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", - td->name, (long)ctx->left, (long)size, - tag_mode, td->tags_count); - - if(ctx->left > 0) { - /* - * The type must be fully decoded - * by the CHOICE member-specific decoder. - */ - RETURN(RC_FAIL); - } - - if(ctx->left == -1 - && !(tag_mode || td->tags_count)) { - /* - * This is an untagged CHOICE. - * It doesn't contain nothing - * except for the member itself, including all its tags. - * The decoding is completed. - */ - NEXT_PHASE(ctx); - break; - } - - /* - * Read in the "end of data chunks"'s. - */ - while(ctx->left < 0) { - ssize_t tl; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * Expected <0><0>... - */ - if(((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - continue; - } - } else { - ASN_DEBUG("Unexpected continuation in %s", - td->name); - RETURN(RC_FAIL); - } - - /* UNREACHABLE */ - } - - NEXT_PHASE(ctx); - case 4: - /* No meaningful work here */ - break; - } - - RETURN(RC_OK); -} - -asn_enc_rval_t -CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE element */ - asn_enc_rval_t erval = {0,0,0}; - const void *memb_ptr; - size_t computed_size = 0; - unsigned present; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("%s %s as CHOICE", - cb?"Encoding":"Estimating", td->name); - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) { - if(present == 0 && td->elements_count == 0) { - /* The CHOICE is empty?! */ - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - ASN__ENCODE_FAILED; - } - - /* - * Seek over the present member of the structure. - */ - elm = &td->elements[present-1]; - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(memb_ptr == 0) { - if(elm->optional) { - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - /* Mandatory element absent */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* - * If the CHOICE itself is tagged EXPLICIT: - * T ::= [2] EXPLICIT CHOICE { ... } - * Then emit the appropriate tags. - */ - if(tag_mode == 1 || td->tags_count) { - /* - * For this, we need to pre-compute the member. - */ - ssize_t ret; - - /* Encode member with its tag */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, 0, 0); - if(erval.encoded == -1) - return erval; - - /* Encode CHOICE with parent or my own tag */ - ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, - cb, app_key); - if(ret == -1) - ASN__ENCODE_FAILED; - computed_size += ret; - } - - /* - * Encode the single underlying member. - */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, cb, app_key); - if(erval.encoded == -1) - return erval; - - ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", - (long)erval.encoded, (long)computed_size); - - erval.encoded += computed_size; - - return erval; -} - -ber_tlv_tag_t -CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - assert(tag_mode == 0); (void)tag_mode; - assert(tag == 0); (void)tag; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - if(present > 0 && present <= td->elements_count) { - const asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *) - ((const char *)ptr + elm->memb_offset); - } else { - memb_ptr = (const void *) - ((const char *)ptr + elm->memb_offset); - } - - return asn_TYPE_outmost_tag(elm->type, memb_ptr, - elm->tag_mode, elm->tag); - } else { - return (ber_tlv_tag_t)-1; - } -} - -int -CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - return 0; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory CHOICE element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: no CHOICE element given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value of a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - if(ctx->phase == 0 && !*xml_tag) - ctx->phase = 1; /* Skip the outer tag checking phase */ - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Only waiting for closing tag. - * Phase 4: Skipping unknown extensions. - * Phase 5: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 4;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the member. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - unsigned old_present; - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Start/Continue decoding the inner member */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - buf_ptr, size); - XER_ADVANCE(tmprval.consumed); - ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", - elm->type->name, tmprval.code); - old_present = _fetch_present_idx(st, - specs->pres_offset, specs->pres_size); - assert(old_present == 0 || old_present == edx + 1); - /* Record what we've got */ - _set_present_idx(st, - specs->pres_offset, specs->pres_size, edx + 1); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 3; - /* Fall through */ - } - - /* No need to wait for closing tag; special mode. */ - if(ctx->phase == 3 && !*xml_tag) { - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - xml_tag, tcv); - - /* Skip the extensions section */ - if(ctx->phase == 4) { - ASN_DEBUG("skip_unknown(%d, %ld)", - tcv, (long)ctx->left); - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 5; - RETURN(RC_FAIL); - case 1: - ctx->phase = 3; - /* Fall through */ - case 0: - XER_ADVANCE(ch_size); - continue; - case 2: - ctx->phase = 3; - break; - } - } - - switch(tcv) { - case XCT_BOTH: - break; /* No CHOICE? */ - case XCT_CLOSING: - if(ctx->phase != 3) - break; - XER_ADVANCE(ch_size); - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - if(ctx->phase != 1) - break; /* Really unexpected */ - - /* - * Search which inner member corresponds to this tag. - */ - for(edx = 0; edx < td->elements_count; edx++) { - elm = &td->elements[edx]; - tcv = xer_check_tag(buf_ptr,ch_size,elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - edx = td->elements_count; - break; /* Phase out */ - } - break; - } - if(edx != td->elements_count) - continue; - - /* It is expected extension */ - if(specs->ext_start != -1) { - ASN_DEBUG("Got anticipated extension"); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - ctx->phase = 3; /* Terminating */ - } else { - ctx->left = 1; - ctx->phase = 4; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" - " (ph=%d, tag=%s)", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - td->name, ctx->phase, xml_tag); - break; - } - - ctx->phase = 5; /* Phase out, just in case */ - RETURN(RC_FAIL); -} - - -asn_enc_rval_t -CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - unsigned present = 0; - - if(!sptr) - ASN__ENCODE_FAILED; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr = NULL; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - er.encoded = 0; - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + 1, flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_dec_rval_t -CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted */ - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) { - ASN_DEBUG("CHOICE presence from wire %d", value); - value = specs->from_canonical_order[value]; - ASN_DEBUG("CHOICE presence index effective %d", value); - } - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct; - const void *memb_ptr; - unsigned present; - int present_enc; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present_enc = specs->to_canonical_order[present]; - else - present_enc = present; - - if(ct && ct->range_bits >= 0) { - if(present_enc < ct->lower_bound - || present_enc > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG( - "CHOICE member %d (enc %d) is an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 1, 1)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - ct = 0; - } - } - if(ct && ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 0, 1)) - ASN__ENCODE_FAILED; - } - - - elm = &td->elements[present]; - ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, - present_enc); - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, present_enc, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) ASN__ENCODE_FAILED; - if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) - ASN__ENCODE_FAILED; - if(uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -asn_dec_rval_t -CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - const asn_per_constraint_t *ext_ct = NULL; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) { - ext_ct = ct; - ct = 0; /* Not restricted */ - } - } - - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = aper_get_nsnnwn(pd, ext_ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) - value = specs->from_canonical_order[value]; - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = aper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct = NULL; - const asn_per_constraint_t *ext_ct = NULL; - const void *memb_ptr; - unsigned present; - int present_enc; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = NULL; - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present <= 0 || (unsigned)present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present_enc = specs->to_canonical_order[present]; - else - present_enc = present; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - if(ct && (ct->range_bits >= 0)) { - // Value is not within the range of the primary values ? - if(present < ct->lower_bound || present > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG("CHOICE member %d (enc %d) is an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - // X691/23.5 Extension marker = 1 - if(per_put_few_bits(po, 1, 1)) { - ASN__ENCODE_FAILED; - } - } else { - ASN__ENCODE_FAILED; - } - // no more need of constraint. - ext_ct = ct; - ct = NULL; - } - } - - if(ct && (ct->flags & APC_EXTENSIBLE)) { - ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", - present, present, ct->lower_bound, ct->upper_bound); - // X691.23.5 Extension marker = 0 - if(per_put_few_bits(po, 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && (ct->range_bits >= 0)) { - // By construction (ct != 0), the alternative value is a non extended one. - // X691/23.7 X691/23.6 alternative value encoded as a range_bits bits value. - if(per_put_few_bits(po, present_enc, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) - ASN__ENCODE_FAILED; - // X691/23.8 normally encoded as a small non negative whole number - - if(ext_ct && aper_put_nsnnwn(po, ext_ct->range_bits, present_enc - specs->ext_start)) - ASN__ENCODE_FAILED; - if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -int -CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - /* - * Print that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Print member's name and stuff */ - if(0) { - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - } - - return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, - cb, app_key); - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as CHOICE", td->name); - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - /* - * Free that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)ptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)ptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } -} - - -/* - * The following functions functions offer protection against -fshort-enums, - * compatible with little- and big-endian machines. - * If assertion is triggered, either disable -fshort-enums, or add an entry - * here with the ->pres_size of your target stracture. - * Unless the target structure is packed, the ".present" member - * is guaranteed to be aligned properly. ASN.1 compiler itself does not - * produce packed code. - */ -static unsigned -_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, - unsigned pres_size) { - const void *present_ptr; - unsigned present; - - present_ptr = ((const char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): present = *(const unsigned int *)present_ptr; break; - case sizeof(short): present = *(const unsigned short *)present_ptr; break; - case sizeof(char): present = *(const unsigned char *)present_ptr; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - return 0; /* If not aborted, pass back safe value */ - } - - return present; -} - -static void -_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, - unsigned present) { - void *present_ptr; - present_ptr = ((char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): *(unsigned int *)present_ptr = present; break; - case sizeof(short): *(unsigned short *)present_ptr = present; break; - case sizeof(char): *(unsigned char *)present_ptr = present; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - } -} - -static const void * -_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_TYPE_member_t **elm_ptr, unsigned *present_out) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - *elm_ptr = NULL; - *present_out = 0; - return NULL; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - *present_out = present; - - /* - * The presence index is intentionally 1-based to avoid - * treating zeroed structure as a valid one. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *const elm = &td->elements[present - 1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - *elm_ptr = elm; - return memb_ptr; - } else { - *elm_ptr = NULL; - return NULL; - } - -} - -int -CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - asn_TYPE_member_t *aelm; - asn_TYPE_member_t *belm; - unsigned apresent = 0; - unsigned bpresent = 0; - const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); - const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); - - if(amember && bmember) { - if(apresent == bpresent) { - assert(aelm == belm); - return aelm->type->op->compare_struct(aelm->type, amember, bmember); - } else if(apresent < bpresent) { - return -1; - } else { - return 1; - } - } else if(!amember) { - return -1; - } else { - return 1; - } -} - -/* - * Return the 1-based choice variant presence index. - * Returns 0 in case of error. - */ -unsigned -CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); -} - -/* - * Sets or resets the 1-based choice variant presence index. - * In case a previous index is not zero, the currently selected structure - * member is freed and zeroed-out first. - * Returns 0 on success and -1 on error. - */ -int -CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, - unsigned present) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned old_present; - - if(!sptr) { - return -1; - } - - if(present > td->elements_count) - return -1; - - old_present = - _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - if(present == old_present) - return 0; - - if(old_present != 0) { - assert(old_present <= td->elements_count); - ASN_STRUCT_RESET(*td, sptr); - } - - _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); - - return 0; -} - - -asn_random_fill_result_t -CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_random_fill_result_t res; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm; - unsigned present; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *st = *sptr; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - present = asn_random_between(1, td->elements_count); - elm = &td->elements[present - 1]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - res = elm->type->op->random_fill(elm->type, memb_ptr2, - &elm->encoding_constraints, max_length); - _set_present_idx(st, specs->pres_offset, specs->pres_size, present); - if(res.code == ARFILL_OK) { - *sptr = st; - } else { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - } - - return res; -} - - -asn_TYPE_operation_t asn_OP_CHOICE = { - CHOICE_free, - CHOICE_print, - CHOICE_compare, - CHOICE_decode_ber, - CHOICE_encode_der, - CHOICE_decode_xer, - CHOICE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - CHOICE_decode_oer, - CHOICE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - CHOICE_decode_uper, - CHOICE_encode_uper, - CHOICE_decode_aper, - CHOICE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - CHOICE_random_fill, - CHOICE_outmost_tag -}; diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE.h deleted file mode 100644 index a1999ed..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE_oer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE_oer.c deleted file mode 100644 index a4c591c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_CHOICE_oer.c +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t rval; \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - return rval; \ - } while(0) - -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) \ - do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#undef SET_PHASE -#define SET_PHASE(ctx, value) \ - do { \ - ctx->phase = value; \ - ctx->step = 0; \ - } while(0) - -/* - * Tags are canonically sorted in the tag to member table. - */ -static int -_search4tag(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) - return 0; - else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - -/* - * X.696 (08/2015) #8.7 Encoding of tags - */ -static ssize_t -oer_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { - ber_tlv_tag_t val; - ber_tlv_tag_t tclass; - size_t skipped; - - if(size == 0) - return 0; - - val = *(const uint8_t *)ptr; - tclass = (val >> 6); - if((val & 0x3F) != 0x3F) { - /* #8.7.1 */ - *tag_r = ((val & 0x3F) << 2) | tclass; - return 1; - } - - /* - * Each octet contains 7 bits of useful information. - * The MSB is 0 if it is the last octet of the tag. - */ - for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; skipped <= size; - ptr = ((const char *)ptr) + 1, skipped++) { - unsigned int oct = *(const uint8_t *)ptr; - if(oct & 0x80) { - val = (val << 7) | (oct & 0x7F); - /* - * Make sure there are at least 9 bits spare - * at the MS side of a value. - */ - if(val >> ((8 * sizeof(val)) - 9)) { - /* - * We would not be able to accomodate - * any more tag bits. - */ - return -1; - } - } else { - val = (val << 7) | oct; - *tag_r = (val << 2) | tclass; - return skipped; - } - } - - return 0; /* Want more */ -} - -asn_dec_rval_t -CHOICE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **struct_ptr, - const void *ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - (void)constraints; - - ASN_DEBUG("Decoding %s as CHOICE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - switch(ctx->phase) { - case 0: { - /* - * Discover the tag. - */ - ber_tlv_tag_t tlv_tag; /* T from TLV */ - ssize_t tag_len; /* Length of TLV's T */ - - tag_len = oer_fetch_tag(ptr, size, &tlv_tag); - switch(tag_len) { - case 0: - ASN__DECODE_STARVED; - case -1: - ASN__DECODE_FAILED; - } - - do { - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key = {0, 0, 0, 0}; - key.el_tag = tlv_tag; - - t2m = (const asn_TYPE_tag2member_t *)bsearch( - &key, specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _search4tag); - if(t2m) { - /* - * Found the element corresponding to the tag. - */ - NEXT_PHASE(ctx); - ctx->step = t2m->el_no; - break; - } else if(specs->ext_start == -1) { - ASN_DEBUG( - "Unexpected tag %s " - "in non-extensible CHOICE %s", - ber_tlv_tag_string(tlv_tag), td->name); - RETURN(RC_FAIL); - } else { - /* Skip open type extension */ - ASN_DEBUG( - "Not implemented skipping open type extension for tag %s", - ber_tlv_tag_string(tlv_tag)); - RETURN(RC_FAIL); - } - } while(0); - - - ADVANCE(tag_len); - } - /* Fall through */ - case 1: { - asn_TYPE_member_t *elm = &elements[ctx->step]; /* CHOICE's element */ - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - asn_dec_rval_t rval = {0,0}; - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Set presence to be able to free it properly at any time */ - (void)CHOICE_variant_set_presence(td, st, ctx->step + 1); - - if(specs->ext_start >= 0 && specs->ext_start <= ctx->step) { - ssize_t got = - oer_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, - memb_ptr2, ptr, size); - if(got < 0) ASN__DECODE_FAILED; - if(got == 0) ASN__DECODE_STARVED; - rval.code = RC_OK; - rval.consumed = got; - } else { - rval = elm->type->op->oer_decoder( - opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, - size); - } - rval.consumed += consumed_myself; - switch(rval.code) { - case RC_OK: - NEXT_PHASE(ctx); - case RC_WMORE: - break; - case RC_FAIL: - SET_PHASE(ctx, 3); /* => 3 */ - } - return rval; - } - case 2: - /* Already decoded everything */ - RETURN(RC_OK); - case 3: - /* Failed to decode, after all */ - RETURN(RC_FAIL); - } - - RETURN(RC_FAIL); -} - -/* - * X.696 (08/2015) #8.7 Encoding of tags - */ -static ssize_t -oer_put_tag(ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { - uint8_t tclass = BER_TAG_CLASS(tag); - ber_tlv_tag_t tval = BER_TAG_VALUE(tag); - - if(tval < 0x3F) { - uint8_t b = (uint8_t)((tclass << 6) | tval); - if(cb(&b, 1, app_key) < 0) { - return -1; - } - return 1; - } else { - uint8_t buf[1 + 2 * sizeof(tval)]; - uint8_t *b = &buf[sizeof(buf)-1]; /* Last addressable */ - size_t encoded; - for(; ; tval >>= 7) { - if(tval >> 7) { - *b-- = 0x80 | (tval & 0x7f); - } else { - *b-- = tval & 0x7f; - break; - } - } - *b = (uint8_t)((tclass << 6) | 0x3F); - encoded = sizeof(buf) - (b - buf); - if(cb(b, encoded, app_key) < 0) { - return -1; - } - return encoded; - } - -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -CHOICE_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE element */ - unsigned present; - const void *memb_ptr; - ber_tlv_tag_t tag; - ssize_t tag_len; - asn_enc_rval_t er = {0, 0, 0}; - - (void)constraints; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("OER %s encoding as CHOICE", td->name); - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN_DEBUG("CHOICE %s member is not selected", td->name); - ASN__ENCODE_FAILED; - } - - elm = &td->elements[present-1]; - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(memb_ptr == 0) { - /* Mandatory element absent */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - tag = asn_TYPE_outmost_tag(elm->type, memb_ptr, elm->tag_mode, elm->tag); - if(tag == 0) { - ASN__ENCODE_FAILED; - } - - tag_len = oer_put_tag(tag, cb, app_key); - if(tag_len < 0) { - ASN__ENCODE_FAILED; - } - - if(specs->ext_start >= 0 && (unsigned)specs->ext_start <= (present-1)) { - ssize_t encoded = oer_open_type_put(elm->type, - elm->encoding_constraints.oer_constraints, - memb_ptr, cb, app_key); - if(encoded < 0) ASN__ENCODE_FAILED; - er.encoded = tag_len + encoded; - } else { - er = elm->type->op->oer_encoder( - elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, - app_key); - if(er.encoded >= 0) er.encoded += tag_len; - } - - return er; -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE.c deleted file mode 100644 index 43dcac7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE.c +++ /dev/null @@ -1,2059 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * Check whether we are inside the extensions group. - */ -#define IN_EXTENSION_GROUP(specs, memb_idx) \ - ((specs)->first_extension >= 0 \ - && (unsigned)(specs)->first_extension <= (memb_idx)) - -/* - * Tags are canonically sorted in the tag2element map. - */ -static int -_t2e_cmp(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) { - if(a->el_no > b->el_no) - return 1; - /* - * Important: we do not check - * for a->el_no <= b->el_no! - */ - return 0; - } else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - - -/* - * The decoder of the SEQUENCE type. - */ -asn_dec_rval_t -SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* SEQUENCE element's index */ - - ASN_DEBUG("Decoding %s as SEQUENCE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next member from the list of - * this structure's elements. - * (ctx->step) stores the member being processed - * between invocations and the microphase {0,1} of parsing - * that member: - * step = ( * 2 + ). - */ - for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; - edx++, ctx->step = (ctx->step & ~1) + 2) { - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - ssize_t tag_len; /* Length of TLV's T */ - size_t opt_edx_end; /* Next non-optional element */ - size_t n; - int use_bsearch; - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" - " opt=%d ec=%d", - td->name, (int)ctx->left, edx, - elements[edx].flags, elements[edx].optional, - td->elements_count); - - if(ctx->left == 0 /* No more stuff is expected */ - && ( - /* Explicit OPTIONAL specification reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx))) { - ASN_DEBUG("End of SEQUENCE %s", td->name); - /* - * Found the legitimate end of the structure. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " - "(%s) is %s encoded in %d bytes, of frame %ld", - td->name, edx, elements[edx].name, - ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) { - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } else if(((const uint8_t *)ptr)[1] == 0) { - ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, - elements[edx].optional, td->elements_count); - if((edx + elements[edx].optional == td->elements_count) - || IN_EXTENSION_GROUP(specs, edx)) { - /* - * Yeah, baby! Found the terminator - * of the indefinite length structure. - */ - /* - * Proceed to the canonical - * finalization function. - * No advancing is necessary. - */ - goto phase3; - } - } - } - - /* - * Find the next available type with this tag. - */ - use_bsearch = 0; - opt_edx_end = edx + elements[edx].optional + 1; - if(opt_edx_end > td->elements_count) - opt_edx_end = td->elements_count; /* Cap */ - else if(opt_edx_end - edx > 8) { - /* Limit the scope of linear search... */ - opt_edx_end = edx + 8; - use_bsearch = 1; - /* ... and resort to bsearch() */ - } - for(n = edx; n < opt_edx_end; n++) { - if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { - /* - * Found element corresponding to the tag - * being looked at. - * Reposition over the right element. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].flags & ATF_ANY_TYPE) { - /* - * This is the ANY type, which may bear - * any flag whatsoever. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].tag == (ber_tlv_tag_t)-1) { - use_bsearch = 1; - break; - } - } - if(use_bsearch) { - /* - * Resort to a binary search over - * sorted array of tags. - */ - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key = {0, 0, 0, 0}; - key.el_tag = tlv_tag; - key.el_no = edx; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _t2e_cmp); - if(t2m) { - const asn_TYPE_tag2member_t *best = 0; - const asn_TYPE_tag2member_t *t2m_f, *t2m_l; - size_t edx_max = edx + elements[edx].optional; - /* - * Rewind to the first element with that tag, - * `cause bsearch() does not guarantee order. - */ - t2m_f = t2m + t2m->toff_first; - t2m_l = t2m + t2m->toff_last; - for(t2m = t2m_f; t2m <= t2m_l; t2m++) { - if(t2m->el_no > edx_max) break; - if(t2m->el_no < edx) continue; - best = t2m; - } - if(best) { - edx = best->el_no; - ctx->step = 1 + 2 * edx; - goto microphase2; - } - } - n = opt_edx_end; - } - if(n == opt_edx_end) { - /* - * If tag is unknown, it may be either - * an unknown (thus, incorrect) tag, - * or an extension (...), - * or an end of the indefinite-length structure. - */ - if(!IN_EXTENSION_GROUP(specs, - edx + elements[edx].optional)) { - ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - ASN_DEBUG("Expected tag %s (%s)%s", - ber_tlv_tag_string(elements[edx].tag), - elements[edx].name, - elements[edx].optional - ?" or alternatives":""); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - edx += elements[edx].optional; - - ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - ASN_DEBUG("Skip length %d in %s", - (int)skip, td->name); - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - ctx->step -= 2; - edx--; - continue; /* Try again with the next tag */ - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elements[edx].flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elements[edx].memb_offset; - memb_ptr2 = &memb_ptr; - } - /* - * Invoke the member fetch routine according to member's type - */ - if(elements[edx].flags & ATF_OPEN_TYPE) { - rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); - } else { - rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, - elements[edx].type, - memb_ptr2, ptr, LEFT, - elements[edx].tag_mode); - } - ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " - "in %d bytes rval.code %d, size=%d", - td->name, edx, elements[edx].type->name, - (int)LEFT, (int)rval.consumed, rval.code, (int)size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", - (long)ctx->left, (long)size); - /* Fall through */ - case RC_FAIL: /* Fatal error */ - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all structure members) */ - - phase3: - ctx->phase = 3; - /* Fall through */ - case 3: /* 00 and other tags expected */ - case 4: /* only 00's expected */ - - ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", - td->name, (long)ctx->left, (long)size); - - /* - * Skip everything until the end of the SEQUENCE. - */ - while(ctx->left) { - ssize_t tl, ll; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * If expected <0><0>... - */ - if(ctx->left < 0 - && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - ctx->phase = 4; - continue; - } - } - - if(!IN_EXTENSION_GROUP(specs, td->elements_count) - || ctx->phase == 4) { - ASN_DEBUG("Unexpected continuation " - "of a non-extensible type " - "%s (SEQUENCE): %s", - td->name, - ber_tlv_tag_string(tlv_tag)); - RETURN(RC_FAIL); - } - - ll = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tl, LEFT - tl); - switch(ll) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(tl + ll); - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - - -/* - * The DER encoder of the SEQUENCE type. - */ -asn_enc_rval_t -SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t computed_size = 0; - asn_enc_rval_t erval = {0,0,0}; - ssize_t ret; - size_t edx; - - ASN_DEBUG("%s %s as SEQUENCE", - cb?"Encoding":"Estimating", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", - edx, elm->name, (long)erval.encoded); - } - - /* - * Encode the TLV for the sequence itself. - */ - ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); - if(ret == -1) - ASN__ENCODE_FAILED; - erval.encoded = computed_size + ret; - - if(!cb) ASN__ENCODED_OK(erval); - - /* - * Encode all members. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - asn_enc_rval_t tmperval = {0,0,0}; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) continue; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, cb, app_key); - if(tmperval.encoded == -1) - return tmperval; - computed_size -= tmperval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", - edx, elm->name, td->name, (long)tmperval.encoded); - } - - if(computed_size != 0) - /* - * Encoded size is not equal to the computed size. - */ - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(erval); -} - - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) \ - do { \ - size_t num = (num_bytes); \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Skipping unknown extensions. - * Phase 4: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 3;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the inner member of a sequence. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr_dontuse; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr_dontuse = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ - } - - if(elm->flags & ATF_OPEN_TYPE) { - tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); - } else { - /* Invoke the inner type decoder, m.b. multiple times */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - ptr, size); - } - XER_ADVANCE(tmprval.consumed); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 1; /* Back to body processing */ - ctx->step = ++edx; - ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", - ctx->phase, ctx->step); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", - tcv, ctx->phase, xml_tag); - - /* Skip the extensions section */ - if(ctx->phase == 3) { - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 4; - RETURN(RC_FAIL); - case 0: - XER_ADVANCE(ch_size); - continue; - case 1: - XER_ADVANCE(ch_size); - ctx->phase = 1; - continue; - case 2: - ctx->phase = 1; - break; - } - } - - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - if(edx >= td->elements_count || - /* Explicit OPTIONAL specs reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx)) { - XER_ADVANCE(ch_size); - ctx->phase = 4; /* Phase out */ - RETURN(RC_OK); - } else { - ASN_DEBUG("Premature end of XER SEQUENCE"); - RETURN(RC_FAIL); - } - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", - tcv, ctx->phase, edx); - if(ctx->phase != 1) { - break; /* Really unexpected */ - } - - if(edx < td->elements_count) { - /* - * Search which member corresponds to this tag. - */ - size_t n; - size_t edx_end = edx + elements[edx].optional + 1; - if(edx_end > td->elements_count) - edx_end = td->elements_count; - for(n = edx; n < edx_end; n++) { - elm = &td->elements[n]; - tcv = xer_check_tag(ptr, ch_size, elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx = n; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - n = edx_end; - break; /* Phase out */ - } - break; - } - if(n != edx_end) - continue; - } else { - ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", - edx, td->elements_count); - } - - /* It is expected extension */ - if(IN_EXTENSION_GROUP(specs, - edx + (edx < td->elements_count - ? elements[edx].optional : 0))) { - ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", - edx); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - } else { - ctx->left = 1; - ctx->phase = 3; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", - size>0?((const char *)ptr)[0]:'.', - size>1?((const char *)ptr)[1]:'.', - size>2?((const char *)ptr)[2]:'.', - size>3?((const char *)ptr)[3]:'.', - size>4?((const char *)ptr)[4]:'.', - size>5?((const char *)ptr)[5]:'.'); - break; - } - - ctx->phase = 4; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - -asn_enc_rval_t -SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - int xcan = (flags & XER_F_CANONICAL); - asn_TYPE_descriptor_t *tmp_def_val_td = 0; - void *tmp_def_val = 0; - size_t edx; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - assert(tmp_def_val == 0); - if(elm->default_value_set) { - if(elm->default_value_set(&tmp_def_val)) { - ASN__ENCODE_FAILED; - } else { - memb_ptr = tmp_def_val; - tmp_def_val_td = elm->type; - } - } else if(elm->optional) { - continue; - } else { - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - /* Print the member itself */ - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmp_def_val) { - ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - tmp_def_val = 0; - } - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - ASN__ENCODE_FAILED; -} - -int -SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t edx; - int ret; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) continue; - /* Print line */ - /* Fall through */ - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Indentation */ - _i_INDENT(1); - - /* Print the member's name and stuff */ - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - - /* Print the member itself */ - ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, - cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - size_t edx; - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_struct_ctx_t *ctx; /* Decoder context */ - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as SEQUENCE", td->name); - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - /* Clean parsing context */ - ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); - FREEMEM(ctx->ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset( - sptr, 0, - ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); - break; - } -} - -int -SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t edx; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Iterate over structure members and check their validity. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - continue; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - if(ret) return ret; - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; - edx < (specs->first_extension < 0 ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - assert(!IN_EXTENSION_GROUP(specs, edx)); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = uper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, (long)bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, - *memb_ptr2); - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: break; - case 0: continue; - default: - if(uper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - ASN_DEBUG("Skipped overflow extension"); - continue; - } - break; - } - - FREEMEM(epres); - } - - if(specs->first_extension >= 0) { - unsigned i; - /* Fill DEFAULT members in extensions */ - for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; - i++) { - asn_TYPE_member_t *elm; - void **memb_ptr2; /* Pointer to member pointer */ - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) { - return -1; - } - /* Encode as open type field */ - if(po2 && present - && uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - *memb_ptr2, po2)) - return -1; - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(*memb_ptr2) == 0) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, - po); - if(er.encoded == -1) return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of extensions %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(uper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ -#if 0 - int padding; -#endif - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } -#if 0 - /* Get Padding */ - padding = (8 - (pd->moved % 8)) % 8; - if(padding > 0) - ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); -#if 0 /* old way of removing padding */ - per_get_few_bits(pd, padding); -#else /* Experimental fix proposed by @mhanna123 */ - if(edx != (td->elements_count-1)) - per_get_few_bits(pd, padding); - else { - if(specs->roms_count && (padding > 0)) - ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); - else - per_get_few_bits(pd, padding); - } -#endif /* dealing with padding */ -#endif - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = aper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) - ASN__DECODE_STARVED; - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%ld is not extension", edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); - rv = aper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: - break; - case 0: - continue; - default: - if(aper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - } - break; - } - - FREEMEM(epres); - } - - /* Fill DEFAULT members in extensions */ - for(edx = specs->roms_count; edx < specs->roms_count - + specs->aoms_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void **memb_ptr2; /* Pointer to member pointer */ - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s (@%ld) present => %d", - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) - return -1; - /* Encode as open type field */ - if(po2 && present && aper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) - return -1; - - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(memb_ptr2) == 1) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %ld not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) - continue; - - ASN_DEBUG("Encoding %s->%s", td->name, elm->name); - er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - *memb_ptr2, po); - if(er.encoded == -1) - return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(aper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - size_t edx; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *amemb; - const void *bmemb; - int ret; - - if(elm->flags & ATF_POINTER) { - amemb = - *(const void *const *)((const char *)aptr + elm->memb_offset); - bmemb = - *(const void *const *)((const char *)bptr + elm->memb_offset); - if(!amemb) { - if(!bmemb) continue; - if(elm->default_value_cmp - && elm->default_value_cmp(bmemb) == 0) { - /* A is absent, but B is present and equal to DEFAULT */ - continue; - } - return -1; - } else if(!bmemb) { - if(elm->default_value_cmp - && elm->default_value_cmp(amemb) == 0) { - /* B is absent, but A is present and equal to DEFAULT */ - continue; - } - return 1; - } - } else { - amemb = (const void *)((const char *)aptr + elm->memb_offset); - bmemb = (const void *)((const char *)bptr + elm->memb_offset); - } - - ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); - if(ret != 0) return ret; - } - - return 0; -} - -asn_TYPE_operation_t asn_OP_SEQUENCE = { - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_compare, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_decode_oer, - SEQUENCE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_decode_uper, - SEQUENCE_encode_uper, - SEQUENCE_decode_aper, - SEQUENCE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - void *st = *sptr; - size_t edx; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - for(edx = 0; edx < td->elements_count; edx++) { - const asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - asn_random_fill_result_t tmpres; - - if(elm->optional && asn_random_between(0, 4) == 2) { - /* Sometimes decide not to fill the optional value */ - continue; - } - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - tmpres = elm->type->op->random_fill( - elm->type, memb_ptr2, &elm->encoding_constraints, - max_length > result_ok.length ? max_length - result_ok.length : 0); - switch(tmpres.code) { - case ARFILL_OK: - result_ok.length += tmpres.length; - continue; - case ARFILL_SKIPPED: - assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); - continue; - case ARFILL_FAILED: - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return tmpres; - } - } - - *sptr = st; - - return result_ok; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE.h deleted file mode 100644 index a22ed3a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.c deleted file mode 100644 index 10f18cf..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.c +++ /dev/null @@ -1,358 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The DER encoder of the SEQUENCE OF type. - */ -asn_enc_rval_t -SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - asn_enc_rval_t erval = {0,0,0}; - int edx; - - ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - } - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, - cb, app_key); - if(encoding_size == -1) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - return erval; - } - - computed_size += encoding_size; - if(!cb) { - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - cb, app_key); - if(erval.encoded == -1) - return erval; - encoding_size += erval.encoded; - } - - if(computed_size != (size_t)encoding_size) { - /* - * Encoded size is not equal to the computed size. - */ - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - } else { - erval.encoded = computed_size; - erval.structure_ptr = 0; - erval.failed_type = 0; - } - - return erval; -} - -asn_enc_rval_t -SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 - : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_enc_rval_t -SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - const asn_TYPE_member_t *elm = td->elements; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, - po); - if(er.encoded == -1) ASN__ENCODE_FAILED; - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - ASN__ENCODED_OK(er); -} - -asn_enc_rval_t -SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - asn_TYPE_member_t *elm = td->elements; - int seq; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = (list->count < ct->lower_bound - || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", - ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) - ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) - ASN__ENCODE_FAILED; - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ -/* if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; -*/ - if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) - ASN__ENCODE_FAILED; - } - - for(seq = -1; seq < list->count;) { - ssize_t mayEncode; - if(seq < 0) seq = 0; - if(ct && ct->effective_bits >= 0) { - mayEncode = list->count; - } else { - mayEncode = aper_put_length(po, -1, list->count - seq); - if(mayEncode < 0) ASN__ENCODE_FAILED; - } - - while(mayEncode--) { - void *memb_ptr = list->array[seq++]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->aper_encoder(elm->type, - elm->encoding_constraints.per_constraints, memb_ptr, po); - if(er.encoded == -1) - ASN__ENCODE_FAILED; - } - } - - ASN__ENCODED_OK(er); -} -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); - const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); - ssize_t idx; - - if(a && b) { - ssize_t common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, a->array[idx], b->array[idx]); - if(ret) return ret; - } - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { - SEQUENCE_OF_free, - SEQUENCE_OF_print, - SEQUENCE_OF_compare, - SEQUENCE_OF_decode_ber, - SEQUENCE_OF_encode_der, - SEQUENCE_OF_decode_xer, - SEQUENCE_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ - SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ - SEQUENCE_OF_encode_uper, - SEQUENCE_OF_decode_aper, - SEQUENCE_OF_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.h deleted file mode 100644 index 6857f0f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_OF.h +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_oer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_oer.c deleted file mode 100644 index ecb589c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SEQUENCE_oer.c +++ /dev/null @@ -1,561 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include -#include - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) \ - do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) - -/* - * Check whether we are inside the extensions group. - */ -#define IN_EXTENSION_GROUP(specs, memb_idx) \ - ((specs)->first_extension >= 0 \ - && (unsigned)(specs)->first_extension <= (memb_idx)) - -#define IN_ROOT_GROUP_PRED(edx) \ - edx < (specs->first_extension < 0 ? td->elements_count \ - : (size_t)specs->first_extension) - -#define FOR_IN_ROOT_GROUP(edx) for(edx = 0; IN_ROOT_GROUP_PRED(edx); edx++) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * Return pointer to a member. - */ -static void ** -element_ptrptr(void *struct_ptr, asn_TYPE_member_t *elm, void **tmp_save_ptr) { - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - return (void **)((char *)struct_ptr + elm->memb_offset); - } else { - assert(tmp_save_ptr); - *tmp_save_ptr = (void *)((char *)struct_ptr + elm->memb_offset); - return tmp_save_ptr; - } -} - -static const void * -element_ptr(const void *struct_ptr, const asn_TYPE_member_t *elm) { - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - return *(const void *const *)((const char *)struct_ptr - + elm->memb_offset); - } else { - return (const void *)((const char *)struct_ptr + elm->memb_offset); - } -} - -asn_dec_rval_t -SEQUENCE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **struct_ptr, - const void *ptr, size_t size) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_dec_rval_t rval = {RC_OK, 0}; - void *st = *struct_ptr; /* Target structure */ - asn_struct_ctx_t *ctx; /* Decoder context */ - size_t consumed_myself = 0; /* Consumed bytes from ptr. */ - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously. - */ - switch(ctx->phase) { - case 0: { - /* - * Fetch preamble. - */ - asn_bit_data_t *preamble; - int has_extensions_bit = (specs->first_extension >= 0); - size_t preamble_bits = (has_extensions_bit + specs->roms_count); - size_t preamble_bytes = ((7 + preamble_bits) >> 3); - - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 0", td->name); - - ASN_DEBUG( - "Expecting preamble bits %" ASN_PRI_SIZE " for %s (including %d extension bits)", - preamble_bits, td->name, has_extensions_bit); - - if(preamble_bytes > size) { - ASN__DECODE_STARVED; - } - - preamble = asn_bit_data_new_contiguous(ptr, preamble_bits); - if(!preamble) { - RETURN(RC_FAIL); - } - preamble->nboff = has_extensions_bit; - ctx->ptr = preamble; - ADVANCE(preamble_bytes); - } - NEXT_PHASE(ctx); - /* FALL THROUGH */ - case 1: { - /* Decode components of the extension root */ - asn_bit_data_t *preamble = ctx->ptr; - size_t edx; - - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 1 (Root)", td->name); - - assert(preamble); - - for(edx = (ctx->step >> 1); IN_ROOT_GROUP_PRED(edx); - edx++, ctx->step = (ctx->step & ~1) + 2) { - asn_TYPE_member_t *elm = &td->elements[edx]; - - ASN_DEBUG("Decoding %s->%s", td->name, elm->name); - - assert(!IN_EXTENSION_GROUP(specs, edx)); - - if(ctx->step & 1) { - goto microphase2_decode_continues; - } - - - if(elm->optional) { - int32_t present = asn_get_few_bits(preamble, 1); - if(present < 0) { - ASN_DEBUG("Presence map ended prematurely: %d", present); - RETURN(RC_FAIL); - } else if(present == 0) { - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - void *tmp; - if(elm->default_value_set( - element_ptrptr(st, elm, &tmp))) { - RETURN(RC_FAIL); - } - } - /* The member is not present. */ - continue; - } - /* Present OPTIONAL or DEFAULT component. */ - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2_decode_continues: - if(elm->flags & ATF_OPEN_TYPE) { - rval = OPEN_TYPE_oer_get(opt_codec_ctx, td, st, elm, ptr, size); - } else { - void *save_memb_ptr; /* Temporary reference. */ - void **memb_ptr2; /* Pointer to a pointer to a memmber */ - - memb_ptr2 = element_ptrptr(st, elm, &save_memb_ptr); - - rval = elm->type->op->oer_decoder( - opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, - size); - } - switch(rval.code) { - case RC_OK: - ADVANCE(rval.consumed); - break; - case RC_WMORE: - ASN_DEBUG("More bytes needed at element %s \"%s\"", td->name, - elm->name); - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - case RC_FAIL: - ASN_DEBUG("Decoding failed at element %s \"%s\"", td->name, - elm->name); - RETURN(RC_FAIL); - } - } /* for(all root members) */ - - } - NEXT_PHASE(ctx); - /* FALL THROUGH */ - case 2: - assert(ctx->ptr); - { - /* Cleanup preamble. */ - asn_bit_data_t *preamble = ctx->ptr; - asn_bit_data_t *extadds; - int has_extensions_bit = (specs->first_extension >= 0); - int extensions_present = - has_extensions_bit - && (preamble->buffer == NULL - || (((const uint8_t *)preamble->buffer)[0] & 0x80)); - uint8_t unused_bits; - size_t len = 0; - ssize_t len_len; - - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 2", td->name); - - preamble->buffer = 0; /* Will do extensions_present==1 next time. */ - - if(!extensions_present) { - ctx->phase = 10; - RETURN(RC_OK); - } - - /* - * X.696 (08/2015) #16.1 (c), #16.4 - * Read in the extension addition presence bitmap. - */ - - len_len = oer_fetch_length(ptr, size, &len); - if(len_len > 0) { - ADVANCE(len_len); - } else if(len_len < 0) { - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - - if(len == 0) { - /* 16.4.1-2 */ - RETURN(RC_FAIL); - } else if(len > size) { - RETURN(RC_WMORE); - } - - /* Account for unused bits */ - unused_bits = 0x7 & *(const uint8_t *)ptr; - ADVANCE(1); - len--; - if(unused_bits && len == 0) { - RETURN(RC_FAIL); - } - - /* Get the extensions map */ - extadds = asn_bit_data_new_contiguous(ptr, len * 8 - unused_bits); - if(!extadds) { - RETURN(RC_FAIL); - } - FREEMEM(preamble); - ctx->ptr = extadds; - ADVANCE(len); - } - NEXT_PHASE(ctx); - ctx->step = - (specs->first_extension < 0 ? td->elements_count - : (size_t)specs->first_extension); - /* Fall through */ - case 3: - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 3 (Extensions)", td->name); - for(; ctx->step < (signed)td->elements_count; ctx->step++) { - asn_bit_data_t *extadds = ctx->ptr; - size_t edx = ctx->step; - asn_TYPE_member_t *elm = &td->elements[edx]; - void *tmp_memb_ptr; - void **memb_ptr2 = element_ptrptr(st, elm, &tmp_memb_ptr); - - switch(asn_get_few_bits(extadds, 1)) { - case -1: - /* - * Not every one of our extensions is known to the remote side. - * Continue filling in their defaults though. - */ - /* Fall through */ - case 0: - /* Fill-in DEFAULT */ - if(elm->default_value_set - && elm->default_value_set(memb_ptr2)) { - RETURN(RC_FAIL); - } - continue; - case 1: { - /* Read OER open type */ - ssize_t ot_size = - oer_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, - memb_ptr2, ptr, size); - assert(ot_size <= (ssize_t)size); - if(ot_size > 0) { - ADVANCE(ot_size); - } else if(ot_size < 0) { - RETURN(RC_FAIL); - } else { - /* Roll back open type parsing */ - asn_get_undo(extadds, 1); - RETURN(RC_WMORE); - } - break; - } - default: - RETURN(RC_FAIL); - } - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 4: - ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 4", td->name); - /* Read in the rest of Open Types while ignoring them */ - for(;;) { - asn_bit_data_t *extadds = ctx->ptr; - switch(asn_get_few_bits(extadds, 1)) { - case 0: - continue; - case 1: { - ssize_t skipped = oer_open_type_skip(ptr, size); - if(skipped > 0) { - ADVANCE(skipped); - } else if(skipped < 0) { - RETURN(RC_FAIL); - } else { - asn_get_undo(extadds, 1); - RETURN(RC_WMORE); - } - continue; - } - case -1: - /* No more Open Type encoded components */ - break; - default: - RETURN(RC_FAIL); - } - break; - } - } - - RETURN(RC_OK); -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -SEQUENCE_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - size_t computed_size = 0; - int has_extensions_bit = (specs->first_extension >= 0); - size_t preamble_bits = (has_extensions_bit + specs->roms_count); - uint32_t has_extensions = 0; - size_t edx; - int ret; - - (void)constraints; - - if(preamble_bits) { - asn_bit_outp_t preamble; - - memset(&preamble, 0, sizeof(preamble)); - preamble.output = cb; - preamble.op_key = app_key; - - if(has_extensions_bit) { - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr = element_ptr(sptr, elm); - if(memb_ptr) { - if(elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - /* Do not encode default values in extensions */ - } else { - has_extensions = 1; - break; - } - } - } - ret = asn_put_few_bits(&preamble, has_extensions, 1); - assert(ret == 0); - if(ret < 0) { - ASN__ENCODE_FAILED; - } - } - - /* - * Encode optional components bitmap. - */ - if(specs->roms_count) { - FOR_IN_ROOT_GROUP(edx) { - asn_TYPE_member_t *elm = &td->elements[edx]; - - if(IN_EXTENSION_GROUP(specs, edx)) break; - - if(elm->optional) { - const void *memb_ptr = element_ptr(sptr, elm); - uint32_t has_component = memb_ptr != NULL; - if(has_component && elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - has_component = 0; - } - ret = asn_put_few_bits(&preamble, has_component, 1); - if(ret < 0) { - ASN__ENCODE_FAILED; - } - } - } - } - - asn_put_aligned_flush(&preamble); - computed_size += preamble.flushed_bytes; - } /* if(preamble_bits) */ - - /* - * Put root components and extensions root. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - asn_enc_rval_t er = {0,0,0}; - const void *memb_ptr; - - if(IN_EXTENSION_GROUP(specs, edx)) break; - - memb_ptr = element_ptr(sptr, elm); - if(memb_ptr) { - if(elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - /* Skip default values in encoding */ - continue; - } - } else { - if(elm->optional) continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - if(!elm->type->op->oer_encoder) { - ASN_DEBUG("OER encoder is not defined for type %s", elm->type->name); - ASN__ENCODE_FAILED; - } - er = elm->type->op->oer_encoder( - elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, - app_key); - if(er.encoded == -1) { - ASN_DEBUG("... while encoding %s member \"%s\"\n", td->name, - elm->name); - return er; - } - computed_size += er.encoded; - } - - /* - * Before encode extensions, encode extensions additions presense bitmap - # X.696 (08/2015) #16.4. - */ - if(has_extensions) { - asn_bit_outp_t extadds; - - /* Special case allowing us to use exactly one byte for #8.6 */ - size_t aoms_length_bits = specs->aoms_count; - size_t aoms_length_bytes = (7 + aoms_length_bits) >> 3; - uint8_t unused_bits = 0x07 & (8 - (aoms_length_bits & 0x07)); - - assert(1 + aoms_length_bytes <= 127); - - memset(&extadds, 0, sizeof(extadds)); - extadds.output = cb; - extadds.op_key = app_key; - - /* #8.6 length determinant */ - ret = asn_put_few_bits(&extadds, (1 + aoms_length_bytes), 8); - if(ret < 0) ASN__ENCODE_FAILED; - - /* Number of unused bytes, #16.4.2 */ - ret = asn_put_few_bits(&extadds, unused_bits, 8); - if(ret < 0) ASN__ENCODE_FAILED; - - /* Encode presence bitmap #16.4.3 */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr = element_ptr(sptr, elm); - if(memb_ptr && elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - memb_ptr = 0; /* Do not encode default value. */ - } - ret |= asn_put_few_bits(&extadds, memb_ptr ? 1 : 0, 1); - } - if(ret < 0) ASN__ENCODE_FAILED; - - asn_put_aligned_flush(&extadds); - computed_size += extadds.flushed_bytes; - - /* Now, encode extensions */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr = element_ptr(sptr, elm); - - if(memb_ptr) { - if(elm->default_value_cmp - && elm->default_value_cmp(memb_ptr) == 0) { - /* Do not encode default value. */ - } else { - ssize_t wrote = oer_open_type_put( - elm->type, elm->encoding_constraints.oer_constraints, - memb_ptr, cb, app_key); - if(wrote == -1) { - ASN__ENCODE_FAILED; - } - computed_size += wrote; - } - } else if(!elm->optional) { - ASN__ENCODE_FAILED; - } - } - } /* if(has_extensions) */ - - - { - asn_enc_rval_t er = {0, 0, 0}; - er.encoded = computed_size; - ASN__ENCODED_OK(er); - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF.c deleted file mode 100644 index bf1dc27..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF.c +++ /dev/null @@ -1,1441 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * The decoder of the SET OF type. - */ -asn_dec_rval_t -SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as SET OF", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - ASN_DEBUG("Structure consumes %ld bytes, " - "buffer %ld", (long)ctx->left, (long)size); - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next item. - */ - for(;; ctx->step = 0) { - ssize_t tag_len; /* Length of TLV's T */ - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - - if(ctx->left == 0) { - ASN_DEBUG("End of SET OF %s", td->name); - /* - * No more things to decode. - * Exit out of here. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Found the terminator of the - * indefinite length structure. - */ - break; - } - } - - /* Outmost tag may be unknown and cannot be fetched/compared */ - if(elm->tag != (ber_tlv_tag_t)-1) { - if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { - /* - * The new list member of expected type has arrived. - */ - } else { - ASN_DEBUG("Unexpected tag %s fixed SET OF %s", - ber_tlv_tag_string(tlv_tag), td->name); - ASN_DEBUG("%s SET OF has tag %s", - td->name, ber_tlv_tag_string(elm->tag)); - RETURN(RC_FAIL); - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, - elm->type, &ctx->ptr, ptr, LEFT, 0); - ASN_DEBUG("In %s SET OF %s code %d consumed %d", - td->name, elm->type->name, - rval.code, (int)rval.consumed); - switch(rval.code) { - case RC_OK: - { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - else - ctx->ptr = 0; - } - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - /* Fall through */ - case RC_FAIL: /* Fatal error */ - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all list members) */ - - NEXT_PHASE(ctx); - case 2: - /* - * Read in all "end of content" TLVs. - */ - while(ctx->left < 0) { - if(LEFT < 2) { - if(LEFT > 0 && ((const char *)ptr)[0] != 0) { - /* Unexpected tag */ - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } - if(((const char *)ptr)[0] == 0 - && ((const char *)ptr)[1] == 0) { - ADVANCE(2); - ctx->left++; - } else { - RETURN(RC_FAIL); - } - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - -/* - * Internally visible buffer holding a single encoded element. - */ -struct _el_buffer { - uint8_t *buf; - size_t length; - size_t allocated_size; - unsigned bits_unused; -}; -/* Append bytes to the above structure */ -static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { - struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; - - if(el_buf->length + size > el_buf->allocated_size) { - size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; - void *p; - - do { - new_size <<= 2; - } while(el_buf->length + size > new_size); - - p = REALLOC(el_buf->buf, new_size); - if(p) { - el_buf->buf = p; - el_buf->allocated_size = new_size; - } else { - return -1; - } - } - - memcpy(el_buf->buf + el_buf->length, buffer, size); - - el_buf->length += size; - return 0; -} - -static void assert_unused_bits(const struct _el_buffer* p) { - if(p->length) { - assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); - } else { - assert(p->bits_unused == 0); - } -} - -static int _el_buf_cmp(const void *ap, const void *bp) { - const struct _el_buffer *a = (const struct _el_buffer *)ap; - const struct _el_buffer *b = (const struct _el_buffer *)bp; - size_t common_len; - int ret = 0; - - if(a->length < b->length) - common_len = a->length; - else - common_len = b->length; - - if (a->buf && b->buf) { - ret = memcmp(a->buf, b->buf, common_len); - } - if(ret == 0) { - if(a->length < b->length) - ret = -1; - else if(a->length > b->length) - ret = 1; - /* Ignore unused bits. */ - assert_unused_bits(a); - assert_unused_bits(b); - } - - return ret; -} - -static void -SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { - size_t i; - - for(i = 0; i < count; i++) { - FREEMEM(el_buf[i].buf); - } - - FREEMEM(el_buf); -} - -enum SET_OF__encode_method { - SOES_DER, /* Distinguished Encoding Rules */ - SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ -}; - -static struct _el_buffer * -SET_OF__encode_sorted(const asn_TYPE_member_t *elm, - const asn_anonymous_set_ *list, - enum SET_OF__encode_method method) { - struct _el_buffer *encoded_els; - int edx; - - encoded_els = - (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); - if(encoded_els == NULL) { - return NULL; - } - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - const void *memb_ptr = list->array[edx]; - struct _el_buffer *encoding_el = &encoded_els[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) break; - - /* - * Encode the member into the prepared space. - */ - switch(method) { - case SOES_DER: - erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, - _el_addbytes, encoding_el); - break; - case SOES_CUPER: - erval = uper_encode(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, _el_addbytes, encoding_el); - if(erval.encoded != -1) { - size_t extra_bits = erval.encoded % 8; - assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); - encoding_el->bits_unused = (8 - extra_bits) & 0x7; - } - break; - default: - assert(!"Unreachable"); - break; - } - if(erval.encoded < 0) break; - } - - if(edx == list->count) { - /* - * Sort the encoded elements according to their encoding. - */ - qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); - - return encoded_els; - } else { - SET_OF__encode_sorted_free(encoded_els, edx); - return NULL; - } -} - - -/* - * The DER encoder of the SET OF type. - */ -asn_enc_rval_t -SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - struct _el_buffer *encoded_els; - int edx; - - ASN_DEBUG("Estimating size for SET OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) ASN__ENCODE_FAILED; - - erval = - elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); - if(erval.encoded == -1) return erval; - computed_size += erval.encoded; - } - - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = - der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - if(encoding_size < 0) { - ASN__ENCODE_FAILED; - } - computed_size += encoding_size; - - if(!cb || list->count == 0) { - asn_enc_rval_t erval = {0,0,0}; - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of %s SET OF", td->name); - - /* - * DER mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the - * encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); - - /* - * Report encoded elements to the application. - * Dispose of temporary sorted members table. - */ - for(edx = 0; edx < list->count; edx++) { - struct _el_buffer *encoded_el = &encoded_els[edx]; - /* Report encoded chunks to the application */ - if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { - break; - } else { - encoding_size += encoded_el->length; - } - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if(edx == list->count) { - asn_enc_rval_t erval = {0,0,0}; - assert(computed_size == (size_t)encoding_size); - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } else { - ASN__ENCODE_FAILED; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = ((const char *)buf_ptr) + num;\ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *element = td->elements; - const char *elm_tag; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval = {RC_OK, 0};/* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* Which tag is expected for the downstream */ - if(specs->as_XMLValueList) { - elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; - } else { - elm_tag = (*element->name) - ? element->name : element->type->xml_tag; - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - */ - for(; ctx->phase <= 2;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Go inside the inner member of a set. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval = {RC_OK, 0}; - - /* Invoke the inner type decoder, m.b. multiple times */ - ASN_DEBUG("XER/SET OF element [%s]", elm_tag); - tmprval = element->type->op->xer_decoder(opt_codec_ctx, - element->type, &ctx->ptr, elm_tag, - buf_ptr, size); - if(tmprval.code == RC_OK) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - ctx->ptr = 0; - XER_ADVANCE(tmprval.consumed); - } else { - XER_ADVANCE(tmprval.consumed); - RETURN(tmprval.code); - } - ctx->phase = 1; /* Back to body processing */ - ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, - buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", - tcv, ctx->phase, xml_tag); - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - /* No more things to decode */ - XER_ADVANCE(ch_size); - ctx->phase = 3; /* Phase out */ - RETURN(RC_OK); - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); - if(ctx->phase == 1) { - /* - * Process a single possible member. - */ - ctx->phase = 2; - continue; - } - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SET OF"); - break; - } - - ctx->phase = 3; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - - - -typedef struct xer_tmp_enc_s { - void *buffer; - size_t offset; - size_t size; -} xer_tmp_enc_t; -static int -SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { - xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; - if(t->offset + size >= t->size) { - size_t newsize = (t->size << 2) + size; - void *p = REALLOC(t->buffer, newsize); - if(!p) return -1; - t->buffer = p; - t->size = newsize; - } - memcpy((char *)t->buffer + t->offset, buffer, size); - t->offset += size; - return 0; -} -static int -SET_OF_xer_order(const void *aptr, const void *bptr) { - const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; - const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; - size_t minlen = a->offset; - int ret; - if(b->offset < minlen) minlen = b->offset; - /* Well-formed UTF-8 has this nice lexicographical property... */ - ret = memcmp(a->buffer, b->buffer, minlen); - if(ret != 0) return ret; - if(a->offset == b->offset) - return 0; - if(a->offset == minlen) - return -1; - return 1; -} - - -asn_enc_rval_t -SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - xer_tmp_enc_t *encs = 0; - size_t encs_count = 0; - void *original_app_key = app_key; - asn_app_consume_bytes_f *original_cb = cb; - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - if(xcan) { - encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); - if(!encs) ASN__ENCODE_FAILED; - cb = SET_OF_encode_xer_callback; - } - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(encs) { - memset(&encs[encs_count], 0, sizeof(encs[0])); - app_key = &encs[encs_count]; - encs_count++; - } - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - if(!xcan && specs->as_XMLValueList == 1) - ASN__TEXT_INDENT(1, ilevel + 1); - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + (specs->as_XMLValueList != 2), - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - if(encs) { - xer_tmp_enc_t *enc = encs; - xer_tmp_enc_t *end = encs + encs_count; - ssize_t control_size = 0; - - er.encoded = 0; - cb = original_cb; - app_key = original_app_key; - qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); - - for(; enc < end; enc++) { - ASN__CALLBACK(enc->buffer, enc->offset); - FREEMEM(enc->buffer); - enc->buffer = 0; - control_size += enc->offset; - } - assert(control_size == er.encoded); - } - - goto cleanup; -cb_failed: - ASN__ENCODE_FAILED; -cleanup: - if(encs) { - size_t n; - for(n = 0; n < encs_count; n++) { - FREEMEM(encs[n].buffer); - } - FREEMEM(encs); - } - ASN__ENCODED_OK(er); -} - -int -SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int ret; - int i; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - _i_INDENT(1); - - ret = elm->type->op->print_struct(elm->type, memb_ptr, - ilevel + 1, cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(td && ptr) { - const asn_SET_OF_specifics_t *specs; - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); - asn_struct_ctx_t *ctx; /* Decoder context */ - int i; - - /* - * Could not use set_of_empty() because of (*free) - * incompatibility. - */ - for(i = 0; i < list->count; i++) { - void *memb_ptr = list->array[i]; - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } - list->count = 0; /* No meaningful elements left */ - - asn_set_empty(list); /* Remove (list->array) */ - - specs = (const asn_SET_OF_specifics_t *)td->specifics; - ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); - if(ctx->ptr) { - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } - } -} - -int -SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - asn_constr_check_f *constr; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int i; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - constr = elm->encoding_constraints.general_constraints; - if(!constr) constr = elm->type->encoding_constraints.general_constraints; - - /* - * Iterate over the members of an array. - * Validate each in turn, until one fails. - */ - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - int ret; - - if(!memb_ptr) continue; - - ret = constr(elm->type, memb_ptr, ctfailcb, app_key); - if(ret) return ret; - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = per_get_few_bits(pd, ct->effective_bits); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = uper_get_length(pd, -1, 0, &repeat); - ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", - nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) { - if(rv.consumed == 0 && nelems > 200) { - /* Protect from SET OF NULL compression bombs. */ - ASN__DECODE_FAILED; - } - continue; - } - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -asn_enc_rval_t -SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - const asn_TYPE_member_t *elm = td->elements; - struct _el_buffer *encoded_els; - asn_enc_rval_t er = {0,0,0}; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - - list = _A_CSET_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - - /* - * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - const struct _el_buffer *el = &encoded_els[edx]; - if(asn_put_many_bits(po, el->buf, - (8 * el->length) - el->bits_unused) < 0) { - break; - } - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if((ssize_t)encoded_edx == list->count) { - ASN__ENCODED_OK(er); - } else { - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, - ct ? ct->effective_bits : -1, &repeat); - ASN_DEBUG("Got to decode %d elements (eff %d)", - (int)nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) - continue; - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -struct comparable_ptr { - const asn_TYPE_descriptor_t *td; - const void *sptr; -}; - -static int -SET_OF__compare_cb(const void *aptr, const void *bptr) { - const struct comparable_ptr *a = aptr; - const struct comparable_ptr *b = bptr; - assert(a->td == b->td); - return a->td->op->compare_struct(a->td, a->sptr, b->sptr); -} - -int -SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); - const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); - - if(a && b) { - struct comparable_ptr *asorted; - struct comparable_ptr *bsorted; - ssize_t common_length; - ssize_t idx; - - if(a->count == 0) { - if(b->count) return -1; - return 0; - } else if(b->count == 0) { - return 1; - } - - asorted = MALLOC(a->count * sizeof(asorted[0])); - bsorted = MALLOC(b->count * sizeof(bsorted[0])); - if(!asorted || !bsorted) { - FREEMEM(asorted); - FREEMEM(bsorted); - return -1; - } - - for(idx = 0; idx < a->count; idx++) { - asorted[idx].td = td->elements->type; - asorted[idx].sptr = a->array[idx]; - } - - for(idx = 0; idx < b->count; idx++) { - bsorted[idx].td = td->elements->type; - bsorted[idx].sptr = b->array[idx]; - } - - qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); - qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); - - common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); - if(ret) { - FREEMEM(asorted); - FREEMEM(bsorted); - return ret; - } - } - - FREEMEM(asorted); - FREEMEM(bsorted); - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SET_OF = { - SET_OF_free, - SET_OF_print, - SET_OF_compare, - SET_OF_decode_ber, - SET_OF_encode_der, - SET_OF_decode_xer, - SET_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SET_OF_decode_oer, - SET_OF_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SET_OF_decode_uper, - SET_OF_encode_uper, - SET_OF_decode_aper, - 0, /* SET_OF_encode_aper */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - SET_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_SET_OF_specifics_t *specs = - (const asn_SET_OF_specifics_t *)td->specifics; - asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm = td->elements; - void *st = *sptr; - long max_elements = 5; - long slb = 0; /* Lower size bound */ - long sub = 0; /* Upper size bound */ - size_t rnd_len; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) { - return result_failed; - } - } - - switch(asn_random_between(0, 6)) { - case 0: max_elements = 0; break; - case 1: max_elements = 1; break; - case 2: max_elements = 5; break; - case 3: max_elements = max_length; break; - case 4: max_elements = max_length / 2; break; - case 5: max_elements = max_length / 4; break; - default: break; - } - sub = slb + max_elements; - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_SEMI_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->lower_bound + max_elements; - } else if(pc->flags & APC_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->upper_bound; - if(sub - slb > max_elements) sub = slb + max_elements; - } - } - - /* Bias towards edges of allowed space */ - switch(asn_random_between(-1, 4)) { - default: - case -1: - /* Prepare lengths somewhat outside of constrained range. */ - if(constraints->per_constraints - && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { - switch(asn_random_between(0, 5)) { - default: - case 0: - rnd_len = 0; - break; - case 1: - if(slb > 0) { - rnd_len = slb - 1; - } else { - rnd_len = 0; - } - break; - case 2: - rnd_len = asn_random_between(0, slb); - break; - case 3: - if(sub < (ssize_t)max_length) { - rnd_len = sub + 1; - } else { - rnd_len = max_length; - } - break; - case 4: - if(sub < (ssize_t)max_length) { - rnd_len = asn_random_between(sub + 1, max_length); - } else { - rnd_len = max_length; - } - break; - case 5: - rnd_len = max_length; - break; - } - break; - } - /* Fall through */ - case 0: - rnd_len = asn_random_between(slb, sub); - break; - case 1: - if(slb < sub) { - rnd_len = asn_random_between(slb + 1, sub); - break; - } - /* Fall through */ - case 2: - rnd_len = asn_random_between(slb, slb); - break; - case 3: - if(slb < sub) { - rnd_len = asn_random_between(slb, sub - 1); - break; - } - /* Fall through */ - case 4: - rnd_len = asn_random_between(sub, sub); - break; - } - - for(; rnd_len > 0; rnd_len--) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - void *ptr = 0; - asn_random_fill_result_t tmpres = elm->type->op->random_fill( - elm->type, &ptr, &elm->encoding_constraints, - (max_length > res_ok.length ? max_length - res_ok.length : 0) - / rnd_len); - switch(tmpres.code) { - case ARFILL_OK: - ASN_SET_ADD(list, ptr); - res_ok.length += tmpres.length; - break; - case ARFILL_SKIPPED: - break; - case ARFILL_FAILED: - assert(ptr == 0); - return tmpres; - } - } - - return res_ok; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF.h deleted file mode 100644 index 7681062..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF.h +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF_oer.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF_oer.c deleted file mode 100644 index 5200518..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_SET_OF_oer.c +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_DISABLE_OER_SUPPORT - -#include -#include -#include -#include - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) \ - do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#undef SET_PHASE -#define SET_PHASE(ctx, value) \ - do { \ - ctx->phase = value; \ - ctx->step = 0; \ - } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t rval; \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - return rval; \ - } while(0) - -/* - * The SEQUENCE OF and SET OF values utilize a "quantity field". - * It is is a pointless combination of #8.6 (length determinant, capable - * of encoding tiny and huge numbers in the shortest possible number of octets) - * and the variable sized integer. What could have been encoded by #8.6 alone - * is required to be encoded by #8.6 followed by that number of unsigned octets. - * This doesn't make too much sense. It seems that the original version of OER - * standard have been using the unconstrained unsigned integer as a quantity - * field, and this legacy have gone through ISO/ITU-T standardization process. - */ -static ssize_t -oer_fetch_quantity(const void *ptr, size_t size, size_t *qty_r) { - const uint8_t *b; - const uint8_t *bend; - size_t len = 0; - size_t qty; - - ssize_t len_len = oer_fetch_length(ptr, size, &len); - if(len_len <= 0) { - *qty_r = 0; - return len_len; - } - - if((len_len + len) > size) { - *qty_r = 0; - return 0; - } - - b = (const uint8_t *)ptr + len_len; - bend = b + len; - - /* Skip the leading 0-bytes */ - for(; b < bend && *b == 0; b++) { - } - - if((bend - b) > (ssize_t)sizeof(size_t)) { - /* Length is not representable by the native size_t type */ - *qty_r = 0; - return -1; - } - - for(qty = 0; b < bend; b++) { - qty = (qty << 8) + *b; - } - - if(qty > RSIZE_MAX) { /* A bit of C11 validation */ - *qty_r = 0; - return -1; - } - - *qty_r = qty; - assert((size_t)len_len + len == (size_t)(bend - (const uint8_t *)ptr)); - return len_len + len; -} - -asn_dec_rval_t -SET_OF_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **struct_ptr, - const void *ptr, size_t size) { - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - asn_dec_rval_t rval = {RC_OK, 0}; - void *st = *struct_ptr; /* Target structure */ - asn_struct_ctx_t *ctx; /* Decoder context */ - size_t consumed_myself = 0; /* Consumed bytes from ptr. */ - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously. - */ - switch(ctx->phase) { - case 0: { - /* - * Fetch number of elements to decode. - */ - size_t length = 0; - size_t len_size = oer_fetch_quantity(ptr, size, &length); - switch(len_size) { - case 0: - RETURN(RC_WMORE); - case -1: - RETURN(RC_FAIL); - default: - ADVANCE(len_size); - ctx->left = length; - } - } - NEXT_PHASE(ctx); - /* FALL THROUGH */ - case 1: { - /* Decode components of the extension root */ - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - const void *base_ptr = ptr; - ber_tlv_len_t base_ctx_left = ctx->left; - - assert(td->elements_count == 1); - - ASN_DEBUG("OER SET OF %s Decoding PHASE 1", td->name); - - for(; ctx->left > 0; ctx->left--) { - asn_dec_rval_t rv = elm->type->op->oer_decoder( - opt_codec_ctx, elm->type, - elm->encoding_constraints.oer_constraints, &ctx->ptr, ptr, - size); - ADVANCE(rv.consumed); - switch(rv.code) { - case RC_OK: - if(ASN_SET_ADD(list, ctx->ptr) != 0) { - RETURN(RC_FAIL); - } else { - ctx->ptr = 0; - /* - * This check is to avoid compression bomb with - * specs like SEQUENCE/SET OF NULL which don't - * consume data at all. - */ - if(rv.consumed == 0 && base_ptr == ptr - && (base_ctx_left - ctx->left) > 200) { - ASN__DECODE_FAILED; - } - break; - } - case RC_WMORE: - RETURN(RC_WMORE); - case RC_FAIL: - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - SET_PHASE(ctx, 3); - RETURN(RC_FAIL); - } - } - /* Decoded decently. */ - NEXT_PHASE(ctx); - } - /* Fall through */ - case 2: - /* Ignore fully decoded */ - assert(ctx->left == 0); - RETURN(RC_OK); - case 3: - /* Failed to decode. */ - RETURN(RC_FAIL); - } - - return rval; -} - -static ssize_t -oer_put_quantity(size_t qty, asn_app_consume_bytes_f *cb, void *app_key) { - uint8_t buf[1 + sizeof(size_t)]; - uint8_t *b = &buf[sizeof(size_t)]; /* Last addressable */ - size_t encoded; - - do { - *b-- = qty; - qty >>= 8; - } while(qty); - - *b = sizeof(buf) - (b-buf) - 1; - encoded = sizeof(buf) - (b-buf); - if(cb(b, encoded, app_key) < 0) - return -1; - return encoded; -} - -/* - * Encode as Canonical OER. - */ -asn_enc_rval_t -SET_OF_encode_oer(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_TYPE_member_t *elm; - const asn_anonymous_set_ *list; - size_t computed_size = 0; - ssize_t qty_len; - int n; - - (void)constraints; - - if(!sptr) ASN__ENCODE_FAILED; - - elm = td->elements; - list = _A_CSET_FROM_VOID(sptr); - - qty_len = oer_put_quantity(list->count, cb, app_key); - if(qty_len < 0) { - ASN__ENCODE_FAILED; - } - computed_size += qty_len; - - for(n = 0; n < list->count; n++) { - void *memb_ptr = list->array[n]; - asn_enc_rval_t er = {0,0,0}; - er = elm->type->op->oer_encoder( - elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, - app_key); - if(er.encoded < 0) { - return er; - } else { - computed_size += er.encoded; - } - } - - { - asn_enc_rval_t erval = {0,0,0}; - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } -} - -#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.c deleted file mode 100644 index aefaefd..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.c +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.h deleted file mode 100644 index d80dea5..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constr_TYPE.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * 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/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constraints.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constraints.c deleted file mode 100644 index df3c6c1..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constraints.c +++ /dev/null @@ -1,93 +0,0 @@ -#include -#include - -int -asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Nothing to check */ - return 0; -} - -int -asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Unknown how to check */ - return 0; -} - -struct errbufDesc { - const asn_TYPE_descriptor_t *failed_type; - const void *failed_struct_ptr; - char *errbuf; - size_t errlen; -}; - -static void -_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, - const char *fmt, ...) { - struct errbufDesc *arg = key; - va_list ap; - ssize_t vlen; - ssize_t maxlen; - - arg->failed_type = td; - arg->failed_struct_ptr = sptr; - - maxlen = arg->errlen; - if(maxlen <= 0) - return; - - va_start(ap, fmt); - vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); - va_end(ap); - if(vlen >= maxlen) { - arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ - arg->errlen = maxlen - 1; /* Not counting termination */ - return; - } else if(vlen >= 0) { - arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ - arg->errlen = vlen; /* Not counting termination */ - } else { - /* - * The libc on this system is broken. - */ - vlen = sizeof("") - 1; - maxlen--; - arg->errlen = vlen < maxlen ? vlen : maxlen; - memcpy(arg->errbuf, "", arg->errlen); - arg->errbuf[arg->errlen] = 0; - } - - return; -} - -int -asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, char *errbuf, size_t *errlen) { - struct errbufDesc arg; - int ret; - - arg.failed_type = 0; - arg.failed_struct_ptr = 0; - arg.errbuf = errbuf; - arg.errlen = errlen ? *errlen : 0; - - ret = type_descriptor->encoding_constraints.general_constraints( - type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); - if(ret == -1 && errlen) *errlen = arg.errlen; - - return ret; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constraints.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constraints.h deleted file mode 100644 index 0bd86a9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/constraints.h +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN1_CONSTRAINTS_VALIDATOR_H -#define ASN1_CONSTRAINTS_VALIDATOR_H - -#include /* Platform-dependent types */ - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Validate the structure according to the ASN.1 constraints. - * If errbuf and errlen are given, they shall be pointing to the appropriate - * buffer space and its length before calling this function. Alternatively, - * they could be passed as NULL's. If constraints validation fails, - * errlen will contain the actual number of bytes taken from the errbuf - * to encode an error message (properly 0-terminated). - * - * RETURN VALUES: - * This function returns 0 in case all ASN.1 constraints are met - * and -1 if one or more constraints were failed. - */ -int asn_check_constraints( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Target language's structure */ - char *errbuf, /* Returned error description */ - size_t *errlen /* Length of the error description */ -); - - -/* - * Generic type for constraint checking callback, - * associated with every type descriptor. - */ -typedef int(asn_constr_check_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, - asn_app_constraint_failed_f *optional_callback, /* Log the error */ - void *optional_app_key /* Opaque key passed to a callback */ -); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ -asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ - -/* - * Invoke the callback with a complete error message. - */ -#define ASN__CTFAIL if(ctfailcb) ctfailcb - -#ifdef __cplusplus -} -#endif - -#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/converter-example.mk b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/converter-example.mk deleted file mode 100644 index ef02a5b..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/converter-example.mk +++ /dev/null @@ -1,33 +0,0 @@ -include ./Makefile.am.libasncodec - -LIBS += -lm -CFLAGS += $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION -I. -ASN_LIBRARY ?= libasncodec.a -ASN_PROGRAM ?= converter-example -ASN_PROGRAM_SRCS ?= \ - ./converter-example.c\ - ./pdu_collection.c - -all: $(ASN_PROGRAM) - -$(ASN_PROGRAM): $(ASN_LIBRARY) $(ASN_PROGRAM_SRCS:.c=.o) - $(CC) $(CFLAGS) $(CPPFLAGS) -o $(ASN_PROGRAM) $(ASN_PROGRAM_SRCS:.c=.o) $(LDFLAGS) $(ASN_LIBRARY) $(LIBS) - -$(ASN_LIBRARY): $(ASN_MODULE_SRCS:.c=.o) - $(AR) rcs $@ $(ASN_MODULE_SRCS:.c=.o) - -.SUFFIXES: -.SUFFIXES: .c .o - -.c.o: - $(CC) $(CFLAGS) -o $@ -c $< - -clean: - rm -f $(ASN_PROGRAM) $(ASN_LIBRARY) - rm -f $(ASN_MODULE_SRCS:.c=.o) $(ASN_PROGRAM_SRCS:.c=.o) - -regen: regenerate-from-asn1-source - -regenerate-from-asn1-source: - asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -D . /root/e2ap-v01.00.00.asn - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.c deleted file mode 100644 index 2c6a6f7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.c +++ /dev/null @@ -1,194 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, int constructed); - -/* - * The DER encoder of any type. - */ -asn_enc_rval_t -der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, - asn_app_consume_bytes_f *consume_bytes, void *app_key) { - ASN_DEBUG("DER encoder invoked for %s", - type_descriptor->name); - - /* - * Invoke type-specific encoder. - */ - return type_descriptor->op->der_encoder( - type_descriptor, struct_ptr, /* Pointer to the destination structure */ - 0, 0, consume_bytes, app_key); -} - -/* - * Argument type and callback necessary for der_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -/* - * A variant of the der_encode() which encodes the data into the provided buffer - */ -asn_enc_rval_t -der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg arg; - asn_enc_rval_t ec; - - arg.buffer = buffer; - arg.left = buffer_size; - - ec = type_descriptor->op->der_encoder(type_descriptor, - struct_ptr, /* Pointer to the destination structure */ - 0, 0, encode_to_buffer_cb, &arg); - if(ec.encoded != -1) { - assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); - /* Return the encoded contents size */ - } - return ec; -} - - -/* - * Write out leading TL[v] sequence according to the type definition. - */ -ssize_t -der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, - int tag_mode, int last_tag_form, - ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ - asn_app_consume_bytes_f *cb, void *app_key) { -#define ASN1_DER_MAX_TAGS_COUNT 4 - ber_tlv_tag_t - tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; - ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; - const ber_tlv_tag_t *tags; /* Copy of tags stream */ - int tags_count; /* Number of tags */ - size_t overall_length; - int i; - - ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", - sd->name, tag_mode, sd->tags_count, - ber_tlv_tag_string(tag), - tag_mode - ?(sd->tags_count+1 - -((tag_mode == -1) && sd->tags_count)) - :sd->tags_count - ); - - if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { - ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); - return -1; - } - - if(tag_mode) { - /* - * Instead of doing shaman dance like we do in ber_check_tags(), - * allocate a small array on the stack - * and initialize it appropriately. - */ - int stag_offset; - ber_tlv_tag_t *tags_buf = tags_buf_scratch; - tags_count = sd->tags_count - + 1 /* EXPLICIT or IMPLICIT tag is given */ - - ((tag_mode == -1) && sd->tags_count); - /* Copy tags over */ - tags_buf[0] = tag; - stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); - for(i = 1; i < tags_count; i++) - tags_buf[i] = sd->tags[i + stag_offset]; - tags = tags_buf; - } else { - tags = sd->tags; - tags_count = sd->tags_count; - } - - /* No tags to write */ - if(tags_count == 0) - return 0; - - /* - * Array of tags is initialized. - * Now, compute the size of the TLV pairs, from right to left. - */ - overall_length = struct_length; - for(i = tags_count - 1; i >= 0; --i) { - lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); - if(lens[i] == -1) return -1; - overall_length += lens[i]; - lens[i] = overall_length - lens[i]; - } - - if(!cb) return overall_length - struct_length; - - ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, - tags_count); - - /* - * Encode the TL sequence for real. - */ - for(i = 0; i < tags_count; i++) { - ssize_t len; - int _constr; - - /* Check if this tag happens to be constructed */ - _constr = (last_tag_form || i < (tags_count - 1)); - - len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); - if(len == -1) return -1; - } - - return overall_length - struct_length; -} - -static ssize_t -der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, - int constructed) { - uint8_t buf[32]; - size_t size = 0; - int buf_size = cb?sizeof(buf):0; - ssize_t tmp; - - /* Serialize tag (T from TLV) into possibly zero-length buffer */ - tmp = ber_tlv_tag_serialize(tag, buf, buf_size); - if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; - size += tmp; - - /* Serialize length (L from TLV) into possibly zero-length buffer */ - tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); - if(tmp == -1) return -1; - size += tmp; - - if(size > sizeof(buf)) - return -1; - - /* - * If callback is specified, invoke it, and check its return value. - */ - if(cb) { - if(constructed) *buf |= 0x20; - if(cb(buf, size, app_key) < 0) - return -1; - } - - return size; -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.h deleted file mode 100644 index e93944e..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/der_encoder.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _DER_ENCODER_H_ -#define _DER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The DER encoder of any type. May be invoked by the application. - * Produces DER- and BER-compliant encoding. (DER is a subset of BER). - * - * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data - * produced by der_encode(). - */ -asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* A variant of der_encode() which encodes data into the pre-allocated buffer */ -asn_enc_rval_t der_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (maximum) */ -); - -/* - * Type of the generic DER encoder. - */ -typedef asn_enc_rval_t(der_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Write out leading TL[v] sequence according to the type definition. - */ -ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, - size_t struct_length, - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - int last_tag_form, /* {0,!0}: prim, constructed */ - ber_tlv_tag_t tag, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _DER_ENCODER_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.c deleted file mode 100644 index 0701738..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* - * The OER decoder of any type. - */ -asn_dec_rval_t -oer_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, - const void *ptr, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return type_descriptor->op->oer_decoder(opt_codec_ctx, type_descriptor, 0, - struct_ptr, /* Pointer to the destination structure */ - ptr, size /* Buffer and its size */ - ); -} - -/* - * Open Type is encoded as a length (#8.6) followed by that number of bytes. - * Since we're just skipping, reading the length would be enough. - */ -ssize_t -oer_open_type_skip(const void *bufptr, size_t size) { - size_t len = 0; - return oer_fetch_length(bufptr, size, &len); -} - -/* - * Read the Open Type (X.696 (08/2015), #30). - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - */ -ssize_t -oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *td, - const asn_oer_constraints_t *constraints, void **struct_ptr, - const void *bufptr, size_t size) { - asn_dec_rval_t dr; - size_t container_len = 0; - ssize_t len_len; - enum asn_struct_free_method dispose_method = - (*struct_ptr) ? ASFM_FREE_UNDERLYING_AND_RESET : ASFM_FREE_EVERYTHING; - - /* Get the size of a length determinant */ - len_len = oer_fetch_length(bufptr, size, &container_len); - if(len_len <= 0) { - return len_len; /* Error or more data expected */ - } - - /* - * len_len can't be bigger than size, but size without len_len - * should be bigger or equal to container length - */ - if(size - len_len < container_len) { - /* More data is expected */ - return 0; - } - - dr = td->op->oer_decoder(opt_codec_ctx, td, constraints, struct_ptr, - (const uint8_t *)bufptr + len_len, container_len); - if(dr.code == RC_OK) { - return len_len + container_len; - } else { - /* Even if RC_WMORE, we can't get more data into a closed container. */ - td->op->free_struct(td, *struct_ptr, dispose_method); - *struct_ptr = NULL; - return -1; - } -} - - -asn_dec_rval_t -oer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, void **sptr, - const void *ptr, size_t size) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; - asn_dec_rval_t rval = {RC_OK, 0}; - size_t expected_length = 0; - ssize_t len_len; - - (void)td; - (void)opt_codec_ctx; - (void)constraints; - - if(!st) { - st = (ASN__PRIMITIVE_TYPE_t *)(*sptr = CALLOC( - 1, sizeof(ASN__PRIMITIVE_TYPE_t))); - if(!st) ASN__DECODE_FAILED; - } - - - /* - * X.696 (08/2015) #27.2 - * Encode length determinant as _number of octets_, but only - * if upper bound is not equal to lower bound. - */ - len_len = oer_fetch_length(ptr, size, &expected_length); - if(len_len > 0) { - rval.consumed = len_len; - ptr = (const char *)ptr + len_len; - size -= len_len; - } else if(len_len == 0) { - ASN__DECODE_STARVED; - } else if(len_len < 0) { - ASN__DECODE_FAILED; - } - - if(size < expected_length) { - ASN__DECODE_STARVED; - } else { - uint8_t *buf = MALLOC(expected_length + 1); - if(buf == NULL) { - ASN__DECODE_FAILED; - } else { - memcpy(buf, ptr, expected_length); - buf[expected_length] = '\0'; - } - FREEMEM(st->buf); - st->buf = buf; - st->size = expected_length; - - rval.consumed += expected_length; - return rval; - } -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.h deleted file mode 100644 index 40992e9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_decoder.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef OER_DECODER_H -#define OER_DECODER_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ -struct asn_codec_ctx_s; /* Forward declaration */ - -/* - * The Octet Encoding Rules (OER, X.696 08/2015) decoder for any given type. - * This function may be invoked directly by the application. - * Parses CANONICAL-OER and BASIC-OER. - */ -asn_dec_rval_t oer_decode(const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ - ); - -/* - * Type of generic function which decodes the byte stream into the structure. - */ -typedef asn_dec_rval_t(oer_type_decoder_f)( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_oer_constraints_t *constraints, - void **struct_ptr, - const void *buf_ptr, - size_t size); - -/* - * Swallow the Open Type (X.696 (08/2015), #30) into /dev/null. - * RETURN VALUES: - * -1: Fatal error deciphering length. - * 0: More data expected than bufptr contains. - * >0: Number of bytes used from bufptr. - */ -ssize_t oer_open_type_skip(const void *bufptr, size_t size); - -/* - * Read the Open Type (X.696 (08/2015), #30). - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - */ -ssize_t oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *td, - const asn_oer_constraints_t *constraints, - void **struct_ptr, const void *bufptr, size_t size); - -/* - * Length-prefixed buffer decoding for primitive types. - */ -oer_type_decoder_f oer_decode_primitive; - - -#ifdef __cplusplus -} -#endif - -#endif /* OER_DECODER_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.c deleted file mode 100644 index a284cc2..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* - * The OER encoder of any type. - */ -asn_enc_rval_t -oer_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, - asn_app_consume_bytes_f *consume_bytes, void *app_key) { - ASN_DEBUG("OER encoder invoked for %s", type_descriptor->name); - - /* - * Invoke type-specific encoder. - */ - return type_descriptor->op->oer_encoder( - type_descriptor, 0, - struct_ptr, /* Pointer to the destination structure */ - consume_bytes, app_key); -} - -/* - * Argument type and callback necessary for oer_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int -encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -/* - * A variant of the oer_encode() which encodes the data into the provided buffer - */ -asn_enc_rval_t -oer_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, - const asn_oer_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (maximum) */ -) { - enc_to_buf_arg arg; - asn_enc_rval_t ec; - - arg.buffer = buffer; - arg.left = buffer_size; - - if(type_descriptor->op->oer_encoder == NULL) { - ec.encoded = -1; - ec.failed_type = type_descriptor; - ec.structure_ptr = struct_ptr; - ASN_DEBUG("OER encoder is not defined for %s", - type_descriptor->name); - } else { - ec = type_descriptor->op->oer_encoder( - type_descriptor, constraints, - struct_ptr, /* Pointer to the destination structure */ - encode_to_buffer_cb, &arg); - if(ec.encoded != -1) { - assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); - /* Return the encoded contents size */ - } - } - return ec; -} - -asn_enc_rval_t -oer_encode_primitive(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - ssize_t ret; - - (void)constraints; - - if(!st) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s (%" ASN_PRI_SIZE " bytes)", td ? td->name : "", st->size); - - /* - * X.696 (08/2015) #27.2 - */ - ret = oer_serialize_length(st->size, cb, app_key); - if(ret < 0) { - ASN__ENCODE_FAILED; - } - er.encoded += ret; - - er.encoded += st->size; - if(cb(st->buf, st->size, app_key) < 0) { - ASN__ENCODE_FAILED; - } else { - ASN__ENCODED_OK(er); - } -} - -static int -oer__count_bytes(const void *buffer, size_t size, void *bytes_ptr) { - size_t *bytes = bytes_ptr; - (void)buffer; - *bytes += size; - return 0; -} - -ssize_t -oer_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_oer_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t serialized_byte_count = 0; - asn_enc_rval_t er = {0,0,0}; - ssize_t len_len; - - er = td->op->oer_encoder(td, constraints, sptr, oer__count_bytes, - &serialized_byte_count); - if(er.encoded < 0) return -1; - assert(serialized_byte_count == (size_t)er.encoded); - - len_len = oer_serialize_length(serialized_byte_count, cb, app_key); - if(len_len == -1) return -1; - - er = td->op->oer_encoder(td, constraints, sptr, cb, app_key); - if(er.encoded < 0) return -1; - assert(serialized_byte_count == (size_t)er.encoded); - - return len_len + er.encoded; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.h deleted file mode 100644 index 6a7b681..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_encoder.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef OER_ENCODER_H -#define OER_ENCODER_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The Octet Encoding Rules (OER, X.696 08/2015) encoder for any type. - * This function may be invoked directly by the application. - * Produces CANONICAL-OER output compatible with CANONICAL-OER - * and BASIC-OER decoders. - */ -asn_enc_rval_t oer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* A variant of oer_encode() which encodes data into the pre-allocated buffer */ -asn_enc_rval_t oer_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_oer_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (maximum) */ -); - -/* - * Type of the generic OER encoder. - */ -typedef asn_enc_rval_t(oer_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_oer_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - -/* - * Write out the Open Type (X.696 (08/2015), #30). - * RETURN VALUES: - * -1: Fatal error encoding the type. - * >0: Number of bytes serialized. - */ -ssize_t oer_open_type_put(const struct asn_TYPE_descriptor_s *td, - const asn_oer_constraints_t *constraints, - const void *struct_ptr, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key); - - -/* - * Length-prefixed buffer encoding for primitive types. - */ -oer_type_encoder_f oer_encode_primitive; - -#ifdef __cplusplus -} -#endif - -#endif /* OER_ENCODER_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.c deleted file mode 100644 index b15a3bc..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -#include - -/* - * Fetch the length determinant (X.696 08/2015, #8.6) into *len_r. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - */ -ssize_t -oer_fetch_length(const void *bufptr, size_t size, size_t *len_r) { - uint8_t first_byte; - size_t len_len; /* Length of the length determinant */ - const uint8_t *b; - const uint8_t *bend; - size_t len; - - if(size == 0) { - *len_r = 0; - return 0; - } - - first_byte = *(const uint8_t *)bufptr; - if((first_byte & 0x80) == 0) { /* Short form */ - *len_r = first_byte; /* 0..127 */ - return 1; - } - - len_len = (first_byte & 0x7f); - if((1 + len_len) > size) { - *len_r = 0; - return 0; - } - - b = (const uint8_t *)bufptr + 1; - bend = b + len_len; - - for(; b < bend && *b == 0; b++) { - /* Skip the leading 0-bytes */ - } - - if((bend - b) > (ssize_t)sizeof(size_t)) { - /* Length is not representable by the native size_t type */ - *len_r = 0; - return -1; - } - - for(len = 0; b < bend; b++) { - len = (len << 8) + *b; - } - - if(len > RSIZE_MAX) { /* A bit of C11 validation */ - *len_r = 0; - return -1; - } - - *len_r = len; - assert(len_len + 1 == (size_t)(bend - (const uint8_t *)bufptr)); - return len_len + 1; -} - - -/* - * Serialize OER length. Returns the number of bytes serialized - * or -1 if a given callback returned with negative result. - */ -ssize_t -oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, - void *app_key) { - uint8_t scratch[1 + sizeof(length)]; - uint8_t *sp = scratch; - int littleEndian = 1; /* Run-time detection */ - const uint8_t *pstart; - const uint8_t *pend; - const uint8_t *p; - int add; - - if(length <= 127) { - uint8_t b = length; - if(cb(&b, 1, app_key) < 0) { - return -1; - } - return 1; - } - - if(*(char *)&littleEndian) { - pstart = (const uint8_t *)&length + sizeof(length) - 1; - pend = (const uint8_t *)&length; - add = -1; - } else { - pstart = (const uint8_t *)&length; - pend = pstart + sizeof(length); - add = 1; - } - - for(p = pstart; p != pend; p += add) { - /* Skip leading zeros. */ - if(*p) break; - } - - for(sp = scratch + 1; ; p += add) { - *sp++ = *p; - if(p == pend) break; - } - assert((sp - scratch) - 1 <= 0x7f); - scratch[0] = 0x80 + ((sp - scratch) - 1); - - if(cb(scratch, sp - scratch, app_key) < 0) { - return -1; - } - - return sp - scratch; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.h deleted file mode 100644 index dbc9b5f..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/oer_support.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef OER_SUPPORT_H -#define OER_SUPPORT_H - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Pre-computed OER constraints. - */ -typedef struct asn_oer_constraint_number_s { - unsigned width; /* ±8,4,2,1 fixed bytes */ - unsigned positive; /* 1 for unsigned number, 0 for signed */ -} asn_oer_constraint_number_t; -typedef struct asn_oer_constraints_s { - asn_oer_constraint_number_t value; - ssize_t size; /* -1 (no constraint) or >= 0 */ -} asn_oer_constraints_t; - - -/* - * Fetch the length determinant (X.696 (08/2015), #8.6) into *len_r. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - */ -ssize_t oer_fetch_length(const void *bufptr, size_t size, size_t *len_r); - -/* - * Serialize OER length. Returns the number of bytes serialized - * or -1 if a given callback returned with negative result. - */ -ssize_t oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, void *app_key); - - -#ifdef __cplusplus -} -#endif - -#endif /* OER_SUPPORT_H */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/pdu_collection.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/pdu_collection.c deleted file mode 100644 index ea8309c..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/pdu_collection.c +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - */ - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -extern struct asn_TYPE_descriptor_s asn_DEF_E2AP_PDU; - - -struct asn_TYPE_descriptor_s *asn_pdu_collection[] = { - /* From module E2AP-PDU-Descriptions in /root/e2ap-v01.00.00.asn */ - &asn_DEF_E2AP_PDU, - 0 -}; - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.c deleted file mode 100644 index 8a3e39d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.c +++ /dev/null @@ -1,185 +0,0 @@ -#include -#include -#include - -/* - * Decode a "Production of a complete encoding", X.691#10.1. - * The complete encoding contains at least one byte, and is an integral - * multiple of 8 bytes. - */ -asn_dec_rval_t -uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -uper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->uper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %ld, counted %ld", - (long)rval.consumed, (long)pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - -asn_dec_rval_t -aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -aper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->aper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %zu, counted %zu", - rval.consumed, pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.h deleted file mode 100644 index eea474a..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_decoder.h +++ /dev/null @@ -1,82 +0,0 @@ -/*- - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_DECODER_H_ -#define _PER_DECODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. - * On success, this call always returns (.consumed >= 1), as per #11.1.3. - */ -asn_dec_rval_t uper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ -); - -/* - * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t uper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of the input data buffer, in bytes */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ -); - -/* - * Aligned PER decoder of a "complete encoding" as per X.691#10.1. - * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. - */ -asn_dec_rval_t aper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ - ); - -/* - * Aligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t aper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of data buffer */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ - ); - -/* - * Type of the type-specific PER decoder function. - */ -typedef asn_dec_rval_t(per_type_decoder_f)( - const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, void **struct_ptr, - asn_per_data_t *per_data); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_DECODER_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.c deleted file mode 100644 index a35e1f0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.c +++ /dev/null @@ -1,265 +0,0 @@ -#include -#include -#include - -static int _uper_encode_flush_outp(asn_per_outp_t *po); - -static int -ignore_output(const void *data, size_t size, void *app_key) { - (void)data; - (void)size; - (void)app_key; - return 0; -} - -asn_enc_rval_t -uper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->uper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb ? cb : ignore_output; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->uper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; - } - - return er; -} - -/* - * Argument type and callback necessary for uper_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -asn_enc_rval_t -uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); - - return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -typedef struct enc_dyn_arg { - void *buffer; - size_t length; - size_t allocated; -} enc_dyn_arg; -static int -encode_dyn_cb(const void *buffer, size_t size, void *key) { - enc_dyn_arg *arg = key; - if(arg->length + size >= arg->allocated) { - size_t new_size = arg->allocated ? arg->allocated : 8; - void *p; - - do { - new_size <<= 2; - } while(arg->length + size >= new_size); - - p = REALLOC(arg->buffer, new_size); - if(!p) { - FREEMEM(arg->buffer); - memset(arg, 0, sizeof(*arg)); - return -1; - } - arg->buffer = p; - arg->allocated = new_size; - } - memcpy(((char *)arg->buffer) + arg->length, buffer, size); - arg->length += size; - return 0; -} -ssize_t -uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -/* - * Internally useful functions. - */ - -/* Flush partially filled buffer */ -static int -_uper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); -} - -asn_enc_rval_t -aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); - - return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -ssize_t -aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -static int -_aper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - if (po->output) { - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); - } - return 0; -} - -asn_enc_rval_t -aper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->aper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->aper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_aper_encode_flush_outp(&po)) - ASN__ENCODE_FAILED; - } - - return er; -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.h deleted file mode 100644 index b615ef0..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_encoder.h +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_ENCODER_H_ -#define _PER_ENCODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. Use the following formula to convert to bytes: - * bytes = ((.encoded + 7) / 8) - */ -asn_enc_rval_t uper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -asn_enc_rval_t aper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -/* - * A variant of uper_encode() which encodes data into the existing buffer - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. - */ -asn_enc_rval_t uper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); - -asn_enc_rval_t aper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); -/* - * A variant of uper_encode_to_buffer() which allocates buffer itself. - * Returns the number of bytes in the buffer or -1 in case of failure. - * WARNING: This function produces a "Production of the complete encoding", - * with length of at least one octet. Contrast this to precise bit-packing - * encoding of uper_encode() and uper_encode_to_buffer(). - */ -ssize_t uper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void **buffer_r /* Buffer allocated and returned */ -); - -ssize_t -aper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *td, - const asn_per_constraints_t *constraints, - const void *sptr, - void **buffer_r -); - -/* - * Type of the generic PER encoder function. - */ -typedef asn_enc_rval_t(per_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, const void *struct_ptr, - asn_per_outp_t *per_output); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_ENCODER_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_opentype.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_opentype.c deleted file mode 100644 index 28f3cb6..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_opentype.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * Copyright (c) 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -typedef struct uper_ugot_key { - asn_per_data_t oldpd; /* Old per data source */ - size_t unclaimed; - size_t ot_moved; /* Number of bits moved by OT processing */ - int repeat; -} uper_ugot_key; - -static int uper_ugot_refill(asn_per_data_t *pd); -static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); -static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -/* - * Encode an "open type field". - * #10.1, #10.2 - */ -int -uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, - size); - - bptr = buf; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE - " to %s and allowing to save %" ASN_PRI_SSIZE, - size, td->name, may_save); - if(may_save < 0) break; - if(per_put_many_bits(po, bptr, may_save * 8)) break; - bptr = (char *)bptr + may_save; - size -= may_save; - if(need_eom && uper_put_length(po, 0, 0)) { - FREEMEM(buf); - return -1; - } - } while(size); - - FREEMEM(buf); - if(size) return -1; - - return 0; -} - -static asn_dec_rval_t -uper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = uper_get_length(pd, -1, 0, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -static asn_dec_rval_t CC_NOTUSED -uper_open_type_get_complex(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - uper_ugot_key arg; - asn_dec_rval_t rv; - ssize_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s from %s", td->name, - asn_bit_data_string(pd)); - arg.oldpd = *pd; - arg.unclaimed = 0; - arg.ot_moved = 0; - arg.repeat = 1; - pd->refill = uper_ugot_refill; - pd->refill_key = &arg; - pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ - pd->moved = 0; /* This now counts the open type size in bits */ - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); - ASN_DEBUG_INDENT_ADD(-4); - -#define UPDRESTOREPD do { \ - /* buffer and nboff are valid, preserve them. */ \ - pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ - pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ - pd->refill = arg.oldpd.refill; \ - pd->refill_key = arg.oldpd.refill_key; \ - } while(0) - - if(rv.code != RC_OK) { - UPDRESTOREPD; - return rv; - } - - ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, - asn_bit_data_string(pd), - asn_bit_data_string(&arg.oldpd), - (int)arg.unclaimed, (int)arg.repeat); - - padding = pd->moved % 8; - if(padding) { - int32_t pvalue; - if(padding > 7) { - ASN_DEBUG("Too large padding %d in open type", - (int)padding); - rv.code = RC_FAIL; - UPDRESTOREPD; - return rv; - } - padding = 8 - padding; - ASN_DEBUG("Getting padding of %d bits", (int)padding); - pvalue = per_get_few_bits(pd, padding); - switch(pvalue) { - case -1: - ASN_DEBUG("Padding skip failed"); - UPDRESTOREPD; - ASN__DECODE_STARVED; - case 0: break; - default: - ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", - (int)padding, (int)pvalue); - UPDRESTOREPD; - ASN__DECODE_FAILED; - } - } - if(pd->nboff != pd->nbits) { - ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, - asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); - if(1) { - UPDRESTOREPD; - ASN__DECODE_FAILED; - } else { - arg.unclaimed += pd->nbits - pd->nboff; - } - } - - /* Adjust pd back so it points to original data */ - UPDRESTOREPD; - - /* Skip data not consumed by the decoder */ - if(arg.unclaimed) { - ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); - switch(per_skip_bits(pd, arg.unclaimed)) { - case -1: - ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); - ASN__DECODE_STARVED; - case 0: - ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); - break; - default: - /* Padding must be blank */ - ASN_DEBUG("Non-blank unconsumed padding"); - ASN__DECODE_FAILED; - } - arg.unclaimed = 0; - } - - if(arg.repeat) { - ASN_DEBUG("Not consumed the whole thing"); - rv.code = RC_FAIL; - return rv; - } - - return rv; -} - - -asn_dec_rval_t -uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_TYPE_operation_t s_op; - asn_dec_rval_t rv; - - s_td.name = ""; - s_td.op = &s_op; - s_op.uper_decoder = uper_sot_suck; - - rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - -/* - * Internal functions. - */ - -static asn_dec_rval_t -uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - - (void)ctx; - (void)td; - (void)constraints; - (void)sptr; - - while(per_get_few_bits(pd, 1) >= 0); - - rv.code = RC_OK; - rv.consumed = pd->moved; - - return rv; -} - -static int -uper_ugot_refill(asn_per_data_t *pd) { - uper_ugot_key *arg = pd->refill_key; - ssize_t next_chunk_bytes, next_chunk_bits; - ssize_t avail; - - asn_per_data_t *oldpd = &arg->oldpd; - - ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", - (long)pd->moved, (long)oldpd->moved); - - /* Advance our position to where pd is */ - oldpd->buffer = pd->buffer; - oldpd->nboff = pd->nboff; - oldpd->nbits -= pd->moved - arg->ot_moved; - oldpd->moved += pd->moved - arg->ot_moved; - arg->ot_moved = pd->moved; - - if(arg->unclaimed) { - /* Refill the container */ - if(per_get_few_bits(oldpd, 1)) - return -1; - if(oldpd->nboff == 0) { - assert(0); - return -1; - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff - 1; - pd->nbits = oldpd->nbits; - ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", - (long)pd->moved); - return 0; - } - - if(!arg->repeat) { - ASN_DEBUG("Want more but refill doesn't have it"); - return -1; - } - - next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); - ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", - (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); - if(next_chunk_bytes < 0) return -1; - if(next_chunk_bytes == 0) { - pd->refill = 0; /* No more refills, naturally */ - assert(!arg->repeat); /* Implementation guarantee */ - } - next_chunk_bits = next_chunk_bytes << 3; - avail = oldpd->nbits - oldpd->nboff; - if(avail >= next_chunk_bits) { - pd->nbits = oldpd->nboff + next_chunk_bits; - arg->unclaimed = 0; - ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", - (long)next_chunk_bits, (long)oldpd->moved, - (long)oldpd->nboff, (long)oldpd->nbits, - (long)(oldpd->nbits - oldpd->nboff)); - } else { - pd->nbits = oldpd->nbits; - arg->unclaimed = next_chunk_bits - avail; - ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", - (long)avail, (long)next_chunk_bits, - (long)arg->unclaimed); - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff; - ASN_DEBUG("Refilled pd%s old%s", - asn_bit_data_string(pd), asn_bit_data_string(oldpd)); - return 0; -} - -static int -per_skip_bits(asn_per_data_t *pd, int skip_nbits) { - int hasNonZeroBits = 0; - while(skip_nbits > 0) { - int skip; - - /* per_get_few_bits() is more efficient when nbits <= 24 */ - if(skip_nbits < 24) - skip = skip_nbits; - else - skip = 24; - skip_nbits -= skip; - - switch(per_get_few_bits(pd, skip)) { - case -1: return -1; /* Starving */ - case 0: continue; /* Skipped empty space */ - default: hasNonZeroBits = 1; continue; - } - } - return hasNonZeroBits; -} - -static asn_dec_rval_t -aper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = aper_get_length(pd, -1, -1, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -int -aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - size_t toGo; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - for(bptr = buf, toGo = size; toGo;) { - ssize_t maySave = aper_put_length(po, -1, toGo); - if(maySave < 0) break; - if(per_put_many_bits(po, bptr, maySave * 8)) break; - bptr = (char *)bptr + maySave; - toGo -= maySave; - } - - FREEMEM(buf); - if(toGo) return -1; - - ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", - td->name, size); - - return 0; -} - -asn_dec_rval_t -aper_open_type_get(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_dec_rval_t rv; - asn_TYPE_operation_t op_t; - - memset(&op_t, 0, sizeof(op_t)); - s_td.name = ""; - s_td.op = &op_t; - s_td.op->aper_decoder = uper_sot_suck; - - rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_opentype.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_opentype.h deleted file mode 100644 index 1493b2d..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_opentype.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_OPENTYPE_H_ -#define _PER_OPENTYPE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, - asn_per_data_t *pd); - -/* - * X.691 (2015/08), #11.2 - * Returns -1 if error is encountered. 0 if all OK. - */ -int uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - - -int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); - -int aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_OPENTYPE_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_support.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_support.c deleted file mode 100644 index 2c87a76..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_support.c +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * X.691-201508 #10.9 General rules for encoding a length determinant. - * Get the optionally constrained length "n" from the stream. - */ -ssize_t -uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, - int *repeat) { - ssize_t value; - - *repeat = 0; - - /* #11.9.4.1 Encoding if constrained (according to effective bits) */ - if(ebits >= 0 && ebits <= 16) { - value = per_get_few_bits(pd, ebits); - if(value >= 0) value += lower_bound; - return value; - } - - value = per_get_few_bits(pd, 8); - if((value & 0x80) == 0) { /* #11.9.3.6 */ - return (value & 0x7F); - } else if((value & 0x40) == 0) { /* #11.9.3.7 */ - /* bit 8 ... set to 1 and bit 7 ... set to zero */ - value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); - return value; /* potential -1 from per_get_few_bits passes through. */ - } else if(value < 0) { - ASN_DEBUG("END of stream reached for PER"); - return -1; - } - value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ - if(value < 1 || value > 4) { - return -1; /* Prohibited by #11.9.3.8 */ - } - *repeat = 1; - return (16384 * value); -} - -/* - * Get the normally small length "n". - * This procedure used to decode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -ssize_t -uper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%d", (int)length); - return length; - } else { - int repeat; - length = uper_get_length(pd, -1, 0, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -/* - * Get the normally small non-negative whole number. - * X.691, #10.6 - */ -ssize_t -uper_get_nsnnwn(asn_per_data_t *pd) { - ssize_t value; - - value = per_get_few_bits(pd, 7); - if(value & 64) { /* implicit (value < 0) */ - value &= 63; - value <<= 2; - value |= per_get_few_bits(pd, 2); - if(value & 128) /* implicit (value < 0) */ - return -1; - if(value == 0) - return 0; - if(value >= 3) - return -1; - value = per_get_few_bits(pd, 8 * value); - return value; - } - - return value; -} - -/* - * X.691-11/2008, #11.6 - * Encoding of a normally small non-negative whole number - */ -int -uper_put_nsnnwn(asn_per_outp_t *po, int n) { - int bytes; - - if(n <= 63) { - if(n < 0) return -1; - return per_put_few_bits(po, n, 7); - } - if(n < 256) - bytes = 1; - else if(n < 65536) - bytes = 2; - else if(n < 256 * 65536) - bytes = 3; - else - return -1; /* This is not a "normally small" value */ - if(per_put_few_bits(po, bytes, 8)) - return -1; - - return per_put_few_bits(po, n, 8 * bytes); -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { - unsigned long lhalf; /* Lower half of the number*/ - long half; - - if(nbits <= 31) { - half = per_get_few_bits(pd, nbits); - if(half < 0) return -1; - *out_value = half; - return 0; - } - - if((size_t)nbits > 8 * sizeof(*out_value)) - return -1; /* RANGE */ - - half = per_get_few_bits(pd, 31); - if(half < 0) return -1; - - if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) - return -1; - - *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; - return 0; -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int -uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, - int nbits) { - if(nbits <= 31) { - return per_put_few_bits(po, v, nbits); - } else { - /* Put higher portion first, followed by lower 31-bit */ - if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) - return -1; - return per_put_few_bits(po, v, 31); - } -} - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "n" (or part of it) into the stream. - */ -ssize_t -uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { - int dummy = 0; - if(!need_eom) need_eom = &dummy; - - if(length <= 127) { /* #11.9.3.6 */ - *need_eom = 0; - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } else if(length < 16384) { /* #10.9.3.7 */ - *need_eom = 0; - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - } - - *need_eom = 0 == (length & 16383); - length >>= 14; - if(length > 4) { - *need_eom = 0; - length = 4; - } - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); - -} - - -/* - * Put the normally small length "n" into the stream. - * This procedure used to encode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -int -uper_put_nslength(asn_per_outp_t *po, size_t length) { - if(length <= 64) { - /* #11.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length - 1, 7) ? -1 : 0; - } else { - int need_eom = 0; - if(uper_put_length(po, length, &need_eom) != (ssize_t)length - || need_eom) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -static int -per__long_range(long lb, long ub, unsigned long *range_r) { - unsigned long bounds_range; - if((ub < 0) == (lb < 0)) { - bounds_range = ub - lb; - } else if(lb < 0) { - assert(ub >= 0); - bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); - } else { - assert(!"Unreachable"); - return -1; - } - *range_r = bounds_range; - return 0; -} - -int -per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { - unsigned long range; - - assert(lb <= ub); - - if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { - /* Range error. */ - return -1; - } - - /* - * Fundamentally what we're doing is returning (v-lb). - * However, this triggers undefined behavior when the word width - * of signed (v) is the same as the size of unsigned (*output). - * In practice, it triggers the UndefinedSanitizer. Therefore we shall - * compute the ranges accurately to avoid C's undefined behavior. - */ - if((v < 0) == (lb < 0)) { - *output = v-lb; - return 0; - } else if(v < 0) { - unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else if(lb < 0) { - unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else { - assert(!"Unreachable"); - return -1; - } -} - -int -per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { - unsigned long range; - - if(per__long_range(lb, ub, &range) != 0) { - return -1; - } - - if(inp > range) { - /* - * We can encode something in the given number of bits that technically - * exceeds the range. This is an avenue for security errors, - * so we don't allow that. - */ - return -1; - } - - if(inp <= LONG_MAX) { - *outp = (long)inp + lb; - } else { - *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); - } - - return 0; -} - -int32_t -aper_get_align(asn_per_data_t *pd) { - - if(pd->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); - return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); - } - return 0; -} - -ssize_t -aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { - ssize_t value; - - *repeat = 0; - - // First check effective_bits parameter. - if (ebits >= 0) { - if (range <= 65536 && range >= 0) - return aper_get_nsnnwn(pd, range); - } - - if (aper_get_align(pd) < 0) - return -1; - - if(ebits >= 0) return per_get_few_bits(pd, ebits); - - value = per_get_few_bits(pd, 8); - if(value < 0) return -1; - if((value & 128) == 0) /* #10.9.3.6 */ - return (value & 0x7F); - if((value & 64) == 0) { /* #10.9.3.7 */ - value = ((value & 63) << 8) | per_get_few_bits(pd, 8); - if(value < 0) return -1; - return value; - } - value &= 63; /* this is "m" from X.691, #10.9.3.8 */ - if(value < 1 || value > 4) - return -1; - *repeat = 1; - return (16384 * value); -} - -ssize_t -aper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%ld", length); - return length; - } else { - int repeat; - length = aper_get_length(pd, -1, -1, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -ssize_t -aper_get_nsnnwn(asn_per_data_t *pd, int range) { - ssize_t value; - int bytes = 0; - - ASN_DEBUG("getting nsnnwn with range %d", range); - - if(range <= 255) { - int i; - - if (range < 0) return -1; - /* 1 -> 8 bits */ - for (i = 1; i <= 8; i++) { - int upper = 1 << i; - if (upper >= range) - break; - } - value = per_get_few_bits(pd, i); - return value; - } else if (range == 256){ - /* 1 byte */ - bytes = 1; - } else if (range <= 65536) { - /* 2 bytes */ - bytes = 2; - } else { - return -1; - } - if (aper_get_align(pd) < 0) - return -1; - value = per_get_few_bits(pd, 8 * bytes); - return value; -} - -int aper_put_align(asn_per_outp_t *po) { - - if(po->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); - if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) - return -1; - } - return 0; -} - -ssize_t -aper_put_length(asn_per_outp_t *po, int range, size_t length) { - - ASN_DEBUG("APER put length %zu with range %d", length, range); - - /* 10.9 X.691 Note 2 */ - if (range <= 65536 && range >= 0) - return aper_put_nsnnwn(po, range, length); - - if (aper_put_align(po) < 0) - return -1; - - if(length <= 127) /* #10.9.3.6 */{ - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } - else if(length < 16384) /* #10.9.3.7 */ - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - - length >>= 14; - if(length > 4) length = 4; - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); -} - - -int -aper_put_nslength(asn_per_outp_t *po, size_t length) { - - if(length <= 64) { - /* #10.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length-1, 7) ? -1 : 0; - } else { - if(aper_put_length(po, -1, length) != (ssize_t)length) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -int -aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { - int bytes; - - ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); - /* 10.5.7.1 X.691 */ - if(range < 0) { - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (number <= bits) - break; - } - bytes = i; - assert(i <= 4); - } - if(range <= 255) { - int i; - for (i = 1; i <= 8; i++) { - int bits = 1 << i; - if (range <= bits) - break; - } - return per_put_few_bits(po, number, i); - } else if(range == 256) { - bytes = 1; - } else if(range <= 65536) { - bytes = 2; - } else { /* Ranges > 64K */ - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (range <= bits) - break; - } - assert(i <= 4); - bytes = i; - } - if(aper_put_align(po) < 0) /* Aligning on octet */ - return -1; -/* if(per_put_few_bits(po, bytes, 8)) - return -1; -*/ - return per_put_few_bits(po, number, 8 * bytes); -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_support.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_support.h deleted file mode 100644 index 23079c9..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/per_support.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_SUPPORT_H_ -#define _PER_SUPPORT_H_ - -#include /* Platform-specific types */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Pre-computed PER constraints. - */ -typedef struct asn_per_constraint_s { - enum asn_per_constraint_flags { - APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ - APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ - APC_CONSTRAINED = 0x2, /* Fully constrained */ - APC_EXTENSIBLE = 0x4 /* May have extension */ - } flags; - int range_bits; /* Full number of bits in the range */ - int effective_bits; /* Effective bits */ - long lower_bound; /* "lb" value */ - long upper_bound; /* "ub" value */ -} asn_per_constraint_t; -typedef struct asn_per_constraints_s { - asn_per_constraint_t value; - asn_per_constraint_t size; - int (*value2code)(unsigned int value); - int (*code2value)(unsigned int code); -} asn_per_constraints_t; - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_data_s asn_per_data_t; -#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) -#define per_get_undo(data, bits) asn_get_undo(data, bits) -#define per_get_many_bits(data, dst, align, bits) \ - asn_get_many_bits(data, dst, align, bits) - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Get the length "n" from the Unaligned PER stream. - */ -ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, - size_t lower_bound, int *repeat); - -ssize_t aper_get_length(asn_per_data_t *pd, int range, - int effective_bound_bits, int *repeat); - -/* - * Get the normally small length "n". - */ -ssize_t uper_get_nslength(asn_per_data_t *pd); -ssize_t aper_get_nslength(asn_per_data_t *pd); - -/* - * Get the normally small non-negative whole number. - */ -ssize_t uper_get_nsnnwn(asn_per_data_t *pd); -ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); - -/* X.691-2008/11, #11.5.6 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); - - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_outp_s asn_per_outp_t; -#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) -#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) -#define per_put_aligned_flush(out) asn_put_aligned_flush(out) - - -/* - * Rebase the given value as an offset into the range specified by the - * lower bound (lb) and upper bound (ub). - * RETURN VALUES: - * -1: Conversion failed due to range problems. - * 0: Conversion was successful. - */ -int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); -/* The inverse operation: restores the value by the offset and its bounds. */ -int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); - -/* X.691-2008/11, #11.5 */ -int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "whole_length" to the Unaligned PER stream. - * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. - * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. - * This function returns the number of units which may be flushed - * in the next units saving iteration. - */ -ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, - int *opt_need_eom); - -ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); - -/* Align the current bit position to octet bundary */ -int aper_put_align(asn_per_outp_t *po); -int32_t aper_get_align(asn_per_data_t *pd); - -/* - * Put the normally small length "n" to the Unaligned PER stream. - * Returns 0 or -1. - */ -int uper_put_nslength(asn_per_outp_t *po, size_t length); - -int aper_put_nslength(asn_per_outp_t *po, size_t length); - -/* - * Put the normally small non-negative whole number. - */ -int uper_put_nsnnwn(asn_per_outp_t *po, int n); - -int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_SUPPORT_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.c deleted file mode 100644 index 5b87703..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.c +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* XER/XML parsing support */ - - -/* - * Decode the XER encoding of a given type. - */ -asn_dec_rval_t -xer_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *buffer, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); -} - - - -struct xer__cb_arg { - pxml_chunk_type_e chunk_type; - size_t chunk_size; - const void *chunk_buf; - int callback_not_invoked; -}; - -static int -xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { - struct xer__cb_arg *arg = (struct xer__cb_arg *)key; - arg->chunk_type = type; - arg->chunk_size = _chunk_size; - arg->chunk_buf = _chunk_data; - arg->callback_not_invoked = 0; - return -1; /* Terminate the XML parsing */ -} - -/* - * Fetch the next token from the XER/XML stream. - */ -ssize_t -xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { - struct xer__cb_arg arg; - int new_stateContext = *stateContext; - ssize_t ret; - - arg.callback_not_invoked = 1; - ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); - if(ret < 0) return -1; - if(arg.callback_not_invoked) { - assert(ret == 0); /* No data was consumed */ - *ch_type = PXER_WMORE; - return 0; /* Try again with more data */ - } else { - assert(arg.chunk_size); - assert(arg.chunk_buf == buffer); - } - - /* - * Translate the XML chunk types into more convenient ones. - */ - switch(arg.chunk_type) { - case PXML_TEXT: - *ch_type = PXER_TEXT; - break; - case PXML_TAG: - *ch_type = PXER_WMORE; - return 0; /* Want more */ - case PXML_TAG_END: - *ch_type = PXER_TAG; - break; - case PXML_COMMENT: - case PXML_COMMENT_END: - *ch_type = PXER_COMMENT; - break; - } - - *stateContext = new_stateContext; - return arg.chunk_size; -} - -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define RANGLE 0x3e /* '>' */ - -xer_check_tag_e -xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { - const char *buf = (const char *)buf_ptr; - const char *end; - xer_check_tag_e ct = XCT_OPENING; - - if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { - if(size >= 2) - ASN_DEBUG("Broken XML tag: \"%c...%c\"", - buf[0], buf[size - 1]); - return XCT_BROKEN; - } - - /* - * Determine the tag class. - */ - if(buf[1] == CSLASH) { - buf += 2; /* advance past "" */ - ct = XCT_CLOSING; - if(size > 0 && buf[size-1] == CSLASH) - return XCT_BROKEN; /* */ - } else { - buf++; /* advance past "<" */ - size -= 2; /* strip "<" and ">" */ - if(size > 0 && buf[size-1] == CSLASH) { - ct = XCT_BOTH; - size--; /* One more, for "/" */ - } - } - - /* Sometimes we don't care about the tag */ - if(!need_tag || !*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - /* - * Determine the tag name. - */ - for(end = buf + size; buf < end; buf++, need_tag++) { - int b = *buf, n = *need_tag; - if(b != n) { - if(n == 0) { - switch(b) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* "": whitespace is normal */ - return ct; - } - } - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - } - if(b == 0) - return XCT_BROKEN; /* Embedded 0 in buf?! */ - } - if(*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - return ct; -} - - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - if(rval.code != RC_OK) \ - ASN_DEBUG("Failed with %d", rval.code); \ - return rval; \ - } while(0) - -#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ - ssize_t converted_size = body_receiver \ - (struct_key, chunk_buf, chunk_size, \ - (size_t)chunk_size < size); \ - if(converted_size == -1) RETURN(RC_FAIL); \ - if(converted_size == 0 \ - && size == (size_t)chunk_size) \ - RETURN(RC_WMORE); \ - chunk_size = converted_size; \ - } while(0) -#define XER_GOT_EMPTY() do { \ - if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ - RETURN(RC_FAIL); \ - } while(0) - -/* - * Generalized function for decoding the primitive values. - */ -asn_dec_rval_t -xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, - const char *xml_tag, /* Expected XML tag */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder) - (void *struct_key, const void *chunk_buf, size_t chunk_size), - ssize_t (*body_receiver) - (void *struct_key, const void *chunk_buf, size_t chunk_size, - int have_more) - ) { - - asn_dec_rval_t rval; - ssize_t consumed_myself = 0; - - (void)opt_codec_ctx; - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - */ - if(ctx->phase > 1) RETURN(RC_FAIL); - for(;;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TEXT: - if(ctx->phase == 0) { - /* - * We have to ignore whitespace here, - * but in order to be forward compatible - * with EXTENDED-XER (EMBED-VALUES, #25) - * any text is just ignored here. - */ - } else { - XER_GOT_BODY(buf_ptr, ch_size, size); - } - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - assert(ch_type == PXER_TAG && size); - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - /* - * Phase 0: - * Expecting the opening tag - * for the type being processed. - * Phase 1: - * Waiting for the closing XML tag. - */ - switch(tcv) { - case XCT_BOTH: - if(ctx->phase) break; - /* Finished decoding of an empty element */ - XER_GOT_EMPTY(); - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - case XCT_CLOSING: - if(!ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_UNKNOWN_BO: - /* - * Certain tags in the body may be expected. - */ - if(opt_unexpected_tag_decoder - && opt_unexpected_tag_decoder(struct_key, - buf_ptr, ch_size) >= 0) { - /* Tag's processed fine */ - ADVANCE(ch_size); - if(!ctx->phase) { - /* We are not expecting - * the closing tag anymore. */ - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - } - continue; - } - /* Fall through */ - default: - break; /* Unexpected tag */ - } - - ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); - break; /* Dark and mysterious things have just happened */ - } - - RETURN(RC_FAIL); -} - - -size_t -xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - - for(; p < pend; p++) { - switch(*p) { - /* X.693, #8.1.4 - * HORISONTAL TAB (9) - * LINE FEED (10) - * CARRIAGE RETURN (13) - * SPACE (32) - */ - case 0x09: case 0x0a: case 0x0d: case 0x20: - continue; - default: - break; - } - break; - } - return (p - (const char *)chunk_buf); -} - -/* - * This is a vastly simplified, non-validating XML tree skipper. - */ -int -xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { - assert(*depth > 0); - switch(tcv) { - case XCT_BOTH: - case XCT_UNKNOWN_BO: - /* These negate each other. */ - return 0; - case XCT_OPENING: - case XCT_UNKNOWN_OP: - ++(*depth); - return 0; - case XCT_CLOSING: - case XCT_UNKNOWN_CL: - if(--(*depth) == 0) - return (tcv == XCT_CLOSING) ? 2 : 1; - return 0; - default: - return -1; - } -} diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.h deleted file mode 100644 index b951c41..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_decoder.h +++ /dev/null @@ -1,106 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_DECODER_H_ -#define _XER_DECODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The XER decoder of any ASN.1 type. May be invoked by the application. - * Decodes CANONICAL-XER and BASIC-XER. - */ -asn_dec_rval_t xer_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ -); - -/* - * Type of the type-specific XER decoder function. - */ -typedef asn_dec_rval_t(xer_type_decoder_f)( - const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, - const char *opt_mname, /* Member name */ - const void *buf_ptr, size_t size); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Generalized function for decoding the primitive values. - * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 - * and others. This function should not be used by applications, as its API - * is subject to changes. - */ -asn_dec_rval_t xer_decode_general( - const asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, /* Treated as opaque pointer */ - const char *xml_tag, /* Expected XML tag name */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, - size_t chunk_size), - ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, - size_t chunk_size, int have_more)); - - -/* - * Fetch the next XER (XML) token from the stream. - * The function returns the number of bytes occupied by the chunk type, - * returned in the _ch_type. The _ch_type is only set (and valid) when - * the return value is >= 0. - */ - typedef enum pxer_chunk_type { - PXER_WMORE, /* Chunk type is not clear, more data expected. */ - PXER_TAG, /* Complete XER tag */ - PXER_TEXT, /* Plain text between XER tags */ - PXER_COMMENT /* A comment, may be part of */ - } pxer_chunk_type_e; -ssize_t xer_next_token(int *stateContext, - const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); - -/* - * This function checks the buffer against the tag name is expected to occur. - */ - typedef enum xer_check_tag { - XCT_BROKEN = 0, /* The tag is broken */ - XCT_OPENING = 1, /* This is the tag */ - XCT_CLOSING = 2, /* This is the tag */ - XCT_BOTH = 3, /* This is the tag */ - XCT__UNK__MASK = 4, /* Mask of everything unexpected */ - XCT_UNKNOWN_OP = 5, /* Unexpected tag */ - XCT_UNKNOWN_CL = 6, /* Unexpected tag */ - XCT_UNKNOWN_BO = 7 /* Unexpected tag */ - } xer_check_tag_e; -xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, - const char *need_tag); - -/* - * Get the number of bytes consisting entirely of XER whitespace characters. - * RETURN VALUES: - * >=0: Number of whitespace characters in the string. - */ -size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); - -/* - * Skip the series of anticipated extensions. - */ -int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_DECODER_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.c deleted file mode 100644 index 4177ede..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.c +++ /dev/null @@ -1,237 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The XER encoder of any type. May be invoked by the application. - */ -asn_enc_rval_t -xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, - enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0, 0, 0}; - asn_enc_rval_t tmper; - const char *mname; - size_t mlen; - int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; - - if(!td || !sptr) goto cb_failed; - - mname = td->xml_tag; - mlen = strlen(mname); - - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("\n", xcan); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -/* - * This is a helper function for xer_fprint, which directs all incoming data - * into the provided file descriptor. - */ -static int -xer__print2fp(const void *buffer, size_t size, void *app_key) { - FILE *stream = (FILE *)app_key; - - if(fwrite(buffer, 1, size, stream) != size) - return -1; - - return 0; -} - -int -xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { - asn_enc_rval_t er = {0,0,0}; - - if(!stream) stream = stdout; - if(!td || !sptr) - return -1; - - er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); - if(er.encoded == -1) - return -1; - - return fflush(stream); -} - -struct xer_buffer { - char *buffer; - size_t buffer_size; - size_t allocated_size; -}; - -static int -xer__buffer_append(const void *buffer, size_t size, void *app_key) { - struct xer_buffer *xb = app_key; - - while(xb->buffer_size + size + 1 > xb->allocated_size) { - size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); - char *new_buf = MALLOC(new_size); - if(!new_buf) return -1; - if (xb->buffer) { - memcpy(new_buf, xb->buffer, xb->buffer_size); - } - FREEMEM(xb->buffer); - xb->buffer = new_buf; - xb->allocated_size = new_size; - } - - memcpy(xb->buffer + xb->buffer_size, buffer, size); - xb->buffer_size += size; - xb->buffer[xb->buffer_size] = '\0'; - return 0; -} - -enum xer_equivalence_e -xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, - const void *struct2, FILE *opt_debug_stream) { - struct xer_buffer xb1 = {0, 0, 0}; - struct xer_buffer xb2 = {0, 0, 0}; - asn_enc_rval_t e1, e2; - asn_dec_rval_t rval; - void *sptr = NULL; - - if(!td || !struct1 || !struct2) { - if(opt_debug_stream) { - if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); - if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); - if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); - } - return XEQ_FAILURE; - } - - e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); - if(e1.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of %s failed\n", td->name); - } - FREEMEM(xb1.buffer); - return XEQ_ENCODE1_FAILED; - } - - e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); - if(e2.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of %s failed\n", td->name); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ENCODE1_FAILED; - } - - if(xb1.buffer_size != xb2.buffer_size - || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structures XER-encoded into different byte streams:\n=== " - "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", - xb1.buffer, xb2.buffer); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_DIFFERENT; - } else { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Both structures encoded into the same XER byte stream " - "of size %" ASN_PRI_SIZE ":\n%s", - xb1.buffer_size, xb1.buffer); - } - } - - rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, - xb1.buffer_size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structure %s XER decode unexpectedly requires " - "more data:\n%s\n", - td->name, xb1.buffer); - } - /* Fall through */ - case RC_FAIL: - default: - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structure %s XER decoding resulted in failure.\n", - td->name); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_DECODE_FAILED; - } - - if(rval.consumed != xb1.buffer_size - && ((rval.consumed > xb1.buffer_size) - || xer_whitespace_span(xb1.buffer + rval.consumed, - xb1.buffer_size - rval.consumed) - != (xb1.buffer_size - rval.consumed))) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " - "encoded (%" ASN_PRI_SIZE ")\n", - td->name, rval.consumed, xb1.buffer_size); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - /* - * Reuse xb2 to encode newly decoded structure. - */ - FREEMEM(xb2.buffer); - memset(&xb2, 0, sizeof(xb2)); - - e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); - if(e2.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", - td->name); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - ASN_STRUCT_FREE(*td, sptr); - sptr = 0; - - if(xb1.buffer_size != xb2.buffer_size - || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "XER Encoding of round-trip decode of %s resulted in " - "different byte stream:\n" - "=== Original ===\n%s\n" - "=== Round-tripped ===\n%s\n", - xb1.buffer, xb2.buffer, td->name); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_SUCCESS; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.h deleted file mode 100644 index 9d75922..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_encoder.h +++ /dev/null @@ -1,83 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_ENCODER_H_ -#define _XER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ -enum xer_encoder_flags_e { - /* Mode of encoding */ - XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ - XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ -}; - -/* - * The XER encoder of any type. May be invoked by the application. - * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). - */ -asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* - * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) - * output into the chosen file pointer. - * RETURN VALUES: - * 0: The structure is printed. - * -1: Problem printing the structure. - * WARNING: No sensible errno value is returned. - */ -int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, - const void *struct_ptr); - -/* - * A helper function that uses XER encoding/decoding to verify that: - * - Both structures encode into the same BASIC XER. - * - Both resulting XER byte streams can be decoded back. - * - Both decoded structures encode into the same BASIC XER (round-trip). - * All of this verifies equivalence between structures and a round-trip. - * ARGUMENTS: - * (opt_debug_stream) - If specified, prints ongoing details. - */ -enum xer_equivalence_e { - XEQ_SUCCESS, /* The only completely positive return value */ - XEQ_FAILURE, /* General failure */ - XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ - XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ - XEQ_DIFFERENT, /* Structures encoded into different XER */ - XEQ_DECODE_FAILED, /* Decode of the XER data failed */ - XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ -}; -enum xer_equivalence_e xer_equivalent( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, - const void *struct2, FILE *opt_debug_stream); - -/* - * Type of the generic XER encoder. - */ -typedef asn_enc_rval_t(xer_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - int ilevel, /* Level of indentation */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_ENCODER_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.c b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.c deleted file mode 100644 index 36b4bfb..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003, 2004, 2005 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* Parser states */ -typedef enum { - ST_TEXT, - ST_TAG_START, - ST_TAG_BODY, - ST_TAG_QUOTE_WAIT, - ST_TAG_QUOTED_STRING, - ST_TAG_UNQUOTED_STRING, - ST_COMMENT_WAIT_DASH1, /* ""[0] */ - ST_COMMENT_CLO_RT /* "-->"[1] */ -} pstate_e; - -static const int -_charclass[256] = { - 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, - 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ -}; -#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) -#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) -#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) - -/* Aliases for characters, ASCII/UTF-8 */ -#define EXCLAM 0x21 /* '!' */ -#define CQUOTE 0x22 /* '"' */ -#define CDASH 0x2d /* '-' */ -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define CEQUAL 0x3d /* '=' */ -#define RANGLE 0x3e /* '>' */ -#define CQUEST 0x3f /* '?' */ - -/* Invoke token callback */ -#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ - int _ret; \ - pstate_e ns = _ns; \ - ssize_t _sz = (p - chunk_start) + _current_too; \ - if (!_sz) { \ - /* Shortcut */ \ - state = _ns; \ - break; \ - } \ - _ret = cb(type, chunk_start, _sz, key); \ - if(_ret < _sz) { \ - if(_current_too && _ret == -1) \ - state = ns; \ - goto finish; \ - } \ - chunk_start = p + _current_too; \ - state = ns; \ - } while(0) - -#define TOKEN_CB(_type, _ns, _current_too) \ - TOKEN_CB_CALL(_type, _ns, _current_too, 0) - -#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END -#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END - -#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ - TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) - -/* - * Parser itself - */ -ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { - pstate_e state = (pstate_e)*stateContext; - const char *chunk_start = (const char *)xmlbuf; - const char *p = chunk_start; - const char *end = p + size; - - for(; p < end; p++) { - int C = *(const unsigned char *)p; - switch(state) { - case ST_TEXT: - /* - * Initial state: we're in the middle of some text, - * or just have started. - */ - if (C == LANGLE) - /* We're now in the tag, probably */ - TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); - break; - case ST_TAG_START: - if (ALPHA(C) || (C == CSLASH)) - state = ST_TAG_BODY; - else if (C == EXCLAM) - state = ST_COMMENT_WAIT_DASH1; - else - /* - * Not characters and not whitespace. - * Must be something like "3 < 4". - */ - TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ - break; - case ST_TAG_BODY: - switch(C) { - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - case LANGLE: - /* - * The previous tag wasn't completed, but still - * recognized as valid. (Mozilla-compatible) - */ - TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); - break; - case CEQUAL: - state = ST_TAG_QUOTE_WAIT; - break; - } - break; - case ST_TAG_QUOTE_WAIT: - /* - * State after the equal sign ("=") in the tag. - */ - switch(C) { - case CQUOTE: - state = ST_TAG_QUOTED_STRING; - break; - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - default: - if(!WHITESPACE(C)) - /* Unquoted string value */ - state = ST_TAG_UNQUOTED_STRING; - } - break; - case ST_TAG_QUOTED_STRING: - /* - * Tag attribute's string value in quotes. - */ - if(C == CQUOTE) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_TAG_UNQUOTED_STRING: - if(C == RANGLE) { - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - } else if(WHITESPACE(C)) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH1: - if(C == CDASH) { - state = ST_COMMENT_WAIT_DASH2; - } else { - /* Some ordinary tag. */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH2: - if(C == CDASH) { - /* Seen "<--" */ - state = ST_COMMENT; - } else { - /* Some ordinary tag */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT: - if(C == CDASH) { - state = ST_COMMENT_CLO_DASH2; - } - break; - case ST_COMMENT_CLO_DASH2: - if(C == CDASH) { - state = ST_COMMENT_CLO_RT; - } else { - /* This is not an end of a comment */ - state = ST_COMMENT; - } - break; - case ST_COMMENT_CLO_RT: - if(C == RANGLE) { - TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); - } else if(C == CDASH) { - /* Maintain current state, still waiting for '>' */ - } else { - state = ST_COMMENT; - } - break; - } /* switch(*ptr) */ - } /* for() */ - - /* - * Flush the partially processed chunk, state permitting. - */ - if(p - chunk_start) { - switch (state) { - case ST_COMMENT: - TOKEN_CB(PXML_COMMENT, state, 0); - break; - case ST_TEXT: - TOKEN_CB(PXML_TEXT, state, 0); - break; - default: break; /* a no-op */ - } - } - -finish: - *stateContext = (int)state; - return chunk_start - (const char *)xmlbuf; -} - diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.h b/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.h deleted file mode 100644 index c3a36e7..0000000 --- a/e2sim/e2sm_examples/kpm_e2sm/src/ASN1c/xer_support.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_SUPPORT_H_ -#define _XER_SUPPORT_H_ - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Types of data transferred to the application. - */ -typedef enum { - PXML_TEXT, /* Plain text between XML tags. */ - PXML_TAG, /* A tag, starting with '<'. */ - PXML_COMMENT, /* An XML comment, including "". */ - /* - * The following chunk types are reported if the chunk - * terminates the specified XML element. - */ - PXML_TAG_END, /* Tag ended */ - PXML_COMMENT_END /* Comment ended */ -} pxml_chunk_type_e; - -/* - * Callback function that is called by the parser when parsed data is - * available. The _opaque is the pointer to a field containing opaque user - * data specified in pxml_create() call. The chunk type is _type and the text - * data is the piece of buffer identified by _bufid (as supplied to - * pxml_feed() call) starting at offset _offset and of _size bytes size. - * The chunk is NOT '\0'-terminated. - */ -typedef int (pxml_callback_f)(pxml_chunk_type_e _type, - const void *_chunk_data, size_t _chunk_size, void *_key); - -/* - * Parse the given buffer as it were a chunk of XML data. - * Invoke the specified callback each time the meaninful data is found. - * This function returns number of bytes consumed from the bufer. - * It will always be lesser than or equal to the specified _size. - * The next invocation of this function must account the difference. - */ -ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, - pxml_callback_f *cb, void *_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_SUPPORT_H_ */ diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/CMakeLists.txt b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/CMakeLists.txt old mode 100644 new mode 100755 index 263d98c..0d9771c --- a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/CMakeLists.txt +++ b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/CMakeLists.txt @@ -19,7 +19,7 @@ add_executable( kpm_sim kpm_callbacks.cpp encode_kpm.cpp ) add_dependencies( kpm_sim asn1_objects ) include_directories(.) -include_directories(../ASN1c) +include_directories(../../asn1c) include_directories(/usr/local/include/e2sim) include_directories(/usr/local/include) diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.cpp b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.cpp index 55abcb5..8bfe7c6 100755 --- a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.cpp +++ b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.cpp @@ -18,1827 +18,473 @@ #include #include -#include -#include -#include - -#include "encode_kpm.hpp" - -using namespace std; - -void encode_kpm_function_description(E2SM_KPM_RANfunction_Description_t* ranfunc_desc) { - - printf("kpm0\n"); - - uint8_t *buf = (uint8_t*)"ORAN-E2SM-KPM"; - uint8_t *buf2 = (uint8_t*)"KPM monitor"; - uint8_t *buf3 = (uint8_t*)"OID123"; - long inst = 1; - - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_RANfunction_Description, ranfunc_desc); - - ranfunc_desc->ranFunction_Name.ranFunction_ShortName.size = strlen((char*)buf); - ranfunc_desc->ranFunction_Name.ranFunction_ShortName.buf = (uint8_t*)calloc(strlen((char*)buf), sizeof(uint8_t)); - memcpy(ranfunc_desc->ranFunction_Name.ranFunction_ShortName.buf, buf, ranfunc_desc->ranFunction_Name.ranFunction_ShortName.size); - - // ranfunc_desc->ranFunction_Name.ranFunction_Description = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - ranfunc_desc->ranFunction_Name.ranFunction_Description.buf = (uint8_t*)calloc(1,strlen((char*)buf2)); - memcpy(ranfunc_desc->ranFunction_Name.ranFunction_Description.buf, buf2, strlen((char*)buf2)); - ranfunc_desc->ranFunction_Name.ranFunction_Description.size = strlen((char*)buf2); - ranfunc_desc->ranFunction_Name.ranFunction_Instance = &inst; - - printf("kpm0.9\n"); - - // ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID.buf = (uint8_t*)calloc(1,strlen((char*)buf3)); - memcpy(ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID.buf, buf3, strlen((char*)buf3)); - ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID.size = strlen((char*)buf3); - - printf("kpm2\n"); - - - RIC_EventTriggerStyle_List_t *trigger_style = - (RIC_EventTriggerStyle_List_t*)calloc(1, sizeof(RIC_EventTriggerStyle_List_t)); - trigger_style->ric_EventTriggerStyle_Type = 1; - uint8_t *buf4 = (uint8_t*)"Periodic report"; - // trigger_style->ric_EventTriggerStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - trigger_style->ric_EventTriggerStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf4)); - memcpy(trigger_style->ric_EventTriggerStyle_Name.buf, buf4, strlen((char*)buf4)); - trigger_style->ric_EventTriggerStyle_Name.size = strlen((char*)buf4); - trigger_style->ric_EventTriggerFormat_Type = 5; - - printf("kpm3\n"); - - ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_EventTriggerStyle_List = - (E2SM_KPM_RANfunction_Description::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List*)calloc(1,sizeof(E2SM_KPM_RANfunction_Description::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List)); - - int ret = ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_EventTriggerStyle_List->list , trigger_style); - printf("ret is %d\n", ret); - - RIC_ReportStyle_List_t *report_style1 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t)); - report_style1->ric_ReportStyle_Type = 1; - - uint8_t *buf5 = (uint8_t*)"O-DU Measurement Container for the 5GC connected deployment"; - - printf("kpm4\n"); - - // report_style1->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - report_style1->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf5)); - memcpy(report_style1->ric_ReportStyle_Name.buf, buf5, strlen((char*)buf5)); - report_style1->ric_ReportStyle_Name.size = strlen((char*)buf5); - report_style1->ric_IndicationHeaderFormat_Type = 1; - report_style1->ric_IndicationMessageFormat_Type = 1; - - printf("kpm5\n"); - - RIC_ReportStyle_List_t *report_style2 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t)); - report_style2->ric_ReportStyle_Type = 2; - - uint8_t *buf6 = (uint8_t*)"O-DU Measurement Container for the EPC connected deployment"; - - // report_style2->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - - - report_style2->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf6)); - memcpy(report_style2->ric_ReportStyle_Name.buf, buf6, strlen((char*)buf6)); - report_style2->ric_ReportStyle_Name.size = strlen((char*)buf6); - report_style2->ric_IndicationHeaderFormat_Type = 1; - report_style2->ric_IndicationMessageFormat_Type = 1; - - printf("kpm6\n"); - - RIC_ReportStyle_List_t *report_style3 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t)); - report_style3->ric_ReportStyle_Type = 3; - - uint8_t *buf7 = (uint8_t*)"O-CU-CP Measurement Container for the 5GC connected deployment"; - - // report_style3->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - report_style3->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf7)); - memcpy(report_style3->ric_ReportStyle_Name.buf, buf7, strlen((char*)buf7)); - report_style3->ric_ReportStyle_Name.size = strlen((char*)buf7); - report_style3->ric_IndicationHeaderFormat_Type = 1; - report_style3->ric_IndicationMessageFormat_Type = 1; - - RIC_ReportStyle_List_t *report_style4 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t)); - report_style4->ric_ReportStyle_Type = 4; - - uint8_t *buf8 = (uint8_t*)"O-CU-CP Measurement Container for the EPC connected deployment"; - - // report_style3->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - report_style4->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf8)); - memcpy(report_style4->ric_ReportStyle_Name.buf, buf8, strlen((char*)buf8)); - report_style4->ric_ReportStyle_Name.size = strlen((char*)buf8); - report_style4->ric_IndicationHeaderFormat_Type = 1; - report_style4->ric_IndicationMessageFormat_Type = 1; - - RIC_ReportStyle_List_t *report_style5 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t)); - report_style5->ric_ReportStyle_Type = 5; - - uint8_t *buf9 = (uint8_t*)"O-CU-UP Measurement Container for the 5GC connected deployment"; - - // report_style3->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - report_style5->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf9)); - memcpy(report_style5->ric_ReportStyle_Name.buf, buf9, strlen((char*)buf9)); - report_style5->ric_ReportStyle_Name.size = strlen((char*)buf9); - report_style5->ric_IndicationHeaderFormat_Type = 1; - report_style5->ric_IndicationMessageFormat_Type = 1; - - - RIC_ReportStyle_List_t *report_style6 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t)); - report_style6->ric_ReportStyle_Type = 6; - - uint8_t *buf10 = (uint8_t*)"O-CU-UP Measurement Container for the EPC connected deployment"; - - // report_style3->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - report_style6->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf10)); - memcpy(report_style6->ric_ReportStyle_Name.buf, buf10, strlen((char*)buf10)); - report_style6->ric_ReportStyle_Name.size = strlen((char*)buf10); - report_style6->ric_IndicationHeaderFormat_Type = 1; - report_style6->ric_IndicationMessageFormat_Type = 1; - - - ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List = - (E2SM_KPM_RANfunction_Description::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List*)calloc(1,sizeof(E2SM_KPM_RANfunction_Description::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List)); - - ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style1); - ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style2); - ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style3); - ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style4); - ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style5); - ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style6); - - xer_fprint(stderr, &asn_DEF_E2SM_KPM_RANfunction_Description, ranfunc_desc); - -} - -void encode_e2sm_kpm_indication_header(E2SM_KPM_IndicationHeader_t *ihead, uint8_t *plmnid_buf, uint8_t *sst_buf, uint8_t *sd_buf, - long fqival, long qcival, uint8_t *nrcellid_buf, uint8_t *gnbid_buf, int gnbid_unused, - uint8_t *cuupid_buf, uint8_t *duid_buf, uint8_t *cuupname_buf) { - - - //uint8_t *plmnid_buf = (uint8_t*)"747"; - //uint8_t *sst_buf = (uint8_t*)"1"; - //uint8_t *sd_buf = (uint8_t*)"100"; - - E2SM_KPM_IndicationHeader_Format1_t* ind_header = - (E2SM_KPM_IndicationHeader_Format1_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_Format1_t)); - - // long fqival = 9; - // long qcival = 9; - - SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t)); - ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai); - snssai->sST.buf = (uint8_t*)calloc(1,1); - snssai->sST.size = 1; - memcpy(snssai->sST.buf, sst_buf, 1); - snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - snssai->sD->buf = (uint8_t*)calloc(1,3); - snssai->sD->size = 3; - memcpy(snssai->sD->buf, sd_buf, 3); - - BIT_STRING_t *nrcellid = (BIT_STRING_t*)calloc(1, sizeof(BIT_STRING_t));; - nrcellid->buf = (uint8_t*)calloc(1,5); - nrcellid->size = 5; - memcpy(nrcellid->buf, nrcellid_buf, 5); - /* - nrcellid->buf[0] = 0x22; - nrcellid->buf[1] = 0x5B; - nrcellid->buf[2] = 0xD6; - nrcellid->buf[3] = 0x00; - nrcellid->buf[4] = 0x70; - */ - nrcellid->bits_unused = 4; - - - INTEGER_t *cuup_id = (INTEGER_t*)calloc(1, sizeof(INTEGER_t)); - // uint8_t buffer[1]; - // buffer[0] = 20000; - cuup_id->buf = (uint8_t*)calloc(1,1); - memcpy(cuup_id->buf, cuupid_buf, 1); - cuup_id->size = 1; - - INTEGER_t *du_id = (INTEGER_t*)calloc(1, sizeof(INTEGER_t)); - // uint8_t buffer_duid[1]; - // buffer_duid[0] = 20000; - du_id->buf = (uint8_t*)calloc(1,1); - memcpy(du_id->buf, duid_buf, 1); - du_id->size = 1; - - - // uint8_t *buf5 = (uint8_t*)"GNBCUUP5"; - OCTET_STRING_t *cuupname = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - cuupname->size = 8; - cuupname->buf = (uint8_t*)calloc(1,8); - memcpy(cuupname->buf, cuupname_buf, cuupname->size); - - OCTET_STRING_t *plmnid_id_GlobalKPMnode_ID = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnid_id_GlobalKPMnode_ID->size = strlen((char *)plmnid_buf); - plmnid_id_GlobalKPMnode_ID->buf = (uint8_t*)calloc(plmnid_id_GlobalKPMnode_ID->size, sizeof(uint8_t)); - memcpy(plmnid_id_GlobalKPMnode_ID->buf, plmnid_buf, plmnid_id_GlobalKPMnode_ID->size); - - BIT_STRING_t *gnb_bstring_id_GlobalKPMnode_ID = (BIT_STRING_t*)calloc(1, sizeof(BIT_STRING_t)); - gnb_bstring_id_GlobalKPMnode_ID->size = strlen((char *)gnbid_buf); - gnb_bstring_id_GlobalKPMnode_ID->buf = (uint8_t*)calloc(gnb_bstring_id_GlobalKPMnode_ID->size, sizeof(uint8_t)); - memcpy(gnb_bstring_id_GlobalKPMnode_ID->buf, gnbid_buf, gnb_bstring_id_GlobalKPMnode_ID->size); - gnb_bstring_id_GlobalKPMnode_ID->bits_unused = gnbid_unused; - - ind_header->id_GlobalKPMnode_ID = (GlobalKPMnode_ID*)calloc(1,sizeof(GlobalKPMnode_ID)); - ind_header->id_GlobalKPMnode_ID->present = GlobalKPMnode_ID_PR_gNB; - ind_header->id_GlobalKPMnode_ID->choice.gNB.global_gNB_ID.gnb_id.present = GNB_ID_Choice_PR_gnb_ID; - ind_header->id_GlobalKPMnode_ID->choice.gNB.global_gNB_ID.gnb_id.choice.gnb_ID = *gnb_bstring_id_GlobalKPMnode_ID; - ind_header->id_GlobalKPMnode_ID->choice.gNB.global_gNB_ID.plmn_id = *plmnid_id_GlobalKPMnode_ID; - ind_header->id_GlobalKPMnode_ID->choice.gNB.gNB_CU_UP_ID = cuup_id; - if (plmnid_id_GlobalKPMnode_ID) free(plmnid_id_GlobalKPMnode_ID); - if (gnb_bstring_id_GlobalKPMnode_ID) free(gnb_bstring_id_GlobalKPMnode_ID); - - - OCTET_STRING_t *plmnid_nRCGI = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnid_nRCGI->buf = (uint8_t*)calloc(3,1); - plmnid_nRCGI->size = 3; - memcpy(plmnid_nRCGI->buf, plmnid_buf, plmnid_nRCGI->size); - - ind_header->nRCGI = (NRCGI*)calloc(1,sizeof(NRCGI)); - ind_header->nRCGI->pLMN_Identity = *plmnid_nRCGI; - ind_header->nRCGI->nRCellIdentity = *nrcellid; - if (plmnid_nRCGI) free(plmnid_nRCGI); - if (nrcellid) free(nrcellid); - - - OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnid->buf = (uint8_t*)calloc(3,1); - plmnid->size = 3; - memcpy(plmnid->buf, plmnid_buf, plmnid->size); - - ind_header->pLMN_Identity = plmnid; - // memcpy(ind_header->fiveQI, &fqival, 4); - - ind_header->sliceID = snssai; - // memcpy(ind_header->qci, &qcival, 4); - - - ind_header->gNB_Name = (GNB_Name*)calloc(1,sizeof(GNB_Name)); - ind_header->gNB_Name->present = GNB_Name_PR_gNB_CU_UP_Name; - ind_header->gNB_Name->choice.gNB_CU_UP_Name = *cuupname; - if (cuupname) free(cuupname); - - - OCTET_STRING_t *plmnid_global_GNB_ID = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnid_global_GNB_ID->buf = (uint8_t*)calloc(3,1); - plmnid_global_GNB_ID->size = 3; - memcpy(plmnid_global_GNB_ID->buf, plmnid_buf, plmnid_global_GNB_ID->size); - - BIT_STRING_t *gnb_bstring_global_GNB_ID = (BIT_STRING_t*)calloc(1, sizeof(BIT_STRING_t));; - gnb_bstring_global_GNB_ID->buf = (uint8_t*)calloc(1,4); - gnb_bstring_global_GNB_ID->size = 4; - memcpy(gnb_bstring_global_GNB_ID->buf, gnbid_buf, 4); - gnb_bstring_global_GNB_ID->bits_unused = gnbid_unused; - - ind_header->global_GNB_ID = (GlobalgNB_ID*)calloc(1,sizeof(GlobalgNB_ID)); - ind_header->global_GNB_ID->plmn_id = *plmnid_global_GNB_ID; - ind_header->global_GNB_ID->gnb_id.present = GNB_ID_Choice_PR_gnb_ID; - ind_header->global_GNB_ID->gnb_id.choice.gnb_ID = *gnb_bstring_global_GNB_ID; - if (plmnid_global_GNB_ID) free(plmnid_global_GNB_ID); - if (gnb_bstring_global_GNB_ID) free(gnb_bstring_global_GNB_ID); - - - // long msg_type = 2; - // ind_header->message_Type = &msg_type; - ind_header->gNB_DU_ID = du_id; - - - ihead->present = E2SM_KPM_IndicationHeader_PR_indicationHeader_Format1; - ihead->choice.indicationHeader_Format1 = *ind_header; - if (ind_header) free(ind_header); - - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationHeader, ihead); - -} - - - -void encode_kpm_ocuup_user_level(RAN_Container_t *ranco, - uint8_t *plmnid_buf, - uint8_t *nrcellid_buf, - uint8_t *crnti_buf, - int bytes_dl, - int bytes_ul) { - - uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222"; - Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t)); - ts->buf = (uint8_t*)calloc(strlen((char*)buf),1); - ts->size = strlen((char*)buf); - memcpy(ts->buf,buf,ts->size); - - printf("enc1\n"); - - CU_UP_Usage_Report_CellResourceReportItem_t *report_item = - (CU_UP_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(CU_UP_Usage_Report_CellResourceReportItem_t)); - - // uint8_t *buf2 = (uint8_t*)"747"; - - OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnidstr->buf = (uint8_t*)calloc(3,1); - plmnidstr->size = 3; - memcpy(plmnidstr->buf, plmnid_buf, plmnidstr->size); - - printf("enc2\n"); - - NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t)); - // uint8_t* buf3 = (uint8_t*)"12340"; - nrcellid->buf = (uint8_t*)calloc(1,5); - memcpy(nrcellid->buf, nrcellid_buf, 5); - nrcellid->size = 5; - nrcellid->bits_unused = 4; - - NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI)); - nrcgi->pLMN_Identity = *plmnidstr; - nrcgi->nRCellIdentity = *nrcellid; - if (plmnidstr) free(plmnidstr); - if (nrcellid) free(nrcellid); - - printf("enc3\n"); - - report_item->nRCGI = *nrcgi; - if (nrcgi) free(nrcgi); - - CU_UP_Usage_Report_UeResourceReportItem *ue_report_item = - (CU_UP_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(CU_UP_Usage_Report_UeResourceReportItem)); - - printf("enc3.2\n"); - - // uint8_t* crnti_str = (uint8_t*)"1111"; - OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING)); - crnti->buf = (uint8_t*)calloc(1,4); - - printf("enc3.3\n"); - - crnti->size = strlen((char*)crnti_buf); - - printf("enc3.4\n"); - memcpy(crnti->buf, crnti_buf, crnti->size); - - printf("enc4\n"); - - INTEGER_t *bytesdl = (INTEGER_t*)calloc(1, sizeof(INTEGER_t)); - int array_size_dl; - - if (bytes_dl <= 64) { - array_size_dl = 1; - - uint8_t buffer[array_size_dl]; - buffer[0] = bytes_dl & 0xFF; - bytesdl->buf = (uint8_t*)calloc(1,1); - memcpy(bytesdl->buf,buffer,1); - bytesdl->size = 1; - - } else if (bytes_dl <= 16384) { - array_size_dl = 2; - - uint8_t buffer[array_size_dl]; - buffer[0] = (bytes_dl >> 8) & 0xFF; - buffer[1] = bytes_dl & 0xFF; - bytesdl->buf = (uint8_t*)calloc(2,1); - memcpy(bytesdl->buf,buffer,2); - bytesdl->size = 2; - - } else if (bytes_dl <= 4194304) { - array_size_dl = 3; - - uint8_t buffer[array_size_dl]; - buffer[0] = (bytes_dl >> 16) & 0xFF; - buffer[1] = (bytes_dl >> 8) & 0xFF; - buffer[2] = bytes_dl & 0xFF; - bytesdl->buf = (uint8_t*)calloc(3,1); - memcpy(bytesdl->buf,buffer,3); - bytesdl->size = 3; - - } else if (bytes_dl <= 1073741824) { - array_size_dl = 4; - uint8_t buffer[array_size_dl]; - buffer[0] = (bytes_dl >> 24) & 0xFF; - buffer[1] = (bytes_dl >> 16) & 0xFF; - buffer[2] = (bytes_dl >> 8) & 0xFF; - buffer[3] = bytes_dl & 0xFF; - bytesdl->buf = (uint8_t*)calloc(4,1); - memcpy(bytesdl->buf,buffer,4); - bytesdl->size = 4; - } - - - INTEGER_t *bytesul = (INTEGER_t*)calloc(1, sizeof(INTEGER_t)); - - int array_size_ul; - - if (bytes_ul <= 64) { - array_size_ul = 1; - - uint8_t buffer[array_size_ul]; - buffer[0] = bytes_ul & 0xFF; - bytesul->buf = (uint8_t*)calloc(1,1); - memcpy(bytesul->buf,buffer,1); - bytesul->size = 1; - - } else if (bytes_ul <= 16384) { - array_size_ul = 2; - - uint8_t buffer[array_size_ul]; - buffer[0] = (bytes_ul >> 8) & 0xFF; - buffer[1] = bytes_ul & 0xFF; - bytesul->buf = (uint8_t*)calloc(2,1); - memcpy(bytesul->buf,buffer,2); - bytesul->size = 2; - - } else if (bytes_ul <= 4194304) { - array_size_ul = 3; - - uint8_t buffer[array_size_ul]; - buffer[0] = (bytes_ul >> 16) & 0xFF; - buffer[1] = (bytes_ul >> 8) & 0xFF; - buffer[2] = bytes_ul & 0xFF; - bytesul->buf = (uint8_t*)calloc(3,1); - memcpy(bytesul->buf,buffer,3); - bytesul->size = 3; - - } else if (bytes_ul <= 1073741824) { - array_size_ul = 4; - uint8_t buffer[array_size_ul]; - buffer[0] = (bytes_ul >> 24) & 0xFF; - buffer[1] = (bytes_ul >> 16) & 0xFF; - buffer[2] = (bytes_ul >> 8) & 0xFF; - buffer[3] = bytes_ul & 0xFF; - bytesul->buf = (uint8_t*)calloc(4,1); - memcpy(bytesul->buf,buffer,4); - bytesul->size = 4; - } - - - - ue_report_item->c_RNTI = *crnti; - ue_report_item->pDCPBytesDL = bytesdl; - ue_report_item->pDCPBytesUL = bytesul; - if (crnti) free(crnti); - - - ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item); - - ranco->timestamp = *ts; - ranco->reportContainer.present = RAN_Container__reportContainer_PR_oCU_UP_UE; - ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oCU_UP_UE.cellResourceReportList.list, report_item); - if (ts) free(ts); - - xer_fprint(stderr, &asn_DEF_RAN_Container, ranco); - -} - -void encode_kpm_ocucp_user_level(RAN_Container_t *ranco, - uint8_t *plmnid_buf, - uint8_t *nrcellid_buf, - uint8_t *crnti_buf, - const uint8_t *serving_buf, - const uint8_t *neighbor_buf) { - uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222"; - Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t)); - ts->buf = (uint8_t*)calloc(strlen((char*)buf),1); - ts->size = strlen((char*)buf); - memcpy(ts->buf,buf,ts->size); - - printf("enc1\n"); - - CU_CP_Usage_Report_CellResourceReportItem_t *report_item = - (CU_CP_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(CU_CP_Usage_Report_CellResourceReportItem_t)); - - int plmnid_size = strlen((char*)plmnid_buf); - OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnidstr->buf = (uint8_t*)calloc(plmnid_size,1); - plmnidstr->size = plmnid_size; - memcpy(plmnidstr->buf, plmnid_buf, plmnidstr->size); - - printf("enc2\n"); - - NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t)); - - // int nrcellid_size = strlen((char*)nrcellid_buf); - int nrcellid_size = 5; - nrcellid->buf = (uint8_t*)calloc(1, nrcellid_size); - memcpy(nrcellid->buf, nrcellid_buf, nrcellid_size); - nrcellid->size = 5; - nrcellid->bits_unused = 4; - - NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI)); - nrcgi->pLMN_Identity = *plmnidstr; - nrcgi->nRCellIdentity = *nrcellid; - if (plmnidstr) free(plmnidstr); - if (nrcellid) free(nrcellid); - - printf("enc3\n"); - - report_item->nRCGI = *nrcgi; - if (nrcgi) free(nrcgi); - - CU_CP_Usage_Report_UeResourceReportItem *ue_report_item = - (CU_CP_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(CU_CP_Usage_Report_UeResourceReportItem)); - - printf("enc3.2\n"); - - - int crnti_size = strlen((char*)crnti_buf); - OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING)); - crnti->buf = (uint8_t*)calloc(1, crnti_size); - - printf("enc3.3\n"); - - crnti->size = strlen((char*)crnti_buf); - - printf("enc3.4\n"); - memcpy(crnti->buf, crnti_buf, crnti->size); - - // uint8_t *buf_serving = (uint8_t*)"RSRP10"; - - int serving_buf_len = strlen((char*)serving_buf); - OCTET_STRING_t *servingstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - servingstr->buf = (uint8_t*)calloc(serving_buf_len,1); - servingstr->size = serving_buf_len; - memcpy(servingstr->buf, serving_buf, servingstr->size); - - - int neighbor_buf_len = strlen((char*)neighbor_buf); - // uint8_t *buf_neighbor = (uint8_t*)"-10,-15"; - OCTET_STRING_t *neighborstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - ts->buf = (uint8_t*)calloc(neighbor_buf_len,1); - neighborstr->buf = (uint8_t*)calloc(neighbor_buf_len,1); - neighborstr->size = neighbor_buf_len; - memcpy(neighborstr->buf, neighbor_buf, neighborstr->size); - - ue_report_item->c_RNTI = *crnti; - ue_report_item->serving_Cell_RF_Type = servingstr; - ue_report_item->neighbor_Cell_RF = neighborstr; - if (crnti) free(crnti); - - - ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item); - - ranco->timestamp = *ts; - ranco->reportContainer.present = RAN_Container__reportContainer_PR_oCU_CP_UE; - ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oCU_CP_UE.cellResourceReportList.list, report_item); - if (ts->buf) free(ts->buf); - if (ts) free(ts); - - xer_fprint(stderr, &asn_DEF_RAN_Container, ranco); - - -} - -void encode_kpm_ocucp_user_level(RAN_Container_t *ranco) { - - uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222"; - Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t)); - ts->buf = (uint8_t*)calloc(strlen((char*)buf),1); - ts->size = strlen((char*)buf); - memcpy(ts->buf,buf,ts->size); - - printf("enc1\n"); - - CU_CP_Usage_Report_CellResourceReportItem_t *report_item = - (CU_CP_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(CU_CP_Usage_Report_CellResourceReportItem_t)); - - uint8_t *buf2 = (uint8_t*)"747"; - - OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnidstr->buf = (uint8_t*)calloc(3,1); - plmnidstr->size = 3; - memcpy(plmnidstr->buf, buf2, plmnidstr->size); - - printf("enc2\n"); - - NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t)); - uint8_t* buf3 = (uint8_t*)"12340"; - nrcellid->buf = (uint8_t*)calloc(1,5); - memcpy(nrcellid->buf, buf3, 5); - nrcellid->size = 5; - nrcellid->bits_unused = 4; - - NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI)); - nrcgi->pLMN_Identity = *plmnidstr; - nrcgi->nRCellIdentity = *nrcellid; - - printf("enc3\n"); - - report_item->nRCGI = *nrcgi; - if (nrcgi) free(nrcgi); - - CU_CP_Usage_Report_UeResourceReportItem *ue_report_item = - (CU_CP_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(CU_CP_Usage_Report_UeResourceReportItem)); - - printf("enc3.2\n"); - - uint8_t* crnti_str = (uint8_t*)"1111"; - OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING)); - crnti->buf = (uint8_t*)calloc(1,4); - - printf("enc3.3\n"); - - crnti->size = strlen((char*)crnti_str); - - printf("enc3.4\n"); - memcpy(crnti->buf, crnti_str, crnti->size); - - uint8_t *buf_serving = (uint8_t*)"RSRP10"; - OCTET_STRING_t *servingstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - servingstr->buf = (uint8_t*)calloc(6,1); - servingstr->size = 6; - memcpy(servingstr->buf, buf_serving, servingstr->size); - - uint8_t *buf_neighbor = (uint8_t*)"-10,-15"; - OCTET_STRING_t *neighborstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - neighborstr->buf = (uint8_t*)calloc(7,1); - neighborstr->size = 7; - memcpy(neighborstr->buf, buf_neighbor, neighborstr->size); - - ue_report_item->c_RNTI = *crnti; - ue_report_item->serving_Cell_RF_Type = servingstr; - ue_report_item->neighbor_Cell_RF = neighborstr; - - - ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item); - - ranco->timestamp = *ts; - ranco->reportContainer.present = RAN_Container__reportContainer_PR_oCU_CP_UE; - ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oCU_CP_UE.cellResourceReportList.list, report_item); - - xer_fprint(stderr, &asn_DEF_RAN_Container, ranco); - -} - - -void encode_kpm_odu_user_level(RAN_Container_t *ranco, - uint8_t *plmnid_buf, - uint8_t *nrcellid_buf, - uint8_t *crnti_buf, - long prb_usage_dl, - long prb_usage_ul) { - - uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222"; - Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t)); - ts->buf = (uint8_t*)calloc(strlen((char*)buf),1); - ts->size = strlen((char*)buf); - memcpy(ts->buf,buf,ts->size); - - printf("enc1\n"); - - DU_Usage_Report_CellResourceReportItem_t *report_item = - (DU_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(DU_Usage_Report_CellResourceReportItem_t)); - - // uint8_t *buf2 = (uint8_t*)"747"; - - int plmnid_size = strlen((char*)plmnid_buf); - OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnidstr->buf = (uint8_t*)calloc(plmnid_size,1); - plmnidstr->size = plmnid_size; - memcpy(plmnidstr->buf, plmnid_buf, plmnidstr->size); - - printf("enc2\n"); - - NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t)); - - // int nrcellid_size = strlen((char*)nrcellid_buf); - int nrcellid_size = 5; - nrcellid->buf = (uint8_t*)calloc(1,nrcellid_size); - memcpy(nrcellid->buf, nrcellid_buf, nrcellid_size); - nrcellid->size = nrcellid_size; - nrcellid->bits_unused = 4; - - NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI)); - nrcgi->pLMN_Identity = *plmnidstr; - nrcgi->nRCellIdentity = *nrcellid; - if (plmnidstr) free(plmnidstr); - if (nrcellid) free(nrcellid); - - printf("enc3\n"); - - report_item->nRCGI = *nrcgi; - if (nrcgi) free(nrcgi); - - printf("enc3.1\n"); - - DU_Usage_Report_UeResourceReportItem *ue_report_item = - (DU_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(DU_Usage_Report_UeResourceReportItem)); - - printf("enc3.2\n"); - - int crnti_size = strlen((char*)crnti_buf); - - OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING)); - crnti->buf = (uint8_t*)calloc(1,crnti_size); - - printf("enc3.3\n"); - - crnti->size = strlen((char*)crnti_buf); - - printf("enc3.4\n"); - memcpy(crnti->buf, crnti_buf, crnti->size); - - printf("enc4\n"); - - long *p_prb_usage_dl = (long*)calloc(1, sizeof(long)); - long *p_prb_usage_ul = (long*)calloc(1, sizeof(long)); - *p_prb_usage_dl = (long)prb_usage_dl; - *p_prb_usage_ul = (long)prb_usage_ul; - - ue_report_item->c_RNTI = *crnti; - ue_report_item->dl_PRBUsage = p_prb_usage_dl; - if (crnti) free(crnti); - - printf("enc5\n"); - - ue_report_item->ul_PRBUsage = p_prb_usage_ul; - - printf("enc6\n"); - - ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item); - - - ranco->timestamp = *ts; - ranco->reportContainer.present = RAN_Container__reportContainer_PR_oDU_UE; - ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oDU_UE.cellResourceReportList.list, report_item); - if (ts) free(ts); - - xer_fprint(stderr, &asn_DEF_RAN_Container, ranco); - - -} - -void encode_kpm_report_rancontainer_du_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, - uint8_t *plmnid_buf, - uint8_t *nrcellid_buf, - uint8_t *crnti_buf, - long prb_usage_dl, - long prb_usage_ul) { - - RAN_Container_t *ranco = (RAN_Container_t*)calloc(1,sizeof(RAN_Container_t)); - encode_kpm_odu_user_level(ranco,plmnid_buf,nrcellid_buf,crnti_buf,prb_usage_dl,prb_usage_ul); - - printf("After creating RAN container, xer printing it\n"); - xer_fprint(stderr, &asn_DEF_RAN_Container, ranco); - - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); - containers_list->theRANContainer = ranco; - - E2SM_KPM_IndicationMessage_Format1_t *format = - (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); - - int ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - - E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1; - - indicationmessage->indicationMessage.present = pres; - - indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format; - if (format) free(format); - - char error_buf[300] = {0, }; - size_t errlen = 0; - - asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); - - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - - asn_codec_ctx_t *opt_cod; - - uint8_t e2smbuffer[8192] = {0, }; - size_t e2smbuffer_size = 8192; - - uint8_t e2smbuffer2[8192] = {0, }; - size_t e2smbuffer_size2 = 8192; - - asn_enc_rval_t er = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); - - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); - - -} - -void encode_kpm_report_rancontainer_cucp_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, - uint8_t *plmnid_buf, - uint8_t *nrcellid_buf, - uint8_t *crnti_buf, - const uint8_t *serving_buf, - const uint8_t *neighbor_buf) { - - RAN_Container_t *ranco = (RAN_Container_t*)calloc(1,sizeof(RAN_Container_t)); - encode_kpm_ocucp_user_level(ranco, plmnid_buf, - nrcellid_buf, crnti_buf, - serving_buf, neighbor_buf); - - printf("After creating RAN container, xer printing it\n"); - xer_fprint(stderr, &asn_DEF_RAN_Container, ranco); - - - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); - containers_list->theRANContainer = ranco; - - E2SM_KPM_IndicationMessage_Format1_t *format = - (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); - - int ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - - E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1; - - indicationmessage->indicationMessage.present = pres; - - indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format; - if (format) free(format); - - char error_buf[300] = {0, }; - size_t errlen = 0; - - asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); - - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - - asn_codec_ctx_t *opt_cod; - - uint8_t e2smbuffer[8192] = {0, }; - size_t e2smbuffer_size = 8192; - - uint8_t e2smbuffer2[8192] = {0, }; - size_t e2smbuffer_size2 = 8192; - - asn_enc_rval_t er = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); - - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); - -} - - -void encode_kpm_report_rancontainer_cucp(E2SM_KPM_IndicationMessage_t* indicationmessage) { - - RAN_Container_t *ranco = (RAN_Container_t*)calloc(1,sizeof(RAN_Container_t)); - encode_kpm_ocucp_user_level(ranco); - - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); - containers_list->theRANContainer = ranco; - - E2SM_KPM_IndicationMessage_Format1_t *format = - (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); - - int ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - - E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1; - - indicationmessage->indicationMessage.present = pres; - - indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format; - if (format) free(format); - - char error_buf[300] = {0, }; - size_t errlen = 0; - - asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); - - // xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - - asn_codec_ctx_t *opt_cod; - - uint8_t e2smbuffer[8192] = {0, }; - size_t e2smbuffer_size = 8192; - - uint8_t e2smbuffer2[8192] = {0, }; - size_t e2smbuffer_size2 = 8192; - - asn_enc_rval_t er = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); - - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); - - -} - -void encode_kpm_report_rancontainer_cuup_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, - uint8_t *plmnid_buf, - uint8_t *nrcellid_buf, - uint8_t *crnti_buf, - int pdcp_bytesdl, - int pdcp_bytesul) { - - RAN_Container_t *ranco = (RAN_Container_t*)calloc(1,sizeof(RAN_Container_t)); - encode_kpm_ocuup_user_level(ranco,plmnid_buf,nrcellid_buf,crnti_buf,pdcp_bytesdl,pdcp_bytesul); - - fprintf(stderr, "After creating RAN container, xer printing it\n"); - xer_fprint(stderr, &asn_DEF_RAN_Container, ranco); - - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); - containers_list->theRANContainer = ranco; - - E2SM_KPM_IndicationMessage_Format1_t *format = - (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); - - int ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - - E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1; - - indicationmessage->indicationMessage.present = pres; - - indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format; - if (format) free(format); - - char error_buf[300] = {0, }; - size_t errlen = 0; - - asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); - - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - - asn_codec_ctx_t *opt_cod; - - uint8_t e2smbuffer[8192] = {0, }; - size_t e2smbuffer_size = 8192; - - uint8_t e2smbuffer2[8192] = {0, }; - size_t e2smbuffer_size2 = 8192; - - // xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - - asn_enc_rval_t er = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); - - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); - - -} - -void encode_kpm_report_rancontainer_cuup(E2SM_KPM_IndicationMessage_t* indicationmessage) { - - RAN_Container_t *ranco = (RAN_Container_t*)calloc(1,sizeof(RAN_Container_t)); - //encode_kpm_ocuup_user_level(ranco); - - - uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222"; - Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t)); - ts->buf = (uint8_t*)calloc(strlen((char*)buf),1); - ts->size = strlen((char*)buf); - memcpy(ts->buf,buf,ts->size); - - printf("enc1\n"); - - CU_CP_Usage_Report_CellResourceReportItem_t *report_item = - (CU_CP_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(CU_CP_Usage_Report_CellResourceReportItem_t)); - - uint8_t *buf2 = (uint8_t*)"747"; - - OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnidstr->buf = (uint8_t*)calloc(3,1); - plmnidstr->size = 3; - memcpy(plmnidstr->buf, buf2, plmnidstr->size); - - printf("enc2\n"); - - NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t)); - uint8_t* buf3 = (uint8_t*)"12340"; - nrcellid->buf = (uint8_t*)calloc(1,5); - memcpy(nrcellid->buf, buf3, 5); - nrcellid->size = 5; - nrcellid->bits_unused = 4; - - NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI)); - nrcgi->pLMN_Identity = *plmnidstr; - nrcgi->nRCellIdentity = *nrcellid; - if (plmnidstr) free(plmnidstr); - if (nrcellid) free(nrcellid); - - printf("enc3\n"); - - report_item->nRCGI = *nrcgi; - if (nrcgi) free(nrcgi); - - CU_CP_Usage_Report_UeResourceReportItem *ue_report_item = - (CU_CP_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(CU_CP_Usage_Report_UeResourceReportItem)); - - printf("enc3.2\n"); - - uint8_t* crnti_str = (uint8_t*)"1111"; - OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING)); - crnti->buf = (uint8_t*)calloc(1,4); - - printf("enc3.3\n"); - - crnti->size = strlen((char*)crnti_str); - - printf("enc3.4\n"); - memcpy(crnti->buf, crnti_str, crnti->size); - - uint8_t *buf_serving = (uint8_t*)"RSRP10"; - OCTET_STRING_t *servingstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - servingstr->buf = (uint8_t*)calloc(6,1); - servingstr->size = 6; - memcpy(servingstr->buf, buf_serving, servingstr->size); - - uint8_t *buf_neighbor = (uint8_t*)"-10,-15"; - OCTET_STRING_t *neighborstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - neighborstr->buf = (uint8_t*)calloc(7,1); - neighborstr->size = 7; - memcpy(neighborstr->buf, buf_neighbor, neighborstr->size); - - ue_report_item->c_RNTI = *crnti; - ue_report_item->serving_Cell_RF_Type = servingstr; - ue_report_item->neighbor_Cell_RF = neighborstr; - - - ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item); - - ranco->timestamp = *ts; - ranco->reportContainer.present = RAN_Container__reportContainer_PR_oCU_CP_UE; - ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oCU_CP_UE.cellResourceReportList.list, report_item); - - // xer_fprint(stderr, &asn_DEF_RAN_Container, ranco); - - - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); - containers_list->theRANContainer = ranco; - - E2SM_KPM_IndicationMessage_Format1_t *format = - (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); - - int ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - - E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1; - - indicationmessage->indicationMessage.present = pres; - - indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format; - if (format) free(format); - - char error_buf[300] = {0, }; - size_t errlen = 0; - - asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); - - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - - asn_codec_ctx_t *opt_cod; - - uint8_t e2smbuffer[8192] = {0, }; - size_t e2smbuffer_size = 8192; - - uint8_t e2smbuffer2[8192] = {0, }; - size_t e2smbuffer_size2 = 8192; - - asn_enc_rval_t er = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); - - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); - - -} - -void encode_kpm_report_style1_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, - long fiveqi, - long dl_prb_usage, - long ul_prb_usage, - uint8_t* sst_buf, - uint8_t* sd_buf, - uint8_t* plmnid_buf, - uint8_t* nrcellid_buf, - long *dl_prbs, - long *ul_prbs) { - - - asn_codec_ctx_t *opt_cod; - - FQIPERSlicesPerPlmnPerCellListItem_t *fqi_item = - (FQIPERSlicesPerPlmnPerCellListItem_t*)calloc(1,sizeof(FQIPERSlicesPerPlmnPerCellListItem_t)); - - long *p_dl_prb_usage = (long*)calloc(1, sizeof(long)); - long *p_ul_prb_usage = (long*)calloc(1, sizeof(long)); - *p_dl_prb_usage = (long)dl_prb_usage; - *p_ul_prb_usage = (long)ul_prb_usage; - - fqi_item->fiveQI = fiveqi; - fqi_item->dl_PRBUsage = p_dl_prb_usage; - fqi_item->ul_PRBUsage = p_ul_prb_usage; - - uint8_t *buf1 = (uint8_t*)"4"; - - // std::string sd = "SD1"; - // std::vector sdvec(sd.begin(), sd.end()); - // uint8_t *bufz = &sdvec[0]; - uint8_t *bufz = (uint8_t*)"SD1"; - - SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t)); - ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai); - snssai->sST.buf = (uint8_t*)calloc(1,1); - snssai->sST.size = 1; - memcpy(snssai->sST.buf, sst_buf, 1); - snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - snssai->sD->buf = (uint8_t*)calloc(1,3); - snssai->sD->size = 3; - memcpy(snssai->sD->buf, sd_buf, 3); - - - SlicePerPlmnPerCellListItem_t *sliceitem = - (SlicePerPlmnPerCellListItem_t*)calloc(1,sizeof(SlicePerPlmnPerCellListItem_t)); - sliceitem->sliceID = *snssai; - ASN_SEQUENCE_ADD(&sliceitem->fQIPERSlicesPerPlmnPerCellList.list, fqi_item); - if (snssai) free(snssai); - - uint8_t *buf2 = (uint8_t*)"747"; - - OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnid->buf = (uint8_t*)calloc(3,1); - plmnid->size = 3; - memcpy(plmnid->buf, plmnid_buf, plmnid->size); - - ServedPlmnPerCellListItem_t *percellitem1 = - (ServedPlmnPerCellListItem_t*)calloc(1,sizeof(ServedPlmnPerCellListItem_t)); - percellitem1->pLMN_Identity = *plmnid; - percellitem1->du_PM_5GC = (FGC_DU_PM_Container*)calloc(1,sizeof(FGC_DU_PM_Container)); - ASN_SEQUENCE_ADD(&percellitem1->du_PM_5GC->slicePerPlmnPerCellList.list, sliceitem); - if (plmnid) free(plmnid); - - OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnidstr->buf = (uint8_t*)calloc(3,1); - plmnidstr->size = 3; - memcpy(plmnidstr->buf, plmnid_buf, plmnidstr->size); - - printf("enc2\n"); - - NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t)); - uint8_t* buf3 = (uint8_t*)"12340"; - nrcellid->buf = (uint8_t*)calloc(1,5); - memcpy(nrcellid->buf, nrcellid_buf, 5); - nrcellid->size = 5; - nrcellid->bits_unused = 4; - - NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI)); - nrcgi->pLMN_Identity = *plmnidstr; - nrcgi->nRCellIdentity = *nrcellid; - if (plmnidstr) free(plmnidstr); - if (nrcellid) free(nrcellid); - - - CellResourceReportListItem_t *listitem1 = (CellResourceReportListItem_t*)calloc(1,sizeof(CellResourceReportListItem_t)); - listitem1->nRCGI = *nrcgi; - listitem1->dl_TotalofAvailablePRBs = dl_prbs; - listitem1->ul_TotalofAvailablePRBs = ul_prbs; - ASN_SEQUENCE_ADD(&listitem1->servedPlmnPerCellList.list, percellitem1); - if (nrcgi) free(nrcgi); - - - ODU_PF_Container_t *ducont = (ODU_PF_Container_t*)calloc(1,sizeof(ODU_PF_Container_t)); - ASN_STRUCT_RESET(asn_DEF_ODU_PF_Container, ducont); - int ret = ASN_SEQUENCE_ADD(&ducont->cellResourceReportList.list, listitem1); - - PF_Container_PR pres1 = PF_Container_PR_oDU; - - PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t)); - ASN_STRUCT_RESET(asn_DEF_PF_Container, pfcontainer); - pfcontainer->present = pres1; - pfcontainer->choice.oDU = *ducont; - if (ducont) free(ducont); - - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); - containers_list->performanceContainer = pfcontainer; - - E2SM_KPM_IndicationMessage_Format1_t *format = - (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); - - ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - - E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1; - - indicationmessage->indicationMessage.present = pres; - - indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format; - if (format) free(format); - - char error_buf[300] = {0, }; - size_t errlen = 0; - - asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); - - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - - - uint8_t e2smbuffer[8192] = {0, }; - size_t e2smbuffer_size = 8192; - - uint8_t e2smbuffer2[8192] = {0, }; - size_t e2smbuffer_size2 = 8192; - - asn_enc_rval_t er = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); - - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); - - -} - - -void encode_kpm_report_style1(E2SM_KPM_IndicationMessage_t* indicationmessage) { - - long fiveqi = 8; - long dl_prb_usage = 50; - long ul_prb_usage = 70; - - asn_codec_ctx_t *opt_cod; - - FQIPERSlicesPerPlmnPerCellListItem_t *fqi_item = - (FQIPERSlicesPerPlmnPerCellListItem_t*)calloc(1,sizeof(FQIPERSlicesPerPlmnPerCellListItem_t)); - fqi_item->fiveQI = fiveqi; - fqi_item->dl_PRBUsage = &dl_prb_usage; - fqi_item->ul_PRBUsage = &ul_prb_usage; - - uint8_t *buf1 = (uint8_t*)"4"; - // std::string sd = "SD1"; - // std::vector sdvec(sd.begin(), sd.end()); - // uint8_t *bufz = &sdvec[0]; - uint8_t *bufz = (uint8_t*)"SD1"; - - SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t)); - ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai); - snssai->sST.buf = (uint8_t*)calloc(1,1); - snssai->sST.size = 1; - memcpy(snssai->sST.buf, buf1, 1); - snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - snssai->sD->buf = (uint8_t*)calloc(1,3); - snssai->sD->size = 3; - memcpy(snssai->sD->buf, bufz, 3); - - - SlicePerPlmnPerCellListItem_t *sliceitem = - (SlicePerPlmnPerCellListItem_t*)calloc(1,sizeof(SlicePerPlmnPerCellListItem_t)); - sliceitem->sliceID = *snssai; - ASN_SEQUENCE_ADD(&sliceitem->fQIPERSlicesPerPlmnPerCellList.list, fqi_item); - if (snssai) free(snssai); - - uint8_t *buf2 = (uint8_t*)"747"; - - OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnid->buf = (uint8_t*)calloc(3,1); - plmnid->size = 3; - memcpy(plmnid->buf, buf2, plmnid->size); - - ServedPlmnPerCellListItem_t *percellitem1 = - (ServedPlmnPerCellListItem_t*)calloc(1,sizeof(ServedPlmnPerCellListItem_t)); - percellitem1->pLMN_Identity = *plmnid; - percellitem1->du_PM_5GC = (FGC_DU_PM_Container*)calloc(1,sizeof(FGC_DU_PM_Container)); - ASN_SEQUENCE_ADD(&percellitem1->du_PM_5GC->slicePerPlmnPerCellList.list, sliceitem); - - OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnidstr->buf = (uint8_t*)calloc(3,1); - plmnidstr->size = 3; - memcpy(plmnidstr->buf, buf2, plmnidstr->size); - - printf("enc2\n"); - - NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t)); - uint8_t* buf3 = (uint8_t*)"12340"; - nrcellid->buf = (uint8_t*)calloc(1,5); - memcpy(nrcellid->buf, buf3, 5); - nrcellid->size = 5; - nrcellid->bits_unused = 4; - - NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI)); - nrcgi->pLMN_Identity = *plmnidstr; - nrcgi->nRCellIdentity = *nrcellid; - if (plmnidstr) free(plmnidstr); - if (nrcellid) free(nrcellid); - - long dl_prbs = (long)100; - long ul_prbs = (long)120; - - CellResourceReportListItem_t *listitem1 = (CellResourceReportListItem_t*)calloc(1,sizeof(CellResourceReportListItem_t)); - listitem1->nRCGI = *nrcgi; - listitem1->dl_TotalofAvailablePRBs = &dl_prbs; - listitem1->ul_TotalofAvailablePRBs = &ul_prbs; - ASN_SEQUENCE_ADD(&listitem1->servedPlmnPerCellList.list, percellitem1); - if (nrcgi) free(nrcgi); - - - ODU_PF_Container_t *ducont = (ODU_PF_Container_t*)calloc(1,sizeof(ODU_PF_Container_t)); - ASN_STRUCT_RESET(asn_DEF_ODU_PF_Container, ducont); - int ret = ASN_SEQUENCE_ADD(&ducont->cellResourceReportList.list, listitem1); - - PF_Container_PR pres1 = PF_Container_PR_oDU; - - PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t)); - ASN_STRUCT_RESET(asn_DEF_PF_Container, pfcontainer); - pfcontainer->present = pres1; - pfcontainer->choice.oDU = *ducont; - if (ducont) free(ducont); - - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); - containers_list->performanceContainer = pfcontainer; - - E2SM_KPM_IndicationMessage_Format1_t *format = - (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); - - ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - - E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1; - - indicationmessage->indicationMessage.present = pres; +#include - indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format; - if (format) free(format); +#include +#include - char error_buf[300] = {0, }; - size_t errlen = 0; +#include "encode_kpm.hpp" +#include "e2sim_defs.h" +using namespace std; - asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); +void encode_kpm_function_description(E2SM_KPM_RANfunction_Description_t* ranfunc_desc) { + uint8_t* short_name = (uint8_t*)"ORAN-E2SM-KPM"; + uint8_t* func_desc = (uint8_t*)"KPM Monitor"; + uint8_t* e2sm_odi = (uint8_t*)"OID123"; - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - + LOG_I("short_name: %s, func_desc: %s, e2sm_odi: %s", short_name, func_desc, e2sm_odi); - uint8_t e2smbuffer[8192] = {0, }; - size_t e2smbuffer_size = 8192; + long inst = 1; - uint8_t e2smbuffer2[8192] = {0, }; - size_t e2smbuffer_size2 = 8192; + ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_RANfunction_Description, ranfunc_desc); - asn_enc_rval_t er = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); + ranfunc_desc->ranFunction_Name.ranFunction_ShortName.size = strlen((char*)short_name); + ranfunc_desc->ranFunction_Name.ranFunction_ShortName.buf = + (uint8_t*)calloc(strlen((char*)short_name), sizeof(uint8_t)); + memcpy(ranfunc_desc->ranFunction_Name.ranFunction_ShortName.buf, short_name, + ranfunc_desc->ranFunction_Name.ranFunction_ShortName.size); + + ranfunc_desc->ranFunction_Name.ranFunction_Description.buf = + (uint8_t*)calloc(1, strlen((char*)func_desc)); + memcpy(ranfunc_desc->ranFunction_Name.ranFunction_Description.buf, func_desc, + strlen((char*)func_desc)); + ranfunc_desc->ranFunction_Name.ranFunction_Description.size = strlen((char*)func_desc); + ranfunc_desc->ranFunction_Name.ranFunction_Instance = &inst; - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); + ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID.buf = + (uint8_t*)calloc(1, strlen((char*)e2sm_odi)); + memcpy(ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID.buf, e2sm_odi, + strlen((char*)e2sm_odi)); + ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID.size = strlen((char*)e2sm_odi); + LOG_I("Initialize event trigger style list structure"); -} + RIC_EventTriggerStyle_Item_t* trigger_style = + (RIC_EventTriggerStyle_Item_t*)calloc(1, sizeof(RIC_EventTriggerStyle_Item_t)); + trigger_style->ric_EventTriggerStyle_Type = 1; + uint8_t* style_name = (uint8_t*)"Periodic Report"; + trigger_style->ric_EventTriggerStyle_Name.buf = (uint8_t*)calloc(1, strlen((char*)style_name)); + memcpy(trigger_style->ric_EventTriggerStyle_Name.buf, style_name, strlen((char*)style_name)); + trigger_style->ric_EventTriggerStyle_Name.size = strlen((char*)style_name); + trigger_style->ric_EventTriggerFormat_Type = 5; -void encode_kpm_report_style5_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, - uint8_t *gnbcuupname_buf, - int bytes_dl, - int bytes_ul, - uint8_t *sst_buf, - uint8_t *sd_buf, - uint8_t *plmnid_buf) { - - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); + ranfunc_desc->ric_EventTriggerStyle_List = + (E2SM_KPM_RANfunction_Description:: + E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List*) + calloc(1, sizeof(E2SM_KPM_RANfunction_Description:: + E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List)); + int ret = ASN_SEQUENCE_ADD(&ranfunc_desc->ric_EventTriggerStyle_List->list, trigger_style); - // uint8_t *buf = (uint8_t*)"GNBCUUP5"; - OCTET_STRING_t *gnbcuupname = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - gnbcuupname->size = 8; - gnbcuupname->buf = (uint8_t*)calloc(1,8); - memcpy(gnbcuupname->buf, gnbcuupname_buf, gnbcuupname->size); + LOG_I("Initialize report style structure"); + MeasurementInfo_Action_List_t* measInfo_Action_List = + (MeasurementInfo_Action_List_t*)calloc(1, sizeof(MeasurementInfo_Action_List_t)); + uint8_t* measured_metrics[] = {(uint8_t*)"CQI", (uint8_t*)"RSRP", (uint8_t*)"RSRQ"}; - //We need to convert bytes_dl into array of uint8_t + for (int i = 0; i < 3; i++) { + uint8_t* metrics = measured_metrics[i]; + MeasurementInfo_Action_Item_t* measItem = + (MeasurementInfo_Action_Item_t*)calloc(1, sizeof(MeasurementInfo_Action_Item_t)); + measItem->measName.buf = (uint8_t*)calloc(1, strlen((char*)metrics)); + memcpy(measItem->measName.buf, metrics, strlen((char*)metrics)); - int array_size_dl; + measItem->measName.size = strlen((char*)metrics); - INTEGER_t *bytesdl = (INTEGER_t*)calloc(1, sizeof(INTEGER_t)); + measItem->measID = (MeasurementTypeID_t*)calloc(1, sizeof(MeasurementTypeID_t)); + *measItem->measID = i; - if (bytes_dl <= 64) { - array_size_dl = 1; - - uint8_t buffer[array_size_dl]; - buffer[0] = bytes_dl & 0xFF; - bytesdl->buf = (uint8_t*)calloc(1,1); - memcpy(bytesdl->buf,buffer,1); - bytesdl->size = 1; - - } else if (bytes_dl <= 16384) { - array_size_dl = 2; - - uint8_t buffer[array_size_dl]; - buffer[0] = (bytes_dl >> 8) & 0xFF; - buffer[1] = bytes_dl & 0xFF; - bytesdl->buf = (uint8_t*)calloc(2,1); - memcpy(bytesdl->buf,buffer,2); - bytesdl->size = 2; - - } else if (bytes_dl <= 4194304) { - array_size_dl = 3; - - uint8_t buffer[array_size_dl]; - buffer[0] = (bytes_dl >> 16) & 0xFF; - buffer[1] = (bytes_dl >> 8) & 0xFF; - buffer[2] = bytes_dl & 0xFF; - bytesdl->buf = (uint8_t*)calloc(3,1); - memcpy(bytesdl->buf,buffer,3); - bytesdl->size = 3; - - } else if (bytes_dl <= 1073741824) { - array_size_dl = 4; - uint8_t buffer[array_size_dl]; - buffer[0] = (bytes_dl >> 24) & 0xFF; - buffer[1] = (bytes_dl >> 16) & 0xFF; - buffer[2] = (bytes_dl >> 8) & 0xFF; - buffer[3] = bytes_dl & 0xFF; - bytesdl->buf = (uint8_t*)calloc(4,1); - memcpy(bytesdl->buf,buffer,4); - bytesdl->size = 4; + ASN_SEQUENCE_ADD(&measInfo_Action_List->list, measItem); } - - - //We need to convert bytes_ul into array of uint8_t - INTEGER_t *bytesul = (INTEGER_t*)calloc(1, sizeof(INTEGER_t)); - int array_size_ul; - - if (bytes_ul <= 64) { - array_size_ul = 1; - - uint8_t buffer[array_size_ul]; - buffer[0] = bytes_ul & 0xFF; - bytesul->buf = (uint8_t*)calloc(1,1); - memcpy(bytesul->buf,buffer,1); - bytesul->size = 1; - - } else if (bytes_ul <= 16384) { - array_size_ul = 2; - - uint8_t buffer[array_size_ul]; - buffer[0] = (bytes_ul >> 8) & 0xFF; - buffer[1] = bytes_ul & 0xFF; - bytesul->buf = (uint8_t*)calloc(2,1); - memcpy(bytesul->buf,buffer,2); - bytesul->size = 2; - - } else if (bytes_ul <= 4194304) { - array_size_ul = 3; - - uint8_t buffer[array_size_ul]; - buffer[0] = (bytes_ul >> 16) & 0xFF; - buffer[1] = (bytes_ul >> 8) & 0xFF; - buffer[2] = bytes_ul & 0xFF; - bytesul->buf = (uint8_t*)calloc(3,1); - memcpy(bytesul->buf,buffer,3); - bytesul->size = 3; - - } else if (bytes_ul <= 1073741824) { - array_size_ul = 4; - uint8_t buffer[array_size_ul]; - buffer[0] = (bytes_ul >> 24) & 0xFF; - buffer[1] = (bytes_ul >> 16) & 0xFF; - buffer[2] = (bytes_ul >> 8) & 0xFF; - buffer[3] = bytes_ul & 0xFF; - bytesul->buf = (uint8_t*)calloc(4,1); - memcpy(bytesul->buf,buffer,4); - bytesul->size = 4; - } - - long fqi = 9; - FQIPERSlicesPerPlmnListItem_t *fqilistitem = (FQIPERSlicesPerPlmnListItem_t*)calloc(1, sizeof(FQIPERSlicesPerPlmnListItem_t)); - ASN_STRUCT_RESET(asn_DEF_FQIPERSlicesPerPlmnListItem, fqilistitem); - fqilistitem->fiveQI = fqi; - fqilistitem->pDCPBytesDL = bytesdl; - fqilistitem->pDCPBytesUL = bytesul; + RIC_ReportStyle_Item_t* report_style1 = + (RIC_ReportStyle_Item_t*)calloc(1, sizeof(RIC_ReportStyle_Item_t)); + report_style1->ric_ReportStyle_Type = 1; + uint8_t* buf5 = (uint8_t*)"E2 Node Measurement"; + report_style1->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1, strlen((char*)buf5)); + memcpy(report_style1->ric_ReportStyle_Name.buf, buf5, strlen((char*)buf5)); + report_style1->ric_ReportStyle_Name.size = strlen((char*)buf5); + report_style1->ric_ActionFormat_Type = 1; + report_style1->ric_IndicationHeaderFormat_Type = 1; + report_style1->ric_IndicationMessageFormat_Type = 1; + report_style1->measInfo_Action_List = *measInfo_Action_List; - uint8_t *buf1 = (uint8_t*)"4"; - uint8_t *bufz = (uint8_t*)"SD1"; - - SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t)); - ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai); - snssai->sST.buf = (uint8_t*)calloc(1,1); - snssai->sST.size = 1; - memcpy(snssai->sST.buf, sst_buf, 1); - snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - snssai->sD->buf = (uint8_t*)calloc(1,3); - snssai->sD->size = 3; - memcpy(snssai->sD->buf, sd_buf, 3); + RIC_ReportStyle_Item_t* report_style2 = + (RIC_ReportStyle_Item_t*)calloc(1, sizeof(RIC_ReportStyle_Item_t)); + report_style2->ric_ReportStyle_Type = 2; - + uint8_t* buf6 = (uint8_t*)"E2 Node Measurement for a single UE"; + report_style2->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1, strlen((char*)buf6)); + memcpy(report_style2->ric_ReportStyle_Name.buf, buf6, strlen((char*)buf6)); + report_style2->ric_ReportStyle_Name.size = strlen((char*)buf6); + report_style2->ric_ActionFormat_Type = 2; + report_style2->ric_IndicationHeaderFormat_Type = 1; + report_style2->ric_IndicationMessageFormat_Type = 1; + report_style2->measInfo_Action_List = *measInfo_Action_List; - SliceToReportListItem_t *slicelistitem = (SliceToReportListItem_t*)calloc(1,sizeof(SliceToReportListItem_t)); - ASN_STRUCT_RESET(asn_DEF_SliceToReportListItem, slicelistitem); - slicelistitem->sliceID = *snssai; - int ret = ASN_SEQUENCE_ADD(&slicelistitem->fQIPERSlicesPerPlmnList.list, fqilistitem); - if (snssai) free(snssai); + RIC_ReportStyle_Item_t* report_style3 = + (RIC_ReportStyle_Item_t*)calloc(1, sizeof(RIC_ReportStyle_Item_t)); + report_style3->ric_ReportStyle_Type = 3; - asn_codec_ctx_t *opt_cod; + uint8_t* buf7 = (uint8_t*)"Condition-based, UE-level E2 Node Measurement"; + report_style3->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1, strlen((char*)buf7)); + memcpy(report_style3->ric_ReportStyle_Name.buf, buf7, strlen((char*)buf7)); + report_style3->ric_ReportStyle_Name.size = strlen((char*)buf7); + report_style3->ric_ActionFormat_Type = 3; + report_style3->ric_IndicationHeaderFormat_Type = 1; + report_style3->ric_IndicationMessageFormat_Type = 2; + report_style3->measInfo_Action_List = *measInfo_Action_List; - uint8_t e2smbuffera[8192] = {0, }; - size_t e2smbuffer_sizea = 8192; + RIC_ReportStyle_Item_t* report_style4 = + (RIC_ReportStyle_Item_t*)calloc(1, sizeof(RIC_ReportStyle_Item_t)); + report_style4->ric_ReportStyle_Type = 4; + uint8_t* buf8 = (uint8_t*)"Common Condition-based, UE-level Measurement"; + report_style4->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1, strlen((char*)buf8)); + memcpy(report_style4->ric_ReportStyle_Name.buf, buf8, strlen((char*)buf8)); + report_style4->ric_ReportStyle_Name.size = strlen((char*)buf8); + report_style4->ric_ActionFormat_Type = 4; + report_style4->ric_IndicationHeaderFormat_Type = 1; + report_style4->ric_IndicationMessageFormat_Type = 3; + report_style4->measInfo_Action_List = *measInfo_Action_List; - asn_enc_rval_t era = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_SliceToReportListItem, - slicelistitem, e2smbuffera, e2smbuffer_sizea); - fprintf(stderr, "inner er encded is %d\n", era.encoded); - fprintf(stderr, "after encoding message\n"); + RIC_ReportStyle_Item_t* report_style5 = + (RIC_ReportStyle_Item_t*)calloc(1, sizeof(RIC_ReportStyle_Item_t)); + report_style5->ric_ReportStyle_Type = 5; + uint8_t* buf9 = (uint8_t*)"E2 Node Measurement for multiple UEs"; + report_style5->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1, strlen((char*)buf9)); + memcpy(report_style5->ric_ReportStyle_Name.buf, buf9, strlen((char*)buf9)); + report_style5->ric_ReportStyle_Name.size = strlen((char*)buf9); + report_style5->ric_ActionFormat_Type = 5; + report_style5->ric_IndicationHeaderFormat_Type = 1; + report_style5->ric_IndicationMessageFormat_Type = 3; + report_style5->measInfo_Action_List = *measInfo_Action_List; - FGC_CUUP_PM_Format_t *pm_format = (FGC_CUUP_PM_Format_t*)calloc(1,sizeof(FGC_CUUP_PM_Format_t)); - ASN_STRUCT_RESET(asn_DEF_FGC_CUUP_PM_Format, pm_format); - ret = ASN_SEQUENCE_ADD(&pm_format->sliceToReportList.list, slicelistitem); + ranfunc_desc->ric_ReportStyle_List = + (E2SM_KPM_RANfunction_Description::E2SM_KPM_RANfunction_Description__ric_ReportStyle_List*) + calloc(1, sizeof(E2SM_KPM_RANfunction_Description:: + E2SM_KPM_RANfunction_Description__ric_ReportStyle_List)); - uint8_t *buf2 = (uint8_t*)"747"; - // std::string pl = "PLMNID7"; - // std::vector plvec(pl.begin(), pl.end()); - // uint8_t *buf2 = &plvec[0]; - - OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnid->buf = (uint8_t*)calloc(3,1); - plmnid->size = 3; - memcpy(plmnid->buf, plmnid_buf, plmnid->size); + ASN_SEQUENCE_ADD(&ranfunc_desc->ric_ReportStyle_List->list, report_style1); + ASN_SEQUENCE_ADD(&ranfunc_desc->ric_ReportStyle_List->list, report_style2); + ASN_SEQUENCE_ADD(&ranfunc_desc->ric_ReportStyle_List->list, report_style3); + ASN_SEQUENCE_ADD(&ranfunc_desc->ric_ReportStyle_List->list, report_style4); + ASN_SEQUENCE_ADD(&ranfunc_desc->ric_ReportStyle_List->list, report_style5); + // xer_fprint(stderr, &asn_DEF_E2SM_KPM_RANfunction_Description, ranfunc_desc); +} - PlmnID_List_t *plmnidlist = (PlmnID_List_t*)calloc(1,sizeof(PlmnID_List_t)); - ASN_STRUCT_RESET(asn_DEF_PlmnID_List, plmnidlist); - plmnidlist->pLMN_Identity = *plmnid; - plmnidlist->cu_UP_PM_5GC = pm_format; - if (plmnid) free(plmnid); +void kpm_report_indication_header_initialized(E2SM_KPM_IndicationHeader_t* ihead, + uint8_t* plmnid_buf, uint8_t* sst_buf, + uint8_t* sd_buf, long fqival, long qcival, + uint8_t* nrcellid_buf, uint8_t* gnbid_buf, + int gnbid_unused, uint8_t* cuupid_buf, + uint8_t* duid_buf, uint8_t* cuupname_buf) { + LOG_I("Start initializing mocked indication header"); + E2SM_KPM_IndicationHeader_Format1_t* ind_header = + (E2SM_KPM_IndicationHeader_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationHeader_Format1_t)); + + ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, ind_header); + + uint8_t* buf2 = (uint8_t*)"ORANSim"; + ind_header->senderName = (PrintableString_t*)calloc(1, sizeof(PrintableString_t)); + ind_header->senderName->buf = (uint8_t*)calloc(1, strlen((char*)buf2)); + memcpy(ind_header->senderName->buf, buf2, strlen((char*)buf2)); + ind_header->senderName->size = strlen((char*)buf2); + + uint8_t* buf3 = (uint8_t*)"simulator"; + ind_header->senderType = (PrintableString_t*)calloc(1, sizeof(PrintableString_t)); + ind_header->senderType->buf = (uint8_t*)calloc(1, strlen((char*)buf3)); + memcpy(ind_header->senderType->buf, buf3, strlen((char*)buf3)); + ind_header->senderType->size = strlen((char*)buf3); + + uint8_t* buf4 = (uint8_t*)"ORAN-SC"; + ind_header->vendorName = (PrintableString_t*)calloc(1, sizeof(PrintableString_t)); + ind_header->vendorName->buf = (uint8_t*)calloc(1, strlen((char*)buf4)); + memcpy(ind_header->vendorName->buf, buf4, strlen((char*)buf4)); + ind_header->vendorName->size = strlen((char*)buf4); + + uint8_t* buf = (uint8_t*)"20200613"; + TimeStamp_t* ts = (TimeStamp_t*)calloc(1, sizeof(TimeStamp_t)); + ts->buf = (uint8_t*)calloc(strlen((char*)buf), 1); + ts->size = strlen((char*)buf); + memcpy(ts->buf, buf, ts->size); - CUUPMeasurement_Container_t *meas_cont = (CUUPMeasurement_Container_t*)calloc(1, sizeof(CUUPMeasurement_Container_t)); - ASN_STRUCT_RESET(asn_DEF_CUUPMeasurement_Container, meas_cont); - ret = ASN_SEQUENCE_ADD(&meas_cont->plmnList.list, plmnidlist); + ind_header->colletStartTime = *ts; + if (ts) free(ts); + uint8_t* buf5 = (uint8_t*)"1.0"; + ind_header->fileFormatversion = (PrintableString_t*)calloc(1, sizeof(PrintableString_t)); + ind_header->fileFormatversion->buf = (uint8_t*)calloc(1, strlen((char*)buf5)); + memcpy(ind_header->fileFormatversion->buf, buf5, strlen((char*)buf5)); + ind_header->fileFormatversion->size = strlen((char*)buf5); - - - PF_ContainerListItem_t *listitem1 = (PF_ContainerListItem_t*)calloc(1, sizeof(PF_ContainerListItem_t)); - ASN_STRUCT_RESET(asn_DEF_PF_ContainerListItem, listitem1); - listitem1->interface_type = 2; - listitem1->o_CU_UP_PM_Container = *meas_cont; - if (meas_cont) free(meas_cont); + ihead->indicationHeader_formats.present = + E2SM_KPM_IndicationHeader__indicationHeader_formats_PR_indicationHeader_Format1; + ihead->indicationHeader_formats.choice.indicationHeader_Format1 = ind_header; - OCUUP_PF_Container_t *cuupcont = (OCUUP_PF_Container_t*)calloc(1,sizeof(OCUUP_PF_Container_t)); - ASN_STRUCT_RESET(asn_DEF_OCUUP_PF_Container, cuupcont); - cuupcont->gNB_CU_UP_Name = gnbcuupname; - ret = ASN_SEQUENCE_ADD(&cuupcont->pf_ContainerList.list, listitem1); - - PF_Container_PR pres1 = PF_Container_PR_oCU_UP; + // xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationHeader, ihead); +} - PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t)); - ASN_STRUCT_RESET(asn_DEF_PF_Container, pfcontainer); - pfcontainer->present = pres1; - pfcontainer->choice.oCU_UP = *cuupcont; - if (cuupcont) free(cuupcont); +void ue_meas_kpm_report_indication_message_initialized( + E2SM_KPM_IndicationMessage_t* indicationmessage, uint8_t* nrcellid_buf, uint8_t* crnti_buf, + const uint8_t* serving_buf, const uint8_t* neighbor_buf) { + GranularityPeriod_t period = 1; + MeasurementData_t* measData = (MeasurementData_t*)calloc(1, sizeof(MeasurementData_t)); + MeasurementDataItem_t* measDataItem = + (MeasurementDataItem_t*)calloc(1, sizeof(MeasurementDataItem_t)); + MeasurementRecord_t* measDataItem_record = + (MeasurementRecord_t*)calloc(1, sizeof(MeasurementRecord_t)); + MeasurementRecordItem_t* measDataRecordItem = + (MeasurementRecordItem_t*)calloc(1, sizeof(MeasurementRecordItem_t)); + + unsigned long val = 1; + measDataRecordItem->present = MeasurementRecordItem_PR_integer; + measDataRecordItem->choice.integer = val; + + ASN_SEQUENCE_ADD(&measDataItem_record->list, measDataRecordItem); + + measDataItem->measRecord = *measDataItem_record; + long incomplete = 0; + measDataItem->incompleteFlag = (long*)calloc(1, sizeof(long)); + *measDataItem->incompleteFlag = incomplete; + ASN_SEQUENCE_ADD(&measData->list, measDataItem); + + E2SM_KPM_IndicationMessage_Format1_t* format = (E2SM_KPM_IndicationMessage_Format1_t*)calloc( + 1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); + format->granulPeriod = (GranularityPeriod_t*)calloc(1, sizeof(GranularityPeriod_t)); + *format->granulPeriod = period; + format->measData = *measData; + + MeasurementInfoList_t* measList = + (MeasurementInfoList_t*)calloc(1, sizeof(MeasurementInfoList_t)); + MeasurementInfoItem_t* measItem = + (MeasurementInfoItem_t*)calloc(1, sizeof(MeasurementInfoItem_t)); + LabelInfoList_t* labelList = (LabelInfoList_t*)calloc(1, sizeof(LabelInfoList_t)); + LabelInfoItem_t* labelItem = (LabelInfoItem_t*)calloc(1, sizeof(LabelInfoItem_t)); + MeasurementLabel_t* measLabel = (MeasurementLabel_t*)calloc(1, sizeof(MeasurementLabel_t)); + + uint8_t* plmnid_buf = (uint8_t*)"747"; + uint8_t* sst_buf = (uint8_t*)"1"; + uint8_t* sd_buf = (uint8_t*)"100"; + + S_NSSAI_t* snssai = (S_NSSAI_t*)calloc(1, sizeof(S_NSSAI_t)); + snssai->sST.buf = (uint8_t*)calloc(strlen((char*)sst_buf), sizeof(uint8_t)); + snssai->sST.size = strlen((char*)sst_buf); + memcpy(snssai->sST.buf, sst_buf, strlen((char*)sst_buf)); + + snssai->sD = (SD_t*)calloc(1, sizeof(SD_t)); + snssai->sD->buf = (uint8_t*)calloc(strlen((char*)sd_buf), sizeof(uint8_t)); + snssai->sD->size = strlen((char*)sd_buf); + memcpy(snssai->sD->buf, sd_buf, strlen((char*)sd_buf)); + + int plmnid_size = strlen((char*)plmnid_buf); + PLMNIdentity_t* plmnidstr = (PLMNIdentity_t*)calloc(1, sizeof(PLMNIdentity_t)); + plmnidstr->buf = (uint8_t*)calloc(plmnid_size, 1); + plmnidstr->size = plmnid_size; + memcpy(plmnidstr->buf, plmnid_buf, plmnidstr->size); - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); - containers_list->performanceContainer = pfcontainer; + measLabel->plmnID = plmnidstr; + measLabel->sliceID = snssai; - E2SM_KPM_IndicationMessage_Format1_t *format = - (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); + labelItem->measLabel = *measLabel; + ASN_SEQUENCE_ADD(&labelList->list, labelItem); + measItem->labelInfoList = *labelList; + if (labelList) free(labelList); + MeasurementType_t measType; + measType.present = MeasurementType_PR_measID; + measType.choice.measID = 1; + measItem->measType = measType; + ASN_SEQUENCE_ADD(&measList->list, measItem); - ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - - E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1; + format->measInfoList = measList; - indicationmessage->indicationMessage.present = pres; + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR pres = + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format1; - indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format; - if (format) free(format); + indicationmessage->indicationMessage_formats.present = pres; + indicationmessage->indicationMessage_formats.choice.indicationMessage_Format1 = format; - char error_buf[300] = {0, }; + char error_buf[300] = { + 0, + }; size_t errlen = 0; - asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); - - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - - - uint8_t e2smbuffer[8192] = {0, }; - size_t e2smbuffer_size = 8192; - - uint8_t e2smbuffer2[8192] = {0, }; - size_t e2smbuffer_size2 = 8192; - - asn_enc_rval_t er = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); - - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); + int ret = asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, + &errlen); + if (ret) { + LOG_I("Constraint validation of indication message failed: %s", error_buf); + } + // xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); } -void encode_kpm_report_style5(E2SM_KPM_IndicationMessage_t* indicationmessage) { - - ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - - - uint8_t *buf = (uint8_t*)"GNBCUUP5"; - OCTET_STRING_t *gnbcuupname = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - gnbcuupname->size = 8; - gnbcuupname->buf = (uint8_t*)calloc(1,8); - memcpy(gnbcuupname->buf, buf, gnbcuupname->size); - - - INTEGER_t *bytesdl = (INTEGER_t*)calloc(1, sizeof(INTEGER_t)); - uint8_t buffer[1]; - buffer[0]= 40000; - bytesdl->buf = (uint8_t*)calloc(1,1); - memcpy(bytesdl->buf, buffer,1); - bytesdl->size = 1; - - INTEGER_t *bytesul = (INTEGER_t*)calloc(1, sizeof(INTEGER_t)); - uint8_t buffer1[1]; - buffer1[0] = 50000; - bytesul->buf = (uint8_t*)calloc(1,1); - memcpy(bytesul->buf, buffer1, 1); - bytesul->size = 1; - - FQIPERSlicesPerPlmnListItem_t *fqilistitem = (FQIPERSlicesPerPlmnListItem_t*)calloc(1, sizeof(FQIPERSlicesPerPlmnListItem_t)); - ASN_STRUCT_RESET(asn_DEF_FQIPERSlicesPerPlmnListItem, fqilistitem); - fqilistitem->fiveQI = 9; - fqilistitem->pDCPBytesDL = bytesdl; - fqilistitem->pDCPBytesUL = bytesul; - - - uint8_t *buf1 = (uint8_t*)"4"; - uint8_t *bufz = (uint8_t*)"SD1"; - - SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t)); - ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai); - snssai->sST.buf = (uint8_t*)calloc(1,1); - snssai->sST.size = 1; - memcpy(snssai->sST.buf, buf1, 1); - snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); - snssai->sD->buf = (uint8_t*)calloc(1,3); - snssai->sD->size = 3; - memcpy(snssai->sD->buf, bufz, 3); - - - - SliceToReportListItem_t *slicelistitem = (SliceToReportListItem_t*)calloc(1,sizeof(SliceToReportListItem_t)); - ASN_STRUCT_RESET(asn_DEF_SliceToReportListItem, slicelistitem); - slicelistitem->sliceID = *snssai; - int ret = ASN_SEQUENCE_ADD(&slicelistitem->fQIPERSlicesPerPlmnList.list, fqilistitem); - if (snssai) free(snssai); - - asn_codec_ctx_t *opt_cod; - - - uint8_t e2smbuffera[8192] = {0, }; - size_t e2smbuffer_sizea = 8192; - +void cell_meas_kpm_report_indication_message_style_1_initialized( + E2SM_KPM_IndicationMessage_t* indicationmessage, long fiveqi, long dl_prb_usage, + long ul_prb_usage, uint8_t* nrcellid_buf, long* dl_prbs, long* ul_prbs) { + LOG_I("Preparing indication message for cell measurement report"); + + asn_codec_ctx_t* opt_cod; + + GranularityPeriod_t period = 1; + MeasurementData_t* measData = (MeasurementData_t*)calloc(1, sizeof(MeasurementData_t)); + MeasurementDataItem_t* measDataItem = + (MeasurementDataItem_t*)calloc(1, sizeof(MeasurementDataItem_t)); + MeasurementRecord_t* measDataItem_record = + (MeasurementRecord_t*)calloc(1, sizeof(MeasurementRecord_t)); + MeasurementRecordItem_t* measDataRecordItem = + (MeasurementRecordItem_t*)calloc(1, sizeof(MeasurementRecordItem_t)); + + measDataRecordItem->present = MeasurementRecordItem_PR_integer; + measDataRecordItem->choice.integer = 1; + + ASN_SEQUENCE_ADD(&measDataItem_record->list, measDataRecordItem); + + measDataItem->measRecord = *measDataItem_record; + measDataItem->incompleteFlag = (long*)calloc(1, sizeof(long)); + *measDataItem->incompleteFlag = 0; + ASN_SEQUENCE_ADD(&measData->list, measDataItem); + + E2SM_KPM_IndicationMessage_Format1_t* format = (E2SM_KPM_IndicationMessage_Format1_t*)calloc( + 1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); + format->granulPeriod = (GranularityPeriod_t*)calloc(1, sizeof(GranularityPeriod_t)); + *format->granulPeriod = period; + format->measData = *measData; + + MeasurementInfoList_t* measList = + (MeasurementInfoList_t*)calloc(1, sizeof(MeasurementInfoList_t)); + MeasurementInfoItem_t* measItem = + (MeasurementInfoItem_t*)calloc(1, sizeof(MeasurementInfoItem_t)); + LabelInfoList_t* labelList = (LabelInfoList_t*)calloc(1, sizeof(LabelInfoList_t)); + LabelInfoItem_t* labelItem = (LabelInfoItem_t*)calloc(1, sizeof(LabelInfoItem_t)); + MeasurementLabel_t* measLabel = (MeasurementLabel_t*)calloc(1, sizeof(MeasurementLabel_t)); + + uint8_t* plmnid_buf = (uint8_t*)"747"; + uint8_t* sst_buf = (uint8_t*)"1"; + uint8_t* sd_buf = (uint8_t*)"100"; + + S_NSSAI_t* snssai = (S_NSSAI_t*)calloc(1, sizeof(S_NSSAI_t)); + snssai->sST.buf = (uint8_t*)calloc(strlen((char*)sst_buf), sizeof(uint8_t)); + snssai->sST.size = strlen((char*)sst_buf); + memcpy(snssai->sST.buf, sst_buf, strlen((char*)sst_buf)); + + snssai->sD = (SD_t*)calloc(1, sizeof(SD_t)); + snssai->sD->buf = (uint8_t*)calloc(strlen((char*)sd_buf), sizeof(uint8_t)); + snssai->sD->size = strlen((char*)sd_buf); + memcpy(snssai->sD->buf, sd_buf, strlen((char*)sd_buf)); + + int plmnid_size = strlen((char*)plmnid_buf); + PLMNIdentity_t* plmnidstr = (PLMNIdentity_t*)calloc(1, sizeof(PLMNIdentity_t)); + plmnidstr->buf = (uint8_t*)calloc(plmnid_size, 1); + plmnidstr->size = plmnid_size; + memcpy(plmnidstr->buf, plmnid_buf, plmnidstr->size); + measLabel->plmnID = plmnidstr; + measLabel->sliceID = snssai; - asn_enc_rval_t era = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_SliceToReportListItem, - slicelistitem, e2smbuffera, e2smbuffer_sizea); - fprintf(stderr, "inner er encded is %d\n", era.encoded); - fprintf(stderr, "after encoding message\n"); + labelItem->measLabel = *measLabel; + ASN_SEQUENCE_ADD(&labelList->list, labelItem); + measItem->labelInfoList = *labelList; + if (labelList) free(labelList); + MeasurementType_t measType; + measType.present = MeasurementType_PR_measID; + measType.choice.measID = 1; + measItem->measType = measType; + ASN_SEQUENCE_ADD(&measList->list, measItem); + format->measInfoList = measList; + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR pres = + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format1; - FGC_CUUP_PM_Format_t *pm_format = (FGC_CUUP_PM_Format_t*)calloc(1,sizeof(FGC_CUUP_PM_Format_t)); - ASN_STRUCT_RESET(asn_DEF_FGC_CUUP_PM_Format, pm_format); - ret = ASN_SEQUENCE_ADD(&pm_format->sliceToReportList.list, slicelistitem); + indicationmessage->indicationMessage_formats.present = pres; + indicationmessage->indicationMessage_formats.choice.indicationMessage_Format1 = format; - uint8_t *buf2 = (uint8_t*)"747"; - // std::string pl = "PLMNID7"; - // std::vector plvec(pl.begin(), pl.end()); - // uint8_t *buf2 = &plvec[0]; - - OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); - plmnid->buf = (uint8_t*)calloc(3,1); - plmnid->size = 3; - memcpy(plmnid->buf, buf2, plmnid->size); + char error_buf[300] = { + 0, + }; + size_t errlen = 0; + int ret = asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, + &errlen); - PlmnID_List_t *plmnidlist = (PlmnID_List_t*)calloc(1,sizeof(PlmnID_List_t)); - ASN_STRUCT_RESET(asn_DEF_PlmnID_List, plmnidlist); - plmnidlist->pLMN_Identity = *plmnid; - plmnidlist->cu_UP_PM_5GC = pm_format; + if (ret) { + LOG_I("Constraint validation of indication message failed: %s\n", error_buf); + } + // xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); +} - CUUPMeasurement_Container_t *meas_cont = (CUUPMeasurement_Container_t*)calloc(1, sizeof(CUUPMeasurement_Container_t)); - ASN_STRUCT_RESET(asn_DEF_CUUPMeasurement_Container, meas_cont); - ret = ASN_SEQUENCE_ADD(&meas_cont->plmnList.list, plmnidlist); +void encode_kpm_report_style1(E2SM_KPM_IndicationMessage_t* indicationmessage) { + long fiveqi = 8; + long dl_prb_usage = 50; + long ul_prb_usage = 70; + asn_codec_ctx_t* opt_cod; - - - PF_ContainerListItem_t *listitem1 = (PF_ContainerListItem_t*)calloc(1, sizeof(PF_ContainerListItem_t)); - ASN_STRUCT_RESET(asn_DEF_PF_ContainerListItem, listitem1); - listitem1->interface_type = 2; - listitem1->o_CU_UP_PM_Container = *meas_cont; - if (meas_cont) free(meas_cont); + GranularityPeriod_t period = 1; + MeasurementData_t measData; + MeasurementDataItem_t measDataItem; + MeasurementRecord_t measDataItem_record; + MeasurementRecordItem_t measDataRecordItem; - OCUUP_PF_Container_t *cuupcont = (OCUUP_PF_Container_t*)calloc(1,sizeof(OCUUP_PF_Container_t)); - ASN_STRUCT_RESET(asn_DEF_OCUUP_PF_Container, cuupcont); - cuupcont->gNB_CU_UP_Name = gnbcuupname; - ret = ASN_SEQUENCE_ADD(&cuupcont->pf_ContainerList.list, listitem1); - - PF_Container_PR pres1 = PF_Container_PR_oCU_UP; + measDataRecordItem.present = MeasurementRecordItem_PR_real; + measDataRecordItem.choice.real = 1.5; - PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t)); - ASN_STRUCT_RESET(asn_DEF_PF_Container, pfcontainer); - pfcontainer->present = pres1; - pfcontainer->choice.oCU_UP = *cuupcont; - if (cuupcont) free(cuupcont); + ASN_SEQUENCE_ADD(&measDataItem_record.list, &measDataRecordItem); - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); - containers_list->performanceContainer = pfcontainer; + measDataItem.measRecord = measDataItem_record; + ASN_SEQUENCE_ADD(&measData.list, &measDataItem); - E2SM_KPM_IndicationMessage_Format1_t *format = - (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); + E2SM_KPM_IndicationMessage_Format1_t* format = (E2SM_KPM_IndicationMessage_Format1_t*)calloc( + 1, sizeof(E2SM_KPM_IndicationMessage_Format1_t)); ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); - ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - - E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1; + format->granulPeriod = . + format->measData = measData; + + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR pres = + E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format1; - indicationmessage->indicationMessage.present = pres; + indicationmessage->indicationMessage_formats.present = pres; - indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format; + indicationmessage->indicationMessage_formats.choice.indicationMessage_Format1 = format; if (format) free(format); - char error_buf[300] = {0, }; + char error_buf[300] = { + 0, + }; size_t errlen = 0; - asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); + int ret = asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, + &errlen); - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - + if (ret) { + LOG_I("Constraint validation of indication message failed: %s\n", error_buf); + } - uint8_t e2smbuffer[8192] = {0, }; + uint8_t e2smbuffer[8192] = { + 0, + }; size_t e2smbuffer_size = 8192; - uint8_t e2smbuffer2[8192] = {0, }; - size_t e2smbuffer_size2 = 8192; - asn_enc_rval_t er = - asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); - - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); + asn_encode_to_buffer(opt_cod, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_KPM_IndicationMessage, + indicationmessage, e2smbuffer, e2smbuffer_size); + if (er.encoded == -1) { + LOG_I("Failed to serialize message. Detail: %s.\n", asn_DEF_E2SM_KPM_IndicationMessage.name); + } else if (er.encoded > e2smbuffer_size) { + LOG_I("Buffer of size %zu is too small for %s, need %zu\n", e2smbuffer_size, asn_DEF_E2SM_KPM_IndicationMessage.name, er.encoded); + } } - void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { - /* ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); //std::string gn = "GNBCUUP5"; @@ -1865,10 +511,9 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { memcpy(bytesul->buf, buffer1, 1); bytesul->size = 1; - FQIPERSlicesPerPlmnListItem_t *fqilistitem = (FQIPERSlicesPerPlmnListItem_t*)calloc(1, sizeof(FQIPERSlicesPerPlmnListItem_t)); - ASN_STRUCT_RESET(asn_DEF_FQIPERSlicesPerPlmnListItem, fqilistitem); - fqilistitem->fiveQI = 9; - fqilistitem->pDCPBytesDL = bytesdl; + FQIPERSlicesPerPlmnListItem_t *fqilistitem = (FQIPERSlicesPerPlmnListItem_t*)calloc(1, + sizeof(FQIPERSlicesPerPlmnListItem_t)); ASN_STRUCT_RESET(asn_DEF_FQIPERSlicesPerPlmnListItem, + fqilistitem); fqilistitem->fiveQI = 9; fqilistitem->pDCPBytesDL = bytesdl; fqilistitem->pDCPBytesUL = bytesul; @@ -1876,7 +521,7 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { // std::string sl = "SLICE4"; // std::vector slvec(sl.begin(), sl.end()); // uint8_t *buf1 = &slvec[0]; - uint8_t *buf1 = (uint8_t*)"4"; + uint8_t *buf1 = (uint8_t*)"4"; OCTET_STRING_t *sst = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); sst->size = 6; sst->buf = (uint8_t*)calloc(1,6); @@ -1891,7 +536,7 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { sds->buf = (uint8_t*)calloc(1,3); memcpy(sds->buf, bufz, sds->size); - + SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t)); ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai); snssai->sST.buf = (uint8_t*)calloc(1,1); @@ -1902,14 +547,15 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { snssai->sD->size = 3; memcpy(snssai->sD->buf, bufz, 3); - - SliceToReportListItem_t *slicelistitem = (SliceToReportListItem_t*)calloc(1,sizeof(SliceToReportListItem_t)); + + SliceToReportListItem_t *slicelistitem = + (SliceToReportListItem_t*)calloc(1,sizeof(SliceToReportListItem_t)); ASN_STRUCT_RESET(asn_DEF_SliceToReportListItem, slicelistitem); slicelistitem->sliceID = *snssai; int ret = ASN_SEQUENCE_ADD(&slicelistitem->fQIPERSlicesPerPlmnList.list, fqilistitem); - asn_codec_ctx_t *opt_cod; + asn_codec_ctx_t *opt_cod; uint8_t e2smbuffera[8192]; @@ -1919,11 +565,11 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { asn_enc_rval_t era = asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_SliceToReportListItem, - slicelistitem, e2smbuffera, e2smbuffer_sizea); + ATS_ALIGNED_BASIC_PER, + &asn_DEF_SliceToReportListItem, + slicelistitem, e2smbuffera, e2smbuffer_sizea); fprintf(stderr, "inner er encded is %d\n", era.encoded); - fprintf(stderr, "after encoding message\n"); + fprintf(stderr, "after encoding message"); @@ -1935,7 +581,7 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { // std::string pl = "PLMNID7"; // std::vector plvec(pl.begin(), pl.end()); // uint8_t *buf2 = &plvec[0]; - + OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); plmnid->buf = (uint8_t*)calloc(3,1); plmnid->size = 3; @@ -1947,15 +593,15 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { plmnidlist->pLMN_Identity = *plmnid; plmnidlist->cu_UP_PM_5GC = pm_format; - CUUPMeasurement_Container_t *meas_cont = (CUUPMeasurement_Container_t*)calloc(1, sizeof(CUUPMeasurement_Container_t)); - ASN_STRUCT_RESET(asn_DEF_CUUPMeasurement_Container, meas_cont); - ret = ASN_SEQUENCE_ADD(&meas_cont->plmnList.list, plmnidlist); + CUUPMeasurement_Container_t *meas_cont = (CUUPMeasurement_Container_t*)calloc(1, + sizeof(CUUPMeasurement_Container_t)); ASN_STRUCT_RESET(asn_DEF_CUUPMeasurement_Container, + meas_cont); ret = ASN_SEQUENCE_ADD(&meas_cont->plmnList.list, plmnidlist); + + - - - PF_ContainerListItem_t *listitem1 = (PF_ContainerListItem_t*)calloc(1, sizeof(PF_ContainerListItem_t)); - ASN_STRUCT_RESET(asn_DEF_PF_ContainerListItem, listitem1); + PF_ContainerListItem_t *listitem1 = (PF_ContainerListItem_t*)calloc(1, + sizeof(PF_ContainerListItem_t)); ASN_STRUCT_RESET(asn_DEF_PF_ContainerListItem, listitem1); listitem1->interface_type = 2; listitem1->o_CU_UP_PM_Container = *meas_cont; @@ -1963,7 +609,7 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { ASN_STRUCT_RESET(asn_DEF_OCUUP_PF_Container, cuupcont); cuupcont->gNB_CU_UP_Name = gnbcuupname; ret = ASN_SEQUENCE_ADD(&cuupcont->pf_ContainerList.list, listitem1); - + PF_Container_PR pres1 = PF_Container_PR_oCU_UP; PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t)); @@ -1971,8 +617,8 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { pfcontainer->present = pres1; pfcontainer->choice.oCU_UP = *cuupcont; - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); + PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, + sizeof(PM_Containers_List_t)); ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); containers_list->performanceContainer = pfcontainer; E2SM_KPM_IndicationMessage_Format1_t *format = @@ -1980,7 +626,7 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - + E2SM_KPM_IndicationMessage_PR pres = E2SM_KPM_IndicationMessage_PR_indicationMessage_Format1; indicationmessage->present = pres; @@ -1995,22 +641,22 @@ void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) { printf("error buf %s\n", error_buf); xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage); - + uint8_t e2smbuffer[8192]; size_t e2smbuffer_size = 8192; uint8_t e2smbuffer2[8192]; - size_t e2smbuffer_size2 = 8192; + size_t e2smbuffer_size2 = 8192; asn_enc_rval_t er = asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); + ATS_ALIGNED_BASIC_PER, + &asn_DEF_E2SM_KPM_IndicationMessage, + indicationmessage, e2smbuffer, e2smbuffer_size); fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); + fprintf(stderr, "after encoding message"); */ } @@ -2041,18 +687,17 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) { memcpy(bytesul->buf, buffer1, 1); bytesul->size = 1; - FQIPERSlicesPerPlmnListItem_t *fqilistitem = (FQIPERSlicesPerPlmnListItem_t*)calloc(1, sizeof(FQIPERSlicesPerPlmnListItem_t)); - ASN_STRUCT_RESET(asn_DEF_FQIPERSlicesPerPlmnListItem, fqilistitem); - fqilistitem->fiveQI = 9; - fqilistitem->pDCPBytesDL = bytesdl; - fqilistitem->pDCPBytesUL = bytesul; + FQIPERSlicesPerPlmnListItem_t *fqilistitem = (FQIPERSlicesPerPlmnListItem_t*)calloc(1, +sizeof(FQIPERSlicesPerPlmnListItem_t)); ASN_STRUCT_RESET(asn_DEF_FQIPERSlicesPerPlmnListItem, +fqilistitem); fqilistitem->fiveQI = 9; fqilistitem->pDCPBytesDL = bytesdl; fqilistitem->pDCPBytesUL += bytesul; std::string sl = "SLICE4"; std::vector slvec(sl.begin(), sl.end()); // uint8_t *buf1 = &slvec[0]; - uint8_t *buf1 = (uint8_t*)"SLICE4"; + uint8_t *buf1 = (uint8_t*)"SLICE4"; OCTET_STRING_t *sst = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t)); sst->size = 6; sst->buf = (uint8_t*)calloc(1,6); @@ -2067,7 +712,7 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) { sds->buf = (uint8_t*)calloc(1,3); memcpy(sds->buf, bufz, sds->size); - + SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t)); ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai); snssai->sST.buf = (uint8_t*)calloc(6,1); @@ -2078,23 +723,24 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) { snssai->sD->size = 3; memcpy(snssai->sD->buf, bufz, 3); - - SliceToReportListItem_t *slicelistitem = (SliceToReportListItem_t*)calloc(1,sizeof(SliceToReportListItem_t)); + + SliceToReportListItem_t *slicelistitem = +(SliceToReportListItem_t*)calloc(1,sizeof(SliceToReportListItem_t)); ASN_STRUCT_RESET(asn_DEF_SliceToReportListItem, slicelistitem); slicelistitem->sliceID = *snssai; int ret = ASN_SEQUENCE_ADD(&slicelistitem->fQIPERSlicesPerPlmnList.list, fqilistitem); uint8_t e2smbuffera[8192]; - size_t e2smbuffer_sizea = 8192; + size_t e2smbuffer_sizea = 8192; auto era = asn_encode_to_buffer(nullptr, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_SliceToReportListItem, - slicelistitem, e2smbuffera, e2smbuffer_sizea); + ATS_ALIGNED_BASIC_PER, + &asn_DEF_SliceToReportListItem, + slicelistitem, e2smbuffera, e2smbuffer_sizea); fprintf(stderr, "inner er encded is %d\n", era.encoded); - fprintf(stderr, "after encoding message\n"); + fprintf(stderr, "after encoding message"); FGC_CUUP_PM_Format_t *pm_format = (FGC_CUUP_PM_Format_t*)calloc(1,sizeof(FGC_CUUP_PM_Format_t)); ASN_STRUCT_RESET(asn_DEF_FGC_CUUP_PM_Format, pm_format); @@ -2103,10 +749,10 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) { std::string pl = "PLMNID7"; std::vector plvec(pl.begin(), pl.end()); uint8_t *buf2 = &plvec[0]; - + OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); plmnid->buf = (uint8_t*)calloc(1,7); - plmnid->size = 7; + plmnid->size = 7; memcpy(plmnid->buf, buf2, plmnid->size); @@ -2115,15 +761,15 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) { plmnidlist->pLMN_Identity = *plmnid; plmnidlist->cu_UP_PM_5GC = pm_format; - CUUPMeasurement_Container_t *meas_cont = (CUUPMeasurement_Container_t*)calloc(1, sizeof(CUUPMeasurement_Container_t)); - ASN_STRUCT_RESET(asn_DEF_CUUPMeasurement_Container, meas_cont); - ret = ASN_SEQUENCE_ADD(&meas_cont->plmnList.list, plmnidlist); + CUUPMeasurement_Container_t *meas_cont = (CUUPMeasurement_Container_t*)calloc(1, +sizeof(CUUPMeasurement_Container_t)); ASN_STRUCT_RESET(asn_DEF_CUUPMeasurement_Container, +meas_cont); ret = ASN_SEQUENCE_ADD(&meas_cont->plmnList.list, plmnidlist); + - - - PF_ContainerListItem_t *listitem1 = (PF_ContainerListItem_t*)calloc(1, sizeof(PF_ContainerListItem_t)); - ASN_STRUCT_RESET(asn_DEF_PF_ContainerListItem, listitem1); + + PF_ContainerListItem_t *listitem1 = (PF_ContainerListItem_t*)calloc(1, +sizeof(PF_ContainerListItem_t)); ASN_STRUCT_RESET(asn_DEF_PF_ContainerListItem, listitem1); listitem1->interface_type = 2; listitem1->o_CU_UP_PM_Container = *meas_cont; @@ -2131,7 +777,7 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) { ASN_STRUCT_RESET(asn_DEF_OCUUP_PF_Container, cuupcont); cuupcont->gNB_CU_UP_Name = gnbcuupname; ret = ASN_SEQUENCE_ADD(&cuupcont->pf_ContainerList.list, listitem1); - + PF_Container_PR pres1 = PF_Container_PR_oCU_UP; PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t)); @@ -2139,8 +785,8 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) { pfcontainer->present = pres1; pfcontainer->choice.oCU_UP = *cuupcont; - PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t)); - ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); + PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, +sizeof(PM_Containers_List_t)); ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list); containers_list->performanceContainer = pfcontainer; E2SM_KPM_IndicationMessage_Format1_t *format = @@ -2148,7 +794,7 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) { ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format); ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list); - + E2SM_KPM_IndicationMessage_PR pres = E2SM_KPM_IndicationMessage_PR_indicationMessage_Format1; indicationmessage->present = pres; @@ -2161,23 +807,23 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) { asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen); printf("error length %d\n", errlen); printf("error buf %s\n", error_buf); - + uint8_t e2smbuffer[8192]; size_t e2smbuffer_size = 8192; uint8_t e2smbuffer2[8192]; - size_t e2smbuffer_size2 = 8192; + size_t e2smbuffer_size2 = 8192; auto er = asn_encode_to_buffer(nullptr, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - indicationmessage, e2smbuffer, e2smbuffer_size); + ATS_ALIGNED_BASIC_PER, + &asn_DEF_E2SM_KPM_IndicationMessage, + indicationmessage, e2smbuffer, e2smbuffer_size); fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); + fprintf(stderr, "after encoding message"); + - } -*/ +*/ \ No newline at end of file diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.hpp b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.hpp index 96314ab..77b2783 100755 --- a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.hpp +++ b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/encode_kpm.hpp @@ -20,14 +20,24 @@ #define ENCODE_KPM_HPP extern "C" { - #include "OCUCP-PF-Container.h" #include "OCTET_STRING.h" #include "asn_application.h" + #include "GranularityPeriod.h" + #include "TimeStamp.h" + #include "E2SM-KPM-IndicationHeader-Format1.h" + #include "E2SM-KPM-IndicationMessage-Format1.h" #include "E2SM-KPM-IndicationMessage.h" #include "E2SM-KPM-IndicationHeader.h" - #include "FQIPERSlicesPerPlmnListItem.h" #include "E2SM-KPM-RANfunction-Description.h" - #include "Timestamp.h" + #include "RIC-EventTriggerStyle-Item.h" + #include "RIC-ReportStyle-Item.h" + #include "MeasurementDataItem.h" + #include "MeasurementRecordItem.h" + #include "MeasurementInfo-Action-Item.h" + #include "MeasurementInfoList.h" + #include "MeasurementInfoItem.h" + #include "LabelInfoItem.h" + #include "S-NSSAI.h" } void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage); @@ -36,33 +46,16 @@ void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage); void encode_kpm_function_description(E2SM_KPM_RANfunction_Description_t* ranfunc_desc); -void encode_kpm_report_style5(E2SM_KPM_IndicationMessage_t* indicationmessage); - -void encode_kpm_odu_user_level(RAN_Container_t *ranco); - -void encode_kpm_ocucp_user_level(RAN_Container_t *ranco); - -void encode_e2sm_kpm_indication_header(E2SM_KPM_IndicationHeader_t *ihead, uint8_t *plmnid_buf, uint8_t *sst_buf, uint8_t *sd_buf, long fqival, long qcival, uint8_t *nrcellid_buf, uint8_t *gnbid_buf, int gnbid_unused, uint8_t *cuupid_buf, uint8_t *duid_buf, uint8_t *cuupname_buf); - -void encode_kpm_ocuup_user_level(RAN_Container_t *ranco); - void encode_kpm_report_rancontainer_du(E2SM_KPM_IndicationMessage_t *indMsg); -void encode_kpm_report_rancontainer_cucp(E2SM_KPM_IndicationMessage_t *indMsg); - -void encode_kpm_report_rancontainer_cuup(E2SM_KPM_IndicationMessage_t *indMsg); - void encode_kpm_report_style1(E2SM_KPM_IndicationMessage_t* indicationmessage); -void encode_kpm_report_rancontainer_du_parameterized(E2SM_KPM_IndicationMessage_t *indMsg, uint8_t *plmnid_buf, uint8_t *nrcellid_buf, uint8_t *crnti_buf, long prb_usage_dl, long prb_usage_ul); - -void encode_kpm_report_rancontainer_cucp_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage,uint8_t *plmnid_buf,uint8_t *nrcellid_buf,uint8_t *crnti_buf,const uint8_t *serving_buf, const uint8_t *neighbor_buf); +void kpm_report_indication_header_initialized(E2SM_KPM_IndicationHeader_t *ihead, uint8_t *plmnid_buf, uint8_t *sst_buf, uint8_t *sd_buf, long fqival, long qcival, uint8_t *nrcellid_buf, uint8_t *gnbid_buf, int gnbid_unused, uint8_t *cuupid_buf, uint8_t *duid_buf, uint8_t *cuupname_buf); -void encode_kpm_report_rancontainer_cuup_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, uint8_t *plmnid_buf, uint8_t *nrcellid_buf, uint8_t *crnti_buf,int pdcp_bytesdl, int pdcp_bytesul); +void ue_meas_kpm_report_indication_message_initialized(E2SM_KPM_IndicationMessage_t* indicationmessage,uint8_t *nrcellid_buf,uint8_t *crnti_buf,const uint8_t *serving_buf, const uint8_t *neighbor_buf); -void encode_kpm_report_style1_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, long fiveqi, long dl_prb_usage, long ul_prb_usage, uint8_t* sst_buf, uint8_t* sd_buf, uint8_t* plmnid_buf, uint8_t* nrcellid_buf, long *dl_prbs, long *ul_prbs); +void cell_meas_kpm_report_indication_message_style_1_initialized(E2SM_KPM_IndicationMessage_t* indicationmessage, long fiveqi, long dl_prb_usage, long ul_prb_usage, uint8_t* nrcellid_buf, long *dl_prbs, long *ul_prbs); -void encode_kpm_report_style5_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, uint8_t *gnbcuupname_buf, int bytes_dl,int bytes_ul, uint8_t *sst_buf, uint8_t *sd_buf, uint8_t *plmnid_buf); #endif diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/kpm_callbacks.cpp b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/kpm_callbacks.cpp index fea3a4b..59bd744 100755 --- a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/kpm_callbacks.cpp +++ b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/kpm_callbacks.cpp @@ -23,15 +23,12 @@ extern "C" { - #include "OCUCP-PF-Container.h" #include "OCTET_STRING.h" #include "asn_application.h" #include "E2SM-KPM-IndicationMessage.h" - #include "FQIPERSlicesPerPlmnListItem.h" #include "E2SM-KPM-RANfunction-Description.h" #include "E2SM-KPM-IndicationHeader-Format1.h" #include "E2SM-KPM-IndicationHeader.h" - #include "Timestamp.h" #include "E2AP-PDU.h" #include "RICsubscriptionRequest.h" #include "RICsubscriptionResponse.h" @@ -51,7 +48,8 @@ extern "C" { #include #include "viavi_connector.hpp" - +#include "errno.h" +#include "e2sim_defs.h" using json = nlohmann::json; using namespace std; @@ -62,9 +60,7 @@ E2Sim e2sim; int main(int argc, char* argv[]) { - fprintf(stderr, "Starting KPM processor sim"); - - fprintf(stderr, "JSON Test\n"); + LOG_I("Starting KPM simulator"); uint8_t *nrcellid_buf = (uint8_t*)calloc(1,5); nrcellid_buf[0] = 0x22; @@ -73,8 +69,6 @@ int main(int argc, char* argv[]) { nrcellid_buf[3] = 0x00; nrcellid_buf[4] = 0x70; - - asn_codec_ctx_t *opt_cod; E2SM_KPM_RANfunction_Description_t *ranfunc_desc = @@ -90,33 +84,20 @@ int main(int argc, char* argv[]) { &asn_DEF_E2SM_KPM_RANfunction_Description, ranfunc_desc, e2smbuffer, e2smbuffer_size); - fprintf(stderr, "er encded is %d\n", er.encoded); - fprintf(stderr, "after encoding message\n"); - fprintf(stderr, "here is encoded message %s\n", e2smbuffer); - + if(er.encoded == -1) { + LOG_I("Failed to serialize function description data. Detail: %s.", asn_DEF_E2SM_KPM_RANfunction_Description.name); + } else if(er.encoded > e2smbuffer_size) { + LOG_I("Buffer of size %zu is too small for %s, need %zu", e2smbuffer_size, asn_DEF_E2SM_KPM_RANfunction_Description.name, er.encoded); + } + uint8_t *ranfuncdesc = (uint8_t*)calloc(1,er.encoded); memcpy(ranfuncdesc, e2smbuffer, er.encoded); - printf("this is the char array %s\n", (char*)ranfuncdesc); - OCTET_STRING_t *ranfunc_ostr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t)); ranfunc_ostr->buf = (uint8_t*)calloc(1,er.encoded); ranfunc_ostr->size = er.encoded; memcpy(ranfunc_ostr->buf,e2smbuffer,er.encoded); - - printf("!!!lenth of ranfuncdesc is %d\n", strlen((char*)ranfuncdesc)); - printf("value of this index is %d\n", ranfuncdesc[0]); - printf("value of this index is %d\n", ranfuncdesc[1]); - printf("value of this index is %d\n", ranfuncdesc[2]); - printf("value of this index is %d\n", ranfuncdesc[3]); - printf("value of this index is %d\n", ranfuncdesc[4]); - printf("value of this index is %d\n", ranfuncdesc[5]); - printf("value of this index is %d\n", ranfuncdesc[6]); - printf("value of this index is %d\n", ranfuncdesc[10]); - printf("value of this index is %d\n", ranfuncdesc[15]); - printf("value of this index is %d\n", ranfuncdesc[100]); - printf("value of this index is %d\n", ranfuncdesc[101]); - + e2sim.register_e2sm(0,ranfunc_ostr); e2sim.register_subscription_callback(0,&callback_kpm_subscription_request); @@ -178,534 +159,371 @@ void run_report_loop(long requestorId, long instanceId, long ranFunctionId, long uint8_t *sd_buf = (uint8_t*)"100"; - fprintf(stderr,"De line is %s\n", str.c_str()); + LOG_I("Current line: %s", str.c_str()); bool valid = false; try { all_ues_json = json::parse(str); - valid = true; } catch (...) { - fprintf(stderr, "Exception on reading json\n"); + LOG_I("Exception on reading json"); + exit(1); } if (valid) { - fprintf(stderr, "key is valid\n"); - std::string first_key = all_ues_json.begin().key(); - fprintf(stderr, "first key is %s\n", first_key.c_str()); + LOG_I("First key is %s\n", first_key.c_str()); if (first_key.compare("ueMeasReport") == 0) { - - fprintf(stderr, "it is equal to ue meas report\n"); - int numMeasReports = (all_ues_json["/ueMeasReport/ueMeasReportList"_json_pointer]).size(); - - - for (int i = 0; i < numMeasReports; i++) { - int nextCellId; - int nextRsrp; - int nextRsrq; - int nextRssinr; - float tput; - int prb_usage; - std::string ueId; - - fprintf(stderr,"UE number %d\n", i); - - json::json_pointer p001(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/ue-id"); - ueId = all_ues_json[p001].get(); - fprintf(stderr, "UEID %s\n", ueId.c_str()); - - json::json_pointer p0(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/throughput"); - tput = all_ues_json[p0].get(); - fprintf(stderr, "Throughput %f\n", tput); - - json::json_pointer p00(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/prb_usage"); - prb_usage = all_ues_json[p00].get(); - fprintf(stderr, "Throughput %d\n", prb_usage); - - json::json_pointer p1(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/nrCellIdentity"); - nextCellId = all_ues_json[p1].get(); - fprintf(stderr, "Serving Cell %d\n",nextCellId); - - json::json_pointer p2(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/servingCellRfReport/rsrp"); - nextRsrp = all_ues_json[p2].get(); - fprintf(stderr," RSRP %d\n", nextRsrp); - - json::json_pointer p3(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/servingCellRfReport/rsrq"); - nextRsrq = all_ues_json[p3].get(); - fprintf(stderr," RSRQ %d\n",nextRsrq); - - json::json_pointer p4(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/servingCellRfReport/rssinr"); - nextRssinr = all_ues_json[p4].get(); - fprintf(stderr," RSSINR %d\n", nextRssinr); - - json::json_pointer p5(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/neighbourCellList"); - - uint8_t crnti_buf[3] = {0, }; - - if (ueId.find("Pedestrian") != string::npos) { - std::string ind = ueId.substr(11); - fprintf(stderr, "ind is %s\n", ind.c_str()); - - int indval = std::stoi(ind); - - if (indval < 10) { - crnti_buf[1] = indval; - crnti_buf[0] = 0; - } else { - crnti_buf[0] = indval/10; - crnti_buf[1] = indval % 10; - } - - } else if (ueId.find("Car") != string::npos) { - crnti_buf[0] = 4; - crnti_buf[1] = 1; - } - - // uint8_t *buf2 = (uint8_t*)"12"; - - std::string serving_str = "{\"rsrp\": " + std::to_string(nextRsrp) + ", \"rsrq\": " + - std::to_string(nextRsrq) + ", \"rssinr\": " + std::to_string(nextRssinr) + "}"; - const uint8_t *serving_buf = reinterpret_cast(serving_str.c_str()); - - int numNeighborCells = (all_ues_json[p5]).size(); - - std::string neighbor_str = "["; - - int nextNbCell; - int nextNbRsrp; - int nextNbRsrq; - int nextNbRssinr; - - for (int j = 0; j < numNeighborCells; j++) { - json::json_pointer p8(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/neighbourCellList/" + std::to_string(j) + "/nbCellIdentity"); - nextNbCell = all_ues_json[p8].get(); - //cout << "Neighbor Cell " << all_ues_json[p8] << endl; - json::json_pointer p9(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) - +"/neighbourCellList/" + std::to_string(j) + "/nbCellRfReport/rsrp"); - nextNbRsrp = all_ues_json[p9].get(); - //cout << " RSRP " << nextNbRsrp << endl; - - json::json_pointer p10(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) - +"/neighbourCellList/" + std::to_string(j) + "/nbCellRfReport/rsrq"); - nextNbRsrq = all_ues_json[p10].get(); - //cout << " RSRQ " << nextNbRsrq << endl; - - json::json_pointer p11(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) - +"/neighbourCellList/" + std::to_string(j) + "/nbCellRfReport/rssinr"); - nextNbRssinr = all_ues_json[p11].get(); - //cout << " RSSINR " << nextNbRssinr << endl; - - if (j != 0) { - neighbor_str += ","; - - } - - - uint8_t neighbor_cellid_buf[6] = {0, }; - neighbor_cellid_buf[0] = 0x22; - neighbor_cellid_buf[1] = 0x5B; - neighbor_cellid_buf[2] = 0xD6; - neighbor_cellid_buf[3] = nextNbCell; - neighbor_cellid_buf[4] = 0x70; - - char cid_buf[25] = {0, }; - get_cell_id(neighbor_cellid_buf,cid_buf); - - - neighbor_str += "{\"CID\" : \"" + std::string(cid_buf) + "\", \"Cell-RF\" : {\"rsrp\": " + std::to_string(nextNbRsrp) + - ", \"rsrq\": " + std::to_string(nextNbRsrq) + ", \"rssinr\": " + std::to_string(nextNbRssinr) + "}}"; - - } - - neighbor_str += "]"; - - fprintf(stderr,"This is neighbor str %s\n", neighbor_str.c_str()); - - //Creating UE-level RAN-Container CUCP message - - fprintf(stderr,"Creating UE-level RAN-Container CUCP message\n"); - - const uint8_t *neighbor_buf = reinterpret_cast(neighbor_str.c_str()); - - - uint8_t nrcellid_buf[6] = {0, }; - nrcellid_buf[0] = 0x22; - nrcellid_buf[1] = 0x5B; - nrcellid_buf[2] = 0xD6; - nrcellid_buf[3] = nextCellId; - nrcellid_buf[4] = 0x70; - - uint8_t gnbid_buf[4] = {0, }; - gnbid_buf[0] = 0x22; - gnbid_buf[1] = 0x5B; - gnbid_buf[2] = 0xD6; - - uint8_t cuupid_buf[2] = {0, }; - cuupid_buf[0] = 20000; - - uint8_t duid_buf[2] = {0, }; - duid_buf[0] = 20000; - - uint8_t *cuupname_buf = (uint8_t*)"GNBCUUP5"; - - - E2SM_KPM_IndicationMessage_t *ind_msg_cucp_ue = - (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t)); - - encode_kpm_report_rancontainer_cucp_parameterized(ind_msg_cucp_ue, plmnid_buf, nrcellid_buf, crnti_buf, serving_buf, neighbor_buf); - - uint8_t e2sm_message_buf_cucp_ue[8192] = {0, }; - size_t e2sm_message_buf_size_cucp_ue = 8192; - - asn_codec_ctx_t *opt_cod; - - - asn_enc_rval_t er_message_cucp_ue = asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - ind_msg_cucp_ue, e2sm_message_buf_cucp_ue, e2sm_message_buf_size_cucp_ue); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationMessage, ind_msg_cucp_ue); - - fprintf(stderr, "er encded is %d\n", er_message_cucp_ue.encoded); - fprintf(stderr, "after encoding message\n"); - - E2SM_KPM_IndicationHeader_t* ind_header_cucp_ue = - (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t)); - encode_e2sm_kpm_indication_header(ind_header_cucp_ue, plmnid_buf, sst_buf, sd_buf, fqival, qcival, nrcellid_buf, gnbid_buf, 0, cuupid_buf, duid_buf, cuupname_buf); - fprintf(stderr, "Now printing xer outside of function call\n"); - xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationHeader, ind_header_cucp_ue); - - uint8_t e2sm_header_buf_cucp_ue[8192] = {0, }; - size_t e2sm_header_buf_size_cucp_ue = 8192; - - asn_enc_rval_t er_header_cucp_ue = asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationHeader, - ind_header_cucp_ue, e2sm_header_buf_cucp_ue, e2sm_header_buf_size_cucp_ue); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationHeader, ind_header_cucp_ue); - - fprintf(stderr, "er encded is %d\n", er_header_cucp_ue.encoded); - fprintf(stderr, "error buf is %s\n", (char*)e2sm_header_buf_cucp_ue); - fprintf(stderr, "after encoding header\n"); - - E2AP_PDU *pdu_cucp_ue = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU)); - - encoding::generate_e2apv1_indication_request_parameterized(pdu_cucp_ue, requestorId, - instanceId, ranFunctionId, - actionId, seqNum, e2sm_header_buf_cucp_ue, - er_header_cucp_ue.encoded, e2sm_message_buf_cucp_ue, - er_message_cucp_ue.encoded); - - - e2sim.encode_and_send_sctp_data(pdu_cucp_ue); - - seqNum++; - - std::this_thread::sleep_for (std::chrono::milliseconds(50)); - - //Creating UE-level RAN-Container CUUP message - - fprintf(stderr,"Creating UE-level RAN-Container CUUP message\n"); - - E2SM_KPM_IndicationMessage_t *ind_msg_cuup_ue = - (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t)); - - long bytes = (long)(tput * 100); - - encode_kpm_report_rancontainer_cuup_parameterized(ind_msg_cuup_ue, plmnid_buf, nrcellid_buf, crnti_buf, bytes, 0); - - uint8_t e2sm_message_buf_cuup_ue[8192] = {0, }; - size_t e2sm_message_buf_size_cuup_ue = 8192; - - asn_codec_ctx_t *opt_cod2; - - - asn_enc_rval_t er_message_cuup_ue = asn_encode_to_buffer(opt_cod2, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - ind_msg_cuup_ue, e2sm_message_buf_cuup_ue, e2sm_message_buf_size_cuup_ue); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationMessage, ind_msg_cuup_ue); - - fprintf(stderr, "er encded is %d\n", er_message_cuup_ue.encoded); - fprintf(stderr, "after encoding message\n"); - - E2SM_KPM_IndicationHeader_t* ind_header_cuup_ue = - (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t)); - encode_e2sm_kpm_indication_header(ind_header_cuup_ue, plmnid_buf, sst_buf, sd_buf, fqival, qcival, nrcellid_buf, gnbid_buf, 0, cuupid_buf, duid_buf, cuupname_buf); - - uint8_t e2sm_header_buf_cuup_ue[8192] = {0, }; - size_t e2sm_header_buf_size_cuup_ue = 8192; - - asn_enc_rval_t er_header_cuup_ue = asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationHeader, - ind_header_cuup_ue, e2sm_header_buf_cuup_ue, e2sm_header_buf_size_cuup_ue); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationHeader, ind_header_cuup_ue); - - - E2AP_PDU *pdu_cuup_ue = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU)); - - encoding::generate_e2apv1_indication_request_parameterized(pdu_cuup_ue, requestorId, - instanceId, ranFunctionId, - actionId, seqNum, e2sm_header_buf_cuup_ue, - er_header_cuup_ue.encoded, - e2sm_message_buf_cuup_ue, er_message_cuup_ue.encoded); - - e2sim.encode_and_send_sctp_data(pdu_cuup_ue); - - seqNum++; - - std::this_thread::sleep_for (std::chrono::milliseconds(50)); - - //Creating UE-level RAN-Container DU message - - fprintf(stderr,"Creating UE-level RAN-Container DU message\n"); - - E2SM_KPM_IndicationMessage_t *ind_message_du_ue = - (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t)); - - encode_kpm_report_rancontainer_du_parameterized(ind_message_du_ue, - plmnid_buf, nrcellid_buf, crnti_buf, prb_usage, 0); - - uint8_t e2sm_message_buf_du_ue[8192] = {0, }; - size_t e2sm_message_buf_size_du_ue = 8192; - - asn_codec_ctx_t *opt_cod3; - - - asn_enc_rval_t er_message_du_ue = asn_encode_to_buffer(opt_cod3, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - ind_message_du_ue, - e2sm_message_buf_du_ue, - e2sm_message_buf_size_du_ue); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationMessage, ind_message_du_ue); - - fprintf(stderr, "er encded is %d\n", er_message_du_ue.encoded); - fprintf(stderr, "after encoding message\n"); - - E2SM_KPM_IndicationHeader_t* ind_header_du_ue = - (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t)); - encode_e2sm_kpm_indication_header(ind_header_du_ue, plmnid_buf, sst_buf, sd_buf, fqival, qcival, nrcellid_buf, gnbid_buf, 0, cuupid_buf, duid_buf, cuupname_buf); - - uint8_t e2sm_header_buf_du_ue[8192] = {0, }; - size_t e2sm_header_buf_size_du_ue = 8192; - - asn_enc_rval_t er_header_du_ue = asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationHeader, - ind_header_du_ue, e2sm_header_buf_du_ue, - e2sm_header_buf_size_du_ue); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationHeader, ind_header_du_ue); - - - E2AP_PDU *pdu_du_ue = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU)); - - encoding::generate_e2apv1_indication_request_parameterized(pdu_du_ue, requestorId, - instanceId, ranFunctionId, - actionId, seqNum, - e2sm_header_buf_du_ue, er_header_du_ue.encoded, - e2sm_message_buf_du_ue, er_message_du_ue.encoded); - - e2sim.encode_and_send_sctp_data(pdu_du_ue); - - seqNum++; - - std::this_thread::sleep_for (std::chrono::milliseconds(50)); - - fprintf(stderr, "done with ue meas report\n"); - } + json::json_pointer du_id(std::string("/ueMeasReport/du-id")); + int duid = all_ues_json[du_id].get(); + LOG_I("Start sending UE measurement reports with DU id %d", duid); + + int numMeasReports = (all_ues_json["/ueMeasReport/ueMeasReportList"_json_pointer]).size(); + + for (int i = 0; i < numMeasReports; i++) { + int nextCellId; + int nextRsrp; + int nextRsrq; + int nextRssinr; + float tput; + int prb_usage; + std::string ueId; + + json::json_pointer p001(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/ue-id"); + ueId = all_ues_json[p001].get(); + + LOG_I("Preparing report data for UE %d with id %s", i, ueId); + + json::json_pointer p0(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/throughput"); + tput = all_ues_json[p0].get(); + + json::json_pointer p00(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/prb_usage"); + prb_usage = all_ues_json[p00].get(); + + json::json_pointer p1(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/nrCellIdentity"); + nextCellId = all_ues_json[p1].get(); + + json::json_pointer p2(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/servingCellRfReport/rsrp"); + nextRsrp = all_ues_json[p2].get(); + + json::json_pointer p3(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/servingCellRfReport/rsrq"); + nextRsrq = all_ues_json[p3].get(); + + json::json_pointer p4(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/servingCellRfReport/rssinr"); + nextRssinr = all_ues_json[p4].get(); + + json::json_pointer p5(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/neighbourCellList"); + + uint8_t crnti_buf[3] = {0, }; + + if (ueId.find("Pedestrian") != string::npos) { + std::string ind = ueId.substr(11); + int indval = std::stoi(ind); + + if (indval < 10) { + crnti_buf[1] = indval; + crnti_buf[0] = 0; + } else { + crnti_buf[0] = indval/10; + crnti_buf[1] = indval % 10; + } + + } else if (ueId.find("Car") != string::npos) { + crnti_buf[0] = 4; + crnti_buf[1] = 1; + } + + std::string serving_str = "{\"rsrp\": " + std::to_string(nextRsrp) + ", \"rsrq\": " + + std::to_string(nextRsrq) + ", \"rssinr\": " + std::to_string(nextRssinr) + "}"; + const uint8_t *serving_buf = reinterpret_cast(serving_str.c_str()); + + int numNeighborCells = (all_ues_json[p5]).size(); + + std::string neighbor_str = "["; + + int nextNbCell; + int nextNbRsrp; + int nextNbRsrq; + int nextNbRssinr; + + for (int j = 0; j < numNeighborCells; j++) { + json::json_pointer p8(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/neighbourCellList/" + std::to_string(j) + "/nbCellIdentity"); + nextNbCell = all_ues_json[p8].get(); + json::json_pointer p9(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) + +"/neighbourCellList/" + std::to_string(j) + "/nbCellRfReport/rsrp"); + nextNbRsrp = all_ues_json[p9].get(); + + json::json_pointer p10(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) + +"/neighbourCellList/" + std::to_string(j) + "/nbCellRfReport/rsrq"); + nextNbRsrq = all_ues_json[p10].get(); + + json::json_pointer p11(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) + +"/neighbourCellList/" + std::to_string(j) + "/nbCellRfReport/rssinr"); + nextNbRssinr = all_ues_json[p11].get(); + + if (j != 0) { + neighbor_str += ","; + } + + + uint8_t neighbor_cellid_buf[6] = {0, }; + neighbor_cellid_buf[0] = 0x22; + neighbor_cellid_buf[1] = 0x5B; + neighbor_cellid_buf[2] = 0xD6; + neighbor_cellid_buf[3] = nextNbCell; + neighbor_cellid_buf[4] = 0x70; + + char cid_buf[25] = {0, }; + get_cell_id(neighbor_cellid_buf,cid_buf); + + + neighbor_str += "{\"CID\" : \"" + std::string(cid_buf) + "\", \"Cell-RF\" : {\"rsrp\": " + std::to_string(nextNbRsrp) + + ", \"rsrq\": " + std::to_string(nextNbRsrq) + ", \"rssinr\": " + std::to_string(nextNbRssinr) + "}}"; + + } + + neighbor_str += "]"; + + LOG_I("This is neighbor str %s\n", neighbor_str.c_str()); + + const uint8_t *neighbor_buf = reinterpret_cast(neighbor_str.c_str()); + + + uint8_t nrcellid_buf[6] = {0, }; + nrcellid_buf[0] = 0x22; + nrcellid_buf[1] = 0x5B; + nrcellid_buf[2] = 0xD6; + nrcellid_buf[3] = nextCellId; + nrcellid_buf[4] = 0x70; + + uint8_t gnbid_buf[4] = {0, }; + gnbid_buf[0] = 0x22; + gnbid_buf[1] = 0x5B; + gnbid_buf[2] = 0xD6; + + uint8_t cuupid_buf[2] = {0, }; + cuupid_buf[0] = 20000; + + uint8_t duid_buf[2] = {0, }; + duid_buf[0] = 20000; + + uint8_t *cuupname_buf = (uint8_t*)"GNBCUUP5"; + + + E2SM_KPM_IndicationMessage_t *ind_msg_cucp_ue = + (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t)); + + ue_meas_kpm_report_indication_message_initialized(ind_msg_cucp_ue, nrcellid_buf, crnti_buf, serving_buf, neighbor_buf); + + uint8_t e2sm_message_buf_cucp_ue[8192] = {0, }; + size_t e2sm_message_buf_size_cucp_ue = 8192; + + asn_codec_ctx_t *opt_cod; + + asn_enc_rval_t er_message_cucp_ue = asn_encode_to_buffer(opt_cod, + ATS_ALIGNED_BASIC_PER, + &asn_DEF_E2SM_KPM_IndicationMessage, + ind_msg_cucp_ue, e2sm_message_buf_cucp_ue, e2sm_message_buf_size_cucp_ue); + + if(er_message_cucp_ue.encoded == -1) { + LOG_I("Failed to serialize message data. Detail: %s.\n", asn_DEF_E2SM_KPM_IndicationMessage.name); + exit(1); + } else if(er_message_cucp_ue.encoded > e2sm_message_buf_size_cucp_ue) { + LOG_I("Buffer of size %zu is too small for %s, need %zu\n", e2sm_message_buf_size_cucp_ue, asn_DEF_E2SM_KPM_IndicationMessage.name, er_message_cucp_ue.encoded); + exit(1); + } else { + LOG_I("Encoded UE indication message succesfully, size in bytes: %d", er_message_cucp_ue.encoded) + } + + ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationMessage, ind_msg_cucp_ue); + + E2SM_KPM_IndicationHeader_t* ind_header_cucp_ue = + (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t)); + kpm_report_indication_header_initialized(ind_header_cucp_ue, plmnid_buf, sst_buf, sd_buf, fqival, qcival, nrcellid_buf, gnbid_buf, 0, cuupid_buf, duid_buf, cuupname_buf); + + asn_codec_ctx_t *opt_cod1; + uint8_t e2sm_header_buf_cucp_ue[8192] = {0, }; + size_t e2sm_header_buf_size_cucp_ue = 8192; + + asn_enc_rval_t er_header_cucp_ue = asn_encode_to_buffer(opt_cod1, + ATS_ALIGNED_BASIC_PER, + &asn_DEF_E2SM_KPM_IndicationHeader, + ind_header_cucp_ue, e2sm_header_buf_cucp_ue, e2sm_header_buf_size_cucp_ue); + + if(er_header_cucp_ue.encoded == -1) { + LOG_I("Failed to serialize data. Detail: %s.\n", asn_DEF_E2SM_KPM_IndicationHeader.name); + exit(1); + } else if(er_header_cucp_ue.encoded > e2sm_header_buf_size_cucp_ue) { + LOG_I("Buffer of size %zu is too small for %s, need %zu\n", e2sm_header_buf_size_cucp_ue, asn_DEF_E2SM_KPM_IndicationHeader.name, er_header_cucp_ue.encoded); + exit(1); + } else { + LOG_I("Encoded UE indication header succesfully, size in bytes: %d", er_header_cucp_ue.encoded); + for(int i = 0; i < er_header_cucp_ue.encoded; i ++) { + printf("%x ", e2sm_header_buf_cucp_ue[i]); + } + + } + + + ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationHeader, ind_header_cucp_ue); + + E2AP_PDU *pdu_cucp_ue = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU)); + + encoding::generate_e2apv1_indication_request_parameterized(pdu_cucp_ue, requestorId, + instanceId, ranFunctionId, + actionId, seqNum, e2sm_header_buf_cucp_ue, + er_header_cucp_ue.encoded, e2sm_message_buf_cucp_ue, + er_message_cucp_ue.encoded); + + e2sim.encode_and_send_sctp_data(pdu_cucp_ue); + LOG_I("Measurement report for UE %d has been sent\n", i); + seqNum++; + std::this_thread::sleep_for (std::chrono::milliseconds(50)); + } } else if (first_key.compare("cellMeasReport") == 0) { - fprintf(stderr, "it is equal to cell meas report\n"); - - int numMeasReports = (all_ues_json["/cellMeasReport/cellMeasReportList"_json_pointer]).size(); + json::json_pointer du_id(std::string("/cellMeasReport/du-id")); + int duid = all_ues_json[du_id].get(); - for (int i = 0; i < numMeasReports; i++) { - int nextCellId; - - float bytes_dl; - float bytes_ul; - int prb_dl; - int prb_ul; - int cellid; - - fprintf(stderr,"UE number %d\n", i); - - json::json_pointer p00(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/nrCellIdentity"); - cellid = all_ues_json[p00].get(); - fprintf(stderr, "Cell ID %d\n", cellid); - - json::json_pointer p0(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/pdcpByteMeasReport/pdcpBytesDl"); - bytes_dl = all_ues_json[p0].get(); - fprintf(stderr, "Bytes DL %f\n", bytes_dl); - - json::json_pointer p1(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/pdcpByteMeasReport/pdcpBytesUl"); - bytes_ul = all_ues_json[p1].get(); - fprintf(stderr, "Bytes UL %f\n", bytes_ul); - - json::json_pointer p2(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/prbMeasReport/availPrbDl"); - prb_dl = all_ues_json[p2].get(); - fprintf(stderr, "Avail PRB DL %d\n", prb_dl); - - json::json_pointer p3(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/prbMeasReport/availPrbUl"); - prb_ul = all_ues_json[p3].get(); - fprintf(stderr, "Avail PRB UL %d\n", prb_ul); - - - uint8_t *sst_buf = (uint8_t*)"1"; - uint8_t *sd_buf = (uint8_t*)"100"; - uint8_t *plmnid_buf = (uint8_t*)"747"; - - uint8_t nrcellid_buf[6] = {0, }; - nrcellid_buf[0] = 0x22; - nrcellid_buf[1] = 0x5B; - nrcellid_buf[2] = 0xD6; - nrcellid_buf[3] = cellid; - nrcellid_buf[4] = 0x70; - - uint8_t gnbid_buf[4] = {0, }; - gnbid_buf[0] = 0x22; - gnbid_buf[1] = 0x5B; - gnbid_buf[2] = 0xD6; - - uint8_t cuupid_buf[2] = {0, }; - cuupid_buf[0] = 20000; - - uint8_t duid_buf[2] = {0, }; - duid_buf[0] = 20000; - - uint8_t *cuupname_buf = (uint8_t*)"GNBCUUP5"; - - - //Encoding Style 5 Message Body - - fprintf(stderr, "Encoding Style 5 Message body\n"); - - asn_codec_ctx_t *opt_cod; - - E2SM_KPM_IndicationMessage_t *ind_msg_style5 = - (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t)); - E2AP_PDU *pdu_style5 = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU)); - - encode_kpm_report_style5_parameterized(ind_msg_style5 , cuupname_buf, bytes_dl, bytes_ul, sst_buf, sd_buf, plmnid_buf); - - uint8_t e2sm_message_buf_style5[8192] = {0, }; - size_t e2sm_message_buf_size_style5 = 8192; - - asn_enc_rval_t er_message_style5 = asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - ind_msg_style5, e2sm_message_buf_style5, e2sm_message_buf_size_style5); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationMessage, ind_msg_style5); - - fprintf(stderr, "er encded is %d\n", er_message_style5.encoded); - fprintf(stderr, "after encoding message\n"); - - int seqNum0 = 1; - - - E2SM_KPM_IndicationHeader_t* ind_header_style5 = - (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t)); - encode_e2sm_kpm_indication_header(ind_header_style5, plmnid_buf, sst_buf, sd_buf, fqival, qcival, nrcellid_buf, gnbid_buf, 0, cuupid_buf, duid_buf, cuupname_buf); - - uint8_t e2sm_header_buf_style5[8192] = {0, }; - size_t e2sm_header_buf_size_style5 = 8192; - - asn_enc_rval_t er_header_style5 = asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationHeader, - ind_header_style5, - e2sm_header_buf_style5, e2sm_header_buf_size_style5); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationHeader, ind_header_style5); - - - encoding::generate_e2apv1_indication_request_parameterized(pdu_style5, requestorId, - instanceId, ranFunctionId, - actionId, seqNum0, e2sm_header_buf_style5, - er_header_style5.encoded, e2sm_message_buf_style5, - er_message_style5.encoded); - - e2sim.encode_and_send_sctp_data(pdu_style5); - - seqNum++; - - std::this_thread::sleep_for (std::chrono::milliseconds(50)); - - - //Encoding Style 1 Message Body - - fprintf(stderr, "Encoding Style 1 Message body\n"); - asn_codec_ctx_t *opt_cod2; - - - E2SM_KPM_IndicationMessage_t *ind_message_style1 = - (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t)); - E2AP_PDU *pdu_style1 = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU)); - - long fiveqi = 7; - - - - long *l_dl_prbs = (long*)calloc(1, sizeof(long)); - long *l_ul_prbs = (long*)calloc(1, sizeof(long)); - *l_dl_prbs = (long)prb_dl; - *l_ul_prbs = (long)prb_ul; - - encode_kpm_report_style1_parameterized(ind_message_style1, fiveqi, - prb_dl, prb_ul, sst_buf, sd_buf, - plmnid_buf, nrcellid_buf, l_dl_prbs, l_ul_prbs); - - uint8_t e2sm_message_buf_style1[8192] = {0, }; - size_t e2sm_message_buf_size_style1 = 8192; - - asn_enc_rval_t er_message_style1 = asn_encode_to_buffer(opt_cod2, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationMessage, - ind_message_style1, - e2sm_message_buf_style1, e2sm_message_buf_size_style1); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationMessage, ind_message_style1); - - fprintf(stderr, "er encded is %d\n", er_message_style1.encoded); - fprintf(stderr, "after encoding message\n"); - - - uint8_t *cpid_buf2 = (uint8_t*)"CPID"; - - fprintf(stderr, "About to encode Indication\n"); - - E2SM_KPM_IndicationHeader_t* ind_header_style1 = - (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t)); - encode_e2sm_kpm_indication_header(ind_header_style1, plmnid_buf, sst_buf, sd_buf, fqival, qcival, nrcellid_buf, gnbid_buf, 0, cuupid_buf, duid_buf, cuupname_buf); - - uint8_t e2sm_header_buf_style1[8192] = {0, }; - size_t e2sm_header_buf_size_style1 = 8192; - - asn_enc_rval_t er_header_style1 = asn_encode_to_buffer(opt_cod, - ATS_ALIGNED_BASIC_PER, - &asn_DEF_E2SM_KPM_IndicationHeader, - ind_header_style1, - e2sm_header_buf_style1, e2sm_header_buf_size_style1); - ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationHeader, ind_header_style1); - - encoding::generate_e2apv1_indication_request_parameterized(pdu_style1, requestorId, - instanceId, ranFunctionId, - actionId, seqNum, e2sm_header_buf_style1, - er_header_style1.encoded, - e2sm_message_buf_style1, er_message_style1.encoded); - - e2sim.encode_and_send_sctp_data(pdu_style1); - seqNum++; - std::this_thread::sleep_for (std::chrono::milliseconds(50)); - - } - } + LOG_I("Start sending Cell measurement reports with DU id %d", duid); + + int numMeasReports = (all_ues_json["/cellMeasReport/cellMeasReportList"_json_pointer]).size(); + + for (int i = 0; i < numMeasReports; i++) { + int nextCellId; + + float bytes_dl; + float bytes_ul; + int prb_dl; + int prb_ul; + int cellid; + + json::json_pointer p00(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/nrCellIdentity"); + cellid = all_ues_json[p00].get(); + + LOG_I("Preparing report data for Cell %d with id %d", i, cellid); + + json::json_pointer p0(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/pdcpByteMeasReport/pdcpBytesDl"); + bytes_dl = all_ues_json[p0].get(); + + json::json_pointer p1(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/pdcpByteMeasReport/pdcpBytesUl"); + bytes_ul = all_ues_json[p1].get(); + + json::json_pointer p2(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/prbMeasReport/availPrbDl"); + prb_dl = all_ues_json[p2].get(); + + json::json_pointer p3(std::string("/cellMeasReport/cellMeasReportList/") + std::to_string(i) +"/prbMeasReport/availPrbUl"); + prb_ul = all_ues_json[p3].get(); + + + uint8_t *sst_buf = (uint8_t*)"1"; + uint8_t *sd_buf = (uint8_t*)"100"; + uint8_t *plmnid_buf = (uint8_t*)"747"; + + uint8_t nrcellid_buf[6] = {0, }; + nrcellid_buf[0] = 0x22; + nrcellid_buf[1] = 0x5B; + nrcellid_buf[2] = 0xD6; + nrcellid_buf[3] = cellid; + nrcellid_buf[4] = 0x70; + + uint8_t gnbid_buf[4] = {0, }; + gnbid_buf[0] = 0x22; + gnbid_buf[1] = 0x5B; + gnbid_buf[2] = 0xD6; + + uint8_t cuupid_buf[2] = {0, }; + cuupid_buf[0] = 20000; + + uint8_t duid_buf[2] = {0, }; + duid_buf[0] = 20000; + + uint8_t *cuupname_buf = (uint8_t*)"GNBCUUP5"; + + //Encoding Style 1 Message Body + + LOG_I("Encoding Style 1 Message body"); + asn_codec_ctx_t *opt_cod2; + + E2SM_KPM_IndicationMessage_t *ind_message_style1 = + (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t)); + E2AP_PDU *pdu_style1 = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU)); + + long fiveqi = 7; + long *l_dl_prbs = (long*)calloc(1, sizeof(long)); + long *l_ul_prbs = (long*)calloc(1, sizeof(long)); + *l_dl_prbs = (long)prb_dl; + *l_ul_prbs = (long)prb_ul; + + cell_meas_kpm_report_indication_message_style_1_initialized(ind_message_style1, fiveqi, + prb_dl, prb_ul, nrcellid_buf, l_dl_prbs, l_ul_prbs); + + uint8_t e2sm_message_buf_style1[8192] = {0, }; + size_t e2sm_message_buf_size_style1 = 8192; + + asn_enc_rval_t er_message_style1 = asn_encode_to_buffer(opt_cod2, + ATS_ALIGNED_BASIC_PER, + &asn_DEF_E2SM_KPM_IndicationMessage, + ind_message_style1, + e2sm_message_buf_style1, e2sm_message_buf_size_style1); + + if(er_message_style1.encoded == -1) { + LOG_I("Failed to serialize data. Detail: %s.\n", asn_DEF_E2SM_KPM_IndicationMessage.name); + exit(1); + } else if(er_message_style1.encoded > e2sm_message_buf_size_style1) { + LOG_I("Buffer of size %zu is too small for %s, need %zu\n", e2sm_message_buf_size_style1, asn_DEF_E2SM_KPM_IndicationMessage.name, er_message_style1.encoded); + exit(1); + } else { + LOG_I("Encoded Cell indication message succesfully, size in bytes: %d", er_message_style1.encoded) + } + + ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationMessage, ind_message_style1); + + uint8_t *cpid_buf2 = (uint8_t*)"CPID"; + + E2SM_KPM_IndicationHeader_t* ind_header_style1 = + (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t)); + kpm_report_indication_header_initialized(ind_header_style1, plmnid_buf, sst_buf, sd_buf, fqival, qcival, nrcellid_buf, gnbid_buf, 0, cuupid_buf, duid_buf, cuupname_buf); + + uint8_t e2sm_header_buf_style1[8192] = {0, }; + size_t e2sm_header_buf_size_style1 = 8192; + + asn_enc_rval_t er_header_style1 = asn_encode_to_buffer(opt_cod2, + ATS_ALIGNED_BASIC_PER, + &asn_DEF_E2SM_KPM_IndicationHeader, + ind_header_style1, + e2sm_header_buf_style1, e2sm_header_buf_size_style1); + + if(er_header_style1.encoded == -1) { + LOG_I("Failed to serialize data. Detail: %s.\n", asn_DEF_E2SM_KPM_IndicationHeader.name); + exit(1); + } else if(er_header_style1.encoded > e2sm_header_buf_size_style1) { + LOG_I("Buffer of size %zu is too small for %s, need %zu\n", e2sm_header_buf_size_style1, asn_DEF_E2SM_KPM_IndicationHeader.name, er_header_style1.encoded); + exit(1); + } else { + LOG_I("Encoded Cell indication header succesfully, size in bytes: %d", er_header_style1.encoded) + } + + ASN_STRUCT_FREE(asn_DEF_E2SM_KPM_IndicationHeader, ind_header_style1); + + encoding::generate_e2apv1_indication_request_parameterized(pdu_style1, requestorId, + instanceId, ranFunctionId, + actionId, seqNum, e2sm_header_buf_style1, + er_header_style1.encoded, + e2sm_message_buf_style1, er_message_style1.encoded); + + e2sim.encode_and_send_sctp_data(pdu_style1); + seqNum++; + LOG_I("Measurement report for Cell %d has been sent\n", i); + std::this_thread::sleep_for (std::chrono::milliseconds(50)); + + } + } } } } @@ -713,7 +531,7 @@ void run_report_loop(long requestorId, long instanceId, long ranFunctionId, long void callback_kpm_subscription_request(E2AP_PDU_t *sub_req_pdu) { - fprintf(stderr, "Calling callback_kpm_subscription_request\n"); + fprintf(stderr, "[%s:%d]Calling callback_kpm_subscription_request"); //Record RIC Request ID //Go through RIC action to be Setup List @@ -732,9 +550,6 @@ void callback_kpm_subscription_request(E2AP_PDU_t *sub_req_pdu) { RICsubscriptionRequest_IEs_t **ies = (RICsubscriptionRequest_IEs_t**)orig_req.protocolIEs.list.array; - fprintf(stderr, "count%d\n", count); - fprintf(stderr, "size%d\n", size); - RICsubscriptionRequest_IEs__value_PR pres; long reqRequestorId; @@ -748,17 +563,17 @@ void callback_kpm_subscription_request(E2AP_PDU_t *sub_req_pdu) { RICsubscriptionRequest_IEs_t *next_ie = ies[i]; pres = next_ie->value.present; - fprintf(stderr, "The next present value %d\n", pres); + LOG_I("The next present value %d\n", pres); switch(pres) { case RICsubscriptionRequest_IEs__value_PR_RICrequestID: { - fprintf(stderr,"in case request id\n"); + LOG_I("in case request id"); RICrequestID_t reqId = next_ie->value.choice.RICrequestID; long requestorId = reqId.ricRequestorID; long instanceId = reqId.ricInstanceID; - fprintf(stderr, "requestorId %d\n", requestorId); - fprintf(stderr, "instanceId %d\n", instanceId); + LOG_I("requestorId %d\n", requestorId); + LOG_I("instanceId %d\n", instanceId); reqRequestorId = requestorId; reqInstanceId = instanceId; @@ -766,25 +581,21 @@ void callback_kpm_subscription_request(E2AP_PDU_t *sub_req_pdu) { } case RICsubscriptionRequest_IEs__value_PR_RANfunctionID: { - fprintf(stderr,"in case ran func id\n"); + LOG_I("in case ran func id"); break; } case RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails: { - fprintf(stderr,"in case subscription details\n"); RICsubscriptionDetails_t subDetails = next_ie->value.choice.RICsubscriptionDetails; - fprintf(stderr,"in case subscription details 1\n"); RICeventTriggerDefinition_t triggerDef = subDetails.ricEventTriggerDefinition; - fprintf(stderr,"in case subscription details 2\n"); RICactions_ToBeSetup_List_t actionList = subDetails.ricAction_ToBeSetup_List; - fprintf(stderr,"in case subscription details 3\n"); //We are ignoring the trigger definition //We identify the first action whose type is REPORT //That is the only one accepted; all others are rejected int actionCount = actionList.list.count; - fprintf(stderr, "action count%d\n", actionCount); + LOG_I("Action count%d\n", actionCount); auto **item_array = actionList.list.array; @@ -799,11 +610,9 @@ void callback_kpm_subscription_request(E2AP_PDU_t *sub_req_pdu) { if (!foundAction && actionType == RICactionType_report) { reqActionId = actionId; actionIdsAccept.push_back(reqActionId); - printf("adding accept\n"); foundAction = true; } else { reqActionId = actionId; - printf("adding reject\n"); actionIdsReject.push_back(reqActionId); } } @@ -812,21 +621,20 @@ void callback_kpm_subscription_request(E2AP_PDU_t *sub_req_pdu) { } default: { - fprintf(stderr,"in case default\n"); break; } } } - fprintf(stderr, "After Processing Subscription Request\n"); + LOG_I("After Processing Subscription Request"); - fprintf(stderr, "requestorId %d\n", reqRequestorId); - fprintf(stderr, "instanceId %d\n", reqInstanceId); + LOG_I("requestorId %d\n", reqRequestorId); + LOG_I("instanceId %d\n", reqInstanceId); for (int i=0; i < actionIdsAccept.size(); i++) { - fprintf(stderr, "Action ID %d %ld\n", i, actionIdsAccept.at(i)); + LOG_I("Action ID %d %ld\n", i, actionIdsAccept.at(i)); } @@ -838,17 +646,12 @@ void callback_kpm_subscription_request(E2AP_PDU_t *sub_req_pdu) { int reject_size = actionIdsReject.size(); encoding::generate_e2apv1_subscription_response_success(e2ap_pdu, accept_array, reject_array, accept_size, reject_size, reqRequestorId, reqInstanceId); - + + LOG_I("Encode and sending E2AP subscription success response via SCTP"); e2sim.encode_and_send_sctp_data(e2ap_pdu); - //Start thread for sending REPORT messages - - // std::thread loop_thread; - long funcId = 0; run_report_loop(reqRequestorId, reqInstanceId, funcId, reqActionId); - // loop_thread = std::thread(&run_report_loop); - } diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/kpm_callbacks.hpp b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/kpm_callbacks.hpp old mode 100644 new mode 100755 diff --git a/e2sim/e2sm_examples/kpm_e2sm/src/kpm/viavi_connector.hpp b/e2sim/e2sm_examples/kpm_e2sm/src/kpm/viavi_connector.hpp old mode 100644 new mode 100755 diff --git a/e2sim/src/ASN1c/AMFName.c b/e2sim/src/ASN1c/AMFName.c deleted file mode 100644 index 77dc9c6..0000000 --- a/e2sim/src/ASN1c/AMFName.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "AMFName.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -AMFName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_AMFName_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_AMFName_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_AMFName_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_AMFName_1_v2c, /* Value to PER code map */ - asn_PER_MAP_AMFName_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_AMFName_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_AMFName = { - "AMFName", - "AMFName", - &asn_OP_PrintableString, - asn_DEF_AMFName_tags_1, - sizeof(asn_DEF_AMFName_tags_1) - /sizeof(asn_DEF_AMFName_tags_1[0]), /* 1 */ - asn_DEF_AMFName_tags_1, /* Same as above */ - sizeof(asn_DEF_AMFName_tags_1) - /sizeof(asn_DEF_AMFName_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_AMFName_constr_1, AMFName_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/AMFName.h b/e2sim/src/ASN1c/AMFName.h deleted file mode 100644 index 1c6d3d0..0000000 --- a/e2sim/src/ASN1c/AMFName.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _AMFName_H_ -#define _AMFName_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* AMFName */ -typedef PrintableString_t AMFName_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_AMFName_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_AMFName; -asn_struct_free_f AMFName_free; -asn_struct_print_f AMFName_print; -asn_constr_check_f AMFName_constraint; -ber_type_decoder_f AMFName_decode_ber; -der_type_encoder_f AMFName_encode_der; -xer_type_decoder_f AMFName_decode_xer; -xer_type_encoder_f AMFName_encode_xer; -per_type_decoder_f AMFName_decode_uper; -per_type_encoder_f AMFName_encode_uper; -per_type_decoder_f AMFName_decode_aper; -per_type_encoder_f AMFName_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _AMFName_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ANY.c b/e2sim/src/ASN1c/ANY.c deleted file mode 100644 index 0b81557..0000000 --- a/e2sim/src/ASN1c/ANY.c +++ /dev/null @@ -1,450 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { - sizeof(ANY_t), - offsetof(ANY_t, _asn_ctx), - ASN_OSUBV_ANY -}; -asn_TYPE_operation_t asn_OP_ANY = { - OCTET_STRING_free, - OCTET_STRING_print, - OCTET_STRING_compare, - OCTET_STRING_decode_ber, - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_hex, - ANY_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - 0, - 0, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, 0, 0, 0, -#else - ANY_decode_uper, - ANY_encode_uper, - ANY_decode_aper, - ANY_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - 0, /* Random fill is not defined for ANY type */ - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_ANY = { - "ANY", - "ANY", - &asn_OP_ANY, - 0, 0, 0, 0, - { 0, 0, asn_generic_no_constraint }, /* No constraints */ - 0, 0, /* No members */ - &asn_SPC_ANY_specs, -}; - -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -asn_enc_rval_t -ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - if(flags & XER_F_CANONICAL) { - /* - * Canonical XER-encoding of ANY type is not supported. - */ - ASN__ENCODE_FAILED; - } - - /* Dump as binary */ - return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); -} - -struct _callback_arg { - uint8_t *buffer; - size_t offset; - size_t size; -}; - -static int ANY__consume_bytes(const void *buffer, size_t size, void *key); - -int -ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { - struct _callback_arg arg; - asn_enc_rval_t erval = {0,0,0}; - - if(!st || !td) { - errno = EINVAL; - return -1; - } - - if(!sptr) { - if(st->buf) FREEMEM(st->buf); - st->size = 0; - return 0; - } - - arg.offset = arg.size = 0; - arg.buffer = 0; - - erval = der_encode(td, sptr, ANY__consume_bytes, &arg); - if(erval.encoded == -1) { - if(arg.buffer) FREEMEM(arg.buffer); - return -1; - } - assert((size_t)erval.encoded == arg.offset); - - if(st->buf) FREEMEM(st->buf); - st->buf = arg.buffer; - st->size = arg.offset; - - return 0; -} - -int -ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { - uint8_t *buffer = NULL; - ssize_t erval; - - if(!st || !td) { - errno = EINVAL; - return -1; - } - - if(!sptr) { - if(st->buf) FREEMEM(st->buf); - st->size = 0; - return 0; - } - - erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); - - if(erval == -1) { - if(buffer) FREEMEM(buffer); - return -1; - } - assert((size_t)erval > 0); - - if(st->buf) FREEMEM(st->buf); - st->buf = buffer; - st->size = erval; - - return 0; -} - -ANY_t * -ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { - ANY_t tmp; - ANY_t *st; - - if(!td || !sptr) { - errno = EINVAL; - return 0; - } - - memset(&tmp, 0, sizeof(tmp)); - - if(ANY_fromType(&tmp, td, sptr)) return 0; - - st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); - if(st) { - *st = tmp; - return st; - } else { - FREEMEM(tmp.buf); - return 0; - } -} - -ANY_t * -ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { - ANY_t tmp; - ANY_t *st; - - if(!td || !sptr) { - errno = EINVAL; - return 0; - } - - memset(&tmp, 0, sizeof(tmp)); - - if(ANY_fromType_aper(&tmp, td, sptr)) return 0; - - st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); - if(st) { - *st = tmp; - return st; - } else { - FREEMEM(tmp.buf); - return 0; - } -} - -int -ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { - asn_dec_rval_t rval; - void *newst = 0; - - if(!st || !td || !struct_ptr) { - errno = EINVAL; - return -1; - } - - if(st->buf == 0) { - /* Nothing to convert, make it empty. */ - *struct_ptr = (void *)0; - return 0; - } - - rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); - if(rval.code == RC_OK) { - *struct_ptr = newst; - return 0; - } else { - /* Remove possibly partially decoded data. */ - ASN_STRUCT_FREE(*td, newst); - return -1; - } -} - -int -ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { - asn_dec_rval_t rval; - void *newst = 0; - - if(!st || !td || !struct_ptr) { - errno = EINVAL; - return -1; - } - - if(st->buf == 0) { - /* Nothing to convert, make it empty. */ - *struct_ptr = (void *)0; - return 0; - } - - rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); - if(rval.code == RC_OK) { - *struct_ptr = newst; - return 0; - } else { - /* Remove possibly partially decoded data. */ - ASN_STRUCT_FREE(*td, newst); - return -1; - } -} - -static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { - struct _callback_arg *arg = (struct _callback_arg *)key; - - if((arg->offset + size) >= arg->size) { - size_t nsize = (arg->size ? arg->size << 2 : 16) + size; - void *p = REALLOC(arg->buffer, nsize); - if(!p) return -1; - arg->buffer = (uint8_t *)p; - arg->size = nsize; - } - - memcpy(arg->buffer + arg->offset, buffer, size); - arg->offset += size; - assert(arg->offset < arg->size); - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_ANY_specs; - size_t consumed_myself = 0; - int repeat; - ANY_t *st = (ANY_t *)*sptr; - - (void)opt_codec_ctx; - (void)constraints; - - /* - * Allocate the structure. - */ - if(!st) { - st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("UPER Decoding ANY type"); - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, -1, 0, &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len; - len_bits = len_bytes * 8; - - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += len_bits; - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - RETURN(RC_OK); -} - -asn_enc_rval_t -ANY_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const ANY_t *st = (const ANY_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - const uint8_t *buf; - size_t size; - int ret; - - (void)constraints; - - if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; - - buf = st->buf; - size = st->size; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ret = per_put_many_bits(po, buf, may_save * 8); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save; - size -= may_save; - assert(!(may_save & 0x07) || !size); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size); - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_ANY_specs; - size_t consumed_myself = 0; - int repeat; - ANY_t *st = (ANY_t *)*sptr; - - (void)opt_codec_ctx; - (void)constraints; - - /* - * Allocate the structure. - */ - if(!st) { - st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("APER Decoding ANY type"); - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = aper_get_length(pd, -1, 0, &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len; - len_bits = len_bytes * 8; - - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += len_bits; - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - RETURN(RC_OK); -} - -asn_enc_rval_t -ANY_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const ANY_t *st = (const ANY_t *)sptr; - asn_enc_rval_t er = {0, 0, 0}; - const uint8_t *buf; - size_t size; - int ret; - - (void)constraints; - - if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; - - buf = st->buf; - size = st->size; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ret = per_put_many_bits(po, buf, may_save * 8); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save; - size -= may_save; - assert(!(may_save & 0x07) || !size); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size); - - ASN__ENCODED_OK(er); -} -#endif /* ASN_DISABLE_PER_SUPPORT */ - diff --git a/e2sim/src/ASN1c/ANY.h b/e2sim/src/ASN1c/ANY.h deleted file mode 100644 index b30381f..0000000 --- a/e2sim/src/ASN1c/ANY.h +++ /dev/null @@ -1,65 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/BIT_STRING.c b/e2sim/src/ASN1c/BIT_STRING.c deleted file mode 100644 index e8d7354..0000000 --- a/e2sim/src/ASN1c/BIT_STRING.c +++ /dev/null @@ -1,656 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * BIT STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { - sizeof(BIT_STRING_t), - offsetof(BIT_STRING_t, _asn_ctx), - ASN_OSUBV_BIT -}; -asn_TYPE_operation_t asn_OP_BIT_STRING = { - OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ - BIT_STRING_print, - BIT_STRING_compare, - OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_decode_xer_binary, - BIT_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - BIT_STRING_decode_oer, - BIT_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - BIT_STRING_decode_uper, /* Unaligned PER decoder */ - BIT_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - BIT_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { - "BIT STRING", - "BIT_STRING", - &asn_OP_BIT_STRING, - asn_DEF_BIT_STRING_tags, - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - asn_DEF_BIT_STRING_tags, /* Same as above */ - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - { 0, 0, BIT_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_BIT_STRING_specs -}; - -/* - * BIT STRING generic constraint. - */ -int -BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - - if(st && st->buf) { - if((st->size == 0 && st->bits_unused) - || st->bits_unused < 0 || st->bits_unused > 7) { - ASN__CTFAIL(app_key, td, sptr, - "%s: invalid padding byte (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - return 0; -} - -static const char *_bit_pattern[16] = { - "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", - "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" -}; - -asn_enc_rval_t -BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0, 0, 0}; - char scratch[128]; - char *p = scratch; - char *scend = scratch + (sizeof(scratch) - 10); - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - int xcan = (flags & XER_F_CANONICAL); - uint8_t *buf; - uint8_t *end; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - buf = st->buf; - end = buf + st->size - 1; /* Last byte is special */ - - /* - * Binary dump - */ - for(; buf < end; buf++) { - int v = *buf; - int nline = xcan?0:(((buf - st->buf) % 8) == 0); - if(p >= scend || nline) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - if(nline) ASN__TEXT_INDENT(1, ilevel); - } - memcpy(p + 0, _bit_pattern[v >> 4], 4); - memcpy(p + 4, _bit_pattern[v & 0x0f], 4); - p += 8; - } - - if(!xcan && ((buf - st->buf) % 8) == 0) - ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - - if(buf == end) { - int v = *buf; - int ubits = st->bits_unused; - int i; - for(i = 7; i >= ubits; i--) - *p++ = (v & (1 << i)) ? 0x31 : 0x30; - ASN__CALLBACK(scratch, p - scratch); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - - -/* - * BIT STRING specific contents printer. - */ -int -BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - char scratch[64]; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - uint8_t *buf; - uint8_t *end; - char *p = scratch; - - (void)td; /* Unused argument */ - - if(!st || !st->buf) - return (cb("", 8, app_key) < 0) ? -1 : 0; - - ilevel++; - buf = st->buf; - end = buf + st->size; - - /* - * Hexadecimal dump. - */ - for(; buf < end; buf++) { - if((buf - st->buf) % 16 == 0 && (st->size > 16) - && buf != st->buf) { - _i_INDENT(1); - /* Dump the string */ - if(cb(scratch, p - scratch, app_key) < 0) return -1; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - - if(p > scratch) { - p--; /* Eat the tailing space */ - - if((st->size > 16)) { - _i_INDENT(1); - } - - /* Dump the incomplete 16-bytes row */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - } - - if(st->bits_unused) { - int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", - st->bits_unused, st->bits_unused == 1 ? "" : "s"); - assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); - if(ret > 0 && ret < (ssize_t)sizeof(scratch) - && cb(scratch, ret, app_key) < 0) - return -1; - } - - return 0; -} - -/* - * Non-destructively remove the trailing 0-bits from the given bit string. - */ -static const BIT_STRING_t * -BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { - const uint8_t *b; - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - - if(st->size == 0) { - assert(st->bits_unused == 0); - return st; - } else { - for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { - ; - } - /* b points to the last byte which may contain data */ - if(*b) { - int unused = 7; - uint8_t v = *b; - v &= -(int8_t)v; - if(v & 0x0F) unused -= 4; - if(v & 0x33) unused -= 2; - if(v & 0x55) unused -= 1; - tmp->size = b-st->buf + 1; - tmp->bits_unused = unused; - } else { - tmp->size = b-st->buf; - tmp->bits_unused = 0; - } - - assert(b >= st->buf); - } - - unconst.c_buf = st->buf; - tmp->buf = unconst.nc_buf; - return tmp; -} - -/* - * Lexicographically compare the common prefix of both strings, - * and if it is the same return -1 for the smallest string. - */ -int -BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - /* - * Remove information about trailing bits, since - * X.680 (08/2015) #22.7 "ensure that different semantics are not" - * "associated with [values that differ only in] the trailing 0 bits." - */ - BIT_STRING_t compact_a, compact_b; - const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); - const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); - const asn_OCTET_STRING_specifics_t *specs = td->specifics; - - assert(specs && specs->subvariant == ASN_OSUBV_BIT); - - if(a && b) { - size_t common_prefix_size = a->size <= b->size ? a->size : b->size; - int ret = memcmp(a->buf, b->buf, common_prefix_size); - if(ret == 0) { - /* Figure out which string with equal prefixes is longer. */ - if(a->size < b->size) { - return -1; - } else if(a->size > b->size) { - return 1; - } else { - /* Figure out how many unused bits */ - if(a->bits_unused > b->bits_unused) { - return -1; - } else if(a->bits_unused < b->bits_unused) { - return 1; - } else { - return 0; - } - } - } else { - return ret; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -#undef RETURN -#define RETURN(_code) \ - do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { - APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; - -asn_dec_rval_t -BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - - (void)opt_codec_ctx; - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - - if(specs->subvariant != ASN_OSUBV_BIT) { - ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); - RETURN(RC_FAIL); - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - st->size = (csiz->upper_bound + 7) >> 3; - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += csiz->upper_bound; - st->buf[st->size] = 0; - st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - BIT_STRING_t compact_bstr; /* Do not modify this directly! */ - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - size_t size_in_bits; - const uint8_t *buf; - int ret; - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(specs->subvariant == ASN_OSUBV_BIT) { - if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - - if(pc) { - csiz = &pc->size; - } else { - csiz = &asn_DEF_BIT_STRING_constraint_size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - /* Figure out the size without the trailing bits */ - st = BIT_STRING__compactify(st, &compact_bstr); - size_in_bits = 8 * st->size - st->bits_unused; - - ASN_DEBUG( - "Encoding %s into %" ASN_PRI_SIZE " bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_bits > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_BIT_STRING_constraint_size; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; - ASN_DEBUG( - "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " - "value %" ASN_PRI_SSIZE "", - st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, - add_trailer, - add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); - ret = per_put_few_bits( - po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = per_put_many_bits(po, st->buf, size_in_bits); - if(ret) ASN__ENCODE_FAILED; - if(add_trailer) { - static const uint8_t zeros[16]; - size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; - while(trailing_zero_bits > 0) { - if(trailing_zero_bits > 8 * sizeof(zeros)) { - ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); - trailing_zero_bits -= 8 * sizeof(zeros); - } else { - ret = per_put_many_bits(po, zeros, trailing_zero_bits); - trailing_zero_bits = 0; - } - if(ret) ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - do { - int need_eom = 0; - ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); - if(maySave < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); - - ret = per_put_many_bits(po, buf, maySave); - if(ret) ASN__ENCODE_FAILED; - - buf += maySave >> 3; - size_in_bits -= maySave; - assert(!(maySave & 0x07) || !size_in_bits); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_bits); - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -asn_random_fill_result_t -BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_OCTET_STRING_specifics_t *specs = - td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_BIT_STRING_specs; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - static unsigned lengths[] = {0, 1, 2, 3, 4, 8, - 126, 127, 128, 16383, 16384, 16385, - 65534, 65535, 65536, 65537}; - uint8_t *buf; - uint8_t *bend; - uint8_t *b; - size_t rnd_bits, rnd_len; - BIT_STRING_t *st; - - if(max_length == 0) return result_skipped; - - switch(specs->subvariant) { - case ASN_OSUBV_ANY: - return result_failed; - case ASN_OSUBV_BIT: - break; - default: - break; - } - - /* Figure out how far we should go */ - rnd_bits = lengths[asn_random_between( - 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_CONSTRAINED) { - long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length - ? pc->upper_bound - : (ssize_t)max_length; - if(max_length < (size_t)pc->lower_bound) { - return result_skipped; - } - if(pc->flags & APC_EXTENSIBLE) { - switch(asn_random_between(0, 5)) { - case 0: - if(pc->lower_bound > 0) { - rnd_bits = pc->lower_bound - 1; - break; - } - /* Fall through */ - case 1: - rnd_bits = pc->upper_bound + 1; - break; - case 2: - /* Keep rnd_bits from the table */ - if(rnd_bits < max_length) { - break; - } - /* Fall through */ - default: - rnd_bits = asn_random_between(pc->lower_bound, - suggested_upper_bound); - } - } else { - rnd_bits = - asn_random_between(pc->lower_bound, suggested_upper_bound); - } - } else { - rnd_bits = asn_random_between(0, max_length - 1); - } - } else if(rnd_bits >= max_length) { - rnd_bits = asn_random_between(0, max_length - 1); - } - - rnd_len = (rnd_bits + 7) / 8; - buf = CALLOC(1, rnd_len + 1); - if(!buf) return result_failed; - - bend = &buf[rnd_len]; - - for(b = buf; b < bend; b++) { - *(uint8_t *)b = asn_random_between(0, 255); - } - *b = 0; /* Zero-terminate just in case. */ - - if(*sptr) { - st = *sptr; - FREEMEM(st->buf); - } else { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) { - FREEMEM(buf); - return result_failed; - } - } - - st->buf = buf; - st->size = rnd_len; - st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; - if(st->bits_unused) { - assert(st->size > 0); - st->buf[st->size-1] &= 0xff << st->bits_unused; - } - - result_ok.length = st->size; - return result_ok; -} diff --git a/e2sim/src/ASN1c/BIT_STRING.h b/e2sim/src/ASN1c/BIT_STRING.h deleted file mode 100644 index c1bdbbc..0000000 --- a/e2sim/src/ASN1c/BIT_STRING.h +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/Cause.c b/e2sim/src/ASN1c/Cause.c deleted file mode 100644 index 1f084cd..0000000 --- a/e2sim/src/ASN1c/Cause.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "Cause.h" - -asn_per_constraints_t asn_PER_type_Cause_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_Cause_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricRequest), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseRICrequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricService), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseRICservice, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricService" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.e2Node), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseE2node, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2Node" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseTransport, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "transport" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseProtocol, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocol" - }, - { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CauseMisc, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "misc" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_Cause_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* misc */ -}; -asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = { - sizeof(struct Cause), - offsetof(struct Cause, _asn_ctx), - offsetof(struct Cause, present), - sizeof(((struct Cause *)0)->present), - asn_MAP_Cause_tag2el_1, - 6, /* Count of tags in the map */ - 0, 0, - 6 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_Cause = { - "Cause", - "Cause", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_Cause_constr_1, CHOICE_constraint }, - asn_MBR_Cause_1, - 6, /* Elements count */ - &asn_SPC_Cause_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/Cause.h b/e2sim/src/ASN1c/Cause.h deleted file mode 100644 index 16d4373..0000000 --- a/e2sim/src/ASN1c/Cause.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _Cause_H_ -#define _Cause_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "CauseRICrequest.h" -#include "CauseRICservice.h" -#include "CauseE2node.h" -#include "CauseTransport.h" -#include "CauseProtocol.h" -#include "CauseMisc.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum Cause_PR { - Cause_PR_NOTHING, /* No components present */ - Cause_PR_ricRequest, - Cause_PR_ricService, - Cause_PR_e2Node, - Cause_PR_transport, - Cause_PR_protocol, - Cause_PR_misc - /* Extensions may appear below */ - -} Cause_PR; - -/* Cause */ -typedef struct Cause { - Cause_PR present; - union Cause_u { - CauseRICrequest_t ricRequest; - CauseRICservice_t ricService; - CauseE2node_t e2Node; - CauseTransport_t transport; - CauseProtocol_t protocol; - CauseMisc_t misc; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} Cause_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_Cause; -extern asn_CHOICE_specifics_t asn_SPC_Cause_specs_1; -extern asn_TYPE_member_t asn_MBR_Cause_1[6]; -extern asn_per_constraints_t asn_PER_type_Cause_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _Cause_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CauseE2node.c b/e2sim/src/ASN1c/CauseE2node.c deleted file mode 100644 index 8fcb57b..0000000 --- a/e2sim/src/ASN1c/CauseE2node.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "CauseE2node.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseE2node_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseE2node_value2enum_1[] = { - { 0, 24, "e2node-component-unknown" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseE2node_enum2value_1[] = { - 0 /* e2node-component-unknown(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseE2node_specs_1 = { - asn_MAP_CauseE2node_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseE2node_enum2value_1, /* N => "tag"; sorted by N */ - 1, /* Number of elements in the maps */ - 2, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseE2node_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseE2node = { - "CauseE2node", - "CauseE2node", - &asn_OP_NativeEnumerated, - asn_DEF_CauseE2node_tags_1, - sizeof(asn_DEF_CauseE2node_tags_1) - /sizeof(asn_DEF_CauseE2node_tags_1[0]), /* 1 */ - asn_DEF_CauseE2node_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseE2node_tags_1) - /sizeof(asn_DEF_CauseE2node_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseE2node_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseE2node_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/CauseE2node.h b/e2sim/src/ASN1c/CauseE2node.h deleted file mode 100644 index 8c818fb..0000000 --- a/e2sim/src/ASN1c/CauseE2node.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _CauseE2node_H_ -#define _CauseE2node_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseE2node { - CauseE2node_e2node_component_unknown = 0 - /* - * Enumeration is extensible - */ -} e_CauseE2node; - -/* CauseE2node */ -typedef long CauseE2node_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseE2node_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseE2node; -extern const asn_INTEGER_specifics_t asn_SPC_CauseE2node_specs_1; -asn_struct_free_f CauseE2node_free; -asn_struct_print_f CauseE2node_print; -asn_constr_check_f CauseE2node_constraint; -ber_type_decoder_f CauseE2node_decode_ber; -der_type_encoder_f CauseE2node_encode_der; -xer_type_decoder_f CauseE2node_decode_xer; -xer_type_encoder_f CauseE2node_encode_xer; -per_type_decoder_f CauseE2node_decode_uper; -per_type_encoder_f CauseE2node_encode_uper; -per_type_decoder_f CauseE2node_decode_aper; -per_type_encoder_f CauseE2node_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseE2node_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CauseMisc.c b/e2sim/src/ASN1c/CauseMisc.c deleted file mode 100644 index 9ed8c24..0000000 --- a/e2sim/src/ASN1c/CauseMisc.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "CauseMisc.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = { - { 0, 27, "control-processing-overload" }, - { 1, 16, "hardware-failure" }, - { 2, 15, "om-intervention" }, - { 3, 11, "unspecified" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = { - 0, /* control-processing-overload(0) */ - 1, /* hardware-failure(1) */ - 2, /* om-intervention(2) */ - 3 /* unspecified(3) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = { - asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */ - 4, /* Number of elements in the maps */ - 5, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseMisc_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseMisc = { - "CauseMisc", - "CauseMisc", - &asn_OP_NativeEnumerated, - asn_DEF_CauseMisc_tags_1, - sizeof(asn_DEF_CauseMisc_tags_1) - /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ - asn_DEF_CauseMisc_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseMisc_tags_1) - /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseMisc_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseMisc_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/CauseMisc.h b/e2sim/src/ASN1c/CauseMisc.h deleted file mode 100644 index bd12d02..0000000 --- a/e2sim/src/ASN1c/CauseMisc.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _CauseMisc_H_ -#define _CauseMisc_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseMisc { - CauseMisc_control_processing_overload = 0, - CauseMisc_hardware_failure = 1, - CauseMisc_om_intervention = 2, - CauseMisc_unspecified = 3 - /* - * Enumeration is extensible - */ -} e_CauseMisc; - -/* CauseMisc */ -typedef long CauseMisc_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseMisc_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseMisc; -extern const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1; -asn_struct_free_f CauseMisc_free; -asn_struct_print_f CauseMisc_print; -asn_constr_check_f CauseMisc_constraint; -ber_type_decoder_f CauseMisc_decode_ber; -der_type_encoder_f CauseMisc_encode_der; -xer_type_decoder_f CauseMisc_decode_xer; -xer_type_encoder_f CauseMisc_encode_xer; -per_type_decoder_f CauseMisc_decode_uper; -per_type_encoder_f CauseMisc_encode_uper; -per_type_decoder_f CauseMisc_decode_aper; -per_type_encoder_f CauseMisc_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseMisc_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CauseProtocol.c b/e2sim/src/ASN1c/CauseProtocol.c deleted file mode 100644 index 0fdb788..0000000 --- a/e2sim/src/ASN1c/CauseProtocol.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "CauseProtocol.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseProtocol_value2enum_1[] = { - { 0, 21, "transfer-syntax-error" }, - { 1, 28, "abstract-syntax-error-reject" }, - { 2, 39, "abstract-syntax-error-ignore-and-notify" }, - { 3, 42, "message-not-compatible-with-receiver-state" }, - { 4, 14, "semantic-error" }, - { 5, 49, "abstract-syntax-error-falsely-constructed-message" }, - { 6, 11, "unspecified" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = { - 5, /* abstract-syntax-error-falsely-constructed-message(5) */ - 2, /* abstract-syntax-error-ignore-and-notify(2) */ - 1, /* abstract-syntax-error-reject(1) */ - 3, /* message-not-compatible-with-receiver-state(3) */ - 4, /* semantic-error(4) */ - 0, /* transfer-syntax-error(0) */ - 6 /* unspecified(6) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = { - asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */ - 7, /* Number of elements in the maps */ - 8, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseProtocol_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseProtocol = { - "CauseProtocol", - "CauseProtocol", - &asn_OP_NativeEnumerated, - asn_DEF_CauseProtocol_tags_1, - sizeof(asn_DEF_CauseProtocol_tags_1) - /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ - asn_DEF_CauseProtocol_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseProtocol_tags_1) - /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseProtocol_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseProtocol_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/CauseProtocol.h b/e2sim/src/ASN1c/CauseProtocol.h deleted file mode 100644 index e4534f8..0000000 --- a/e2sim/src/ASN1c/CauseProtocol.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _CauseProtocol_H_ -#define _CauseProtocol_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseProtocol { - CauseProtocol_transfer_syntax_error = 0, - CauseProtocol_abstract_syntax_error_reject = 1, - CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, - CauseProtocol_message_not_compatible_with_receiver_state = 3, - CauseProtocol_semantic_error = 4, - CauseProtocol_abstract_syntax_error_falsely_constructed_message = 5, - CauseProtocol_unspecified = 6 - /* - * Enumeration is extensible - */ -} e_CauseProtocol; - -/* CauseProtocol */ -typedef long CauseProtocol_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol; -extern const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1; -asn_struct_free_f CauseProtocol_free; -asn_struct_print_f CauseProtocol_print; -asn_constr_check_f CauseProtocol_constraint; -ber_type_decoder_f CauseProtocol_decode_ber; -der_type_encoder_f CauseProtocol_encode_der; -xer_type_decoder_f CauseProtocol_decode_xer; -xer_type_encoder_f CauseProtocol_encode_xer; -per_type_decoder_f CauseProtocol_decode_uper; -per_type_encoder_f CauseProtocol_encode_uper; -per_type_decoder_f CauseProtocol_decode_aper; -per_type_encoder_f CauseProtocol_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseProtocol_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CauseRICrequest.c b/e2sim/src/ASN1c/CauseRICrequest.c deleted file mode 100644 index 7bceca5..0000000 --- a/e2sim/src/ASN1c/CauseRICrequest.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "CauseRICrequest.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseRICrequest_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 13 } /* (0..13,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseRICrequest_value2enum_1[] = { - { 0, 23, "ran-function-id-invalid" }, - { 1, 20, "action-not-supported" }, - { 2, 17, "excessive-actions" }, - { 3, 16, "duplicate-action" }, - { 4, 23, "duplicate-event-trigger" }, - { 5, 23, "function-resource-limit" }, - { 6, 18, "request-id-unknown" }, - { 7, 46, "inconsistent-action-subsequent-action-sequence" }, - { 8, 23, "control-message-invalid" }, - { 9, 27, "ric-call-process-id-invalid" }, - { 10, 21, "control-timer-expired" }, - { 11, 25, "control-failed-to-execute" }, - { 12, 16, "system-not-ready" }, - { 13, 11, "unspecified" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseRICrequest_enum2value_1[] = { - 1, /* action-not-supported(1) */ - 11, /* control-failed-to-execute(11) */ - 8, /* control-message-invalid(8) */ - 10, /* control-timer-expired(10) */ - 3, /* duplicate-action(3) */ - 4, /* duplicate-event-trigger(4) */ - 2, /* excessive-actions(2) */ - 5, /* function-resource-limit(5) */ - 7, /* inconsistent-action-subsequent-action-sequence(7) */ - 0, /* ran-function-id-invalid(0) */ - 6, /* request-id-unknown(6) */ - 9, /* ric-call-process-id-invalid(9) */ - 12, /* system-not-ready(12) */ - 13 /* unspecified(13) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseRICrequest_specs_1 = { - asn_MAP_CauseRICrequest_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseRICrequest_enum2value_1, /* N => "tag"; sorted by N */ - 14, /* Number of elements in the maps */ - 15, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseRICrequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseRICrequest = { - "CauseRICrequest", - "CauseRICrequest", - &asn_OP_NativeEnumerated, - asn_DEF_CauseRICrequest_tags_1, - sizeof(asn_DEF_CauseRICrequest_tags_1) - /sizeof(asn_DEF_CauseRICrequest_tags_1[0]), /* 1 */ - asn_DEF_CauseRICrequest_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseRICrequest_tags_1) - /sizeof(asn_DEF_CauseRICrequest_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseRICrequest_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseRICrequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/CauseRICrequest.h b/e2sim/src/ASN1c/CauseRICrequest.h deleted file mode 100644 index 76294b6..0000000 --- a/e2sim/src/ASN1c/CauseRICrequest.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _CauseRICrequest_H_ -#define _CauseRICrequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseRICrequest { - CauseRICrequest_ran_function_id_invalid = 0, - CauseRICrequest_action_not_supported = 1, - CauseRICrequest_excessive_actions = 2, - CauseRICrequest_duplicate_action = 3, - CauseRICrequest_duplicate_event_trigger = 4, - CauseRICrequest_function_resource_limit = 5, - CauseRICrequest_request_id_unknown = 6, - CauseRICrequest_inconsistent_action_subsequent_action_sequence = 7, - CauseRICrequest_control_message_invalid = 8, - CauseRICrequest_ric_call_process_id_invalid = 9, - CauseRICrequest_control_timer_expired = 10, - CauseRICrequest_control_failed_to_execute = 11, - CauseRICrequest_system_not_ready = 12, - CauseRICrequest_unspecified = 13 - /* - * Enumeration is extensible - */ -} e_CauseRICrequest; - -/* CauseRICrequest */ -typedef long CauseRICrequest_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseRICrequest_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseRICrequest; -extern const asn_INTEGER_specifics_t asn_SPC_CauseRICrequest_specs_1; -asn_struct_free_f CauseRICrequest_free; -asn_struct_print_f CauseRICrequest_print; -asn_constr_check_f CauseRICrequest_constraint; -ber_type_decoder_f CauseRICrequest_decode_ber; -der_type_encoder_f CauseRICrequest_encode_der; -xer_type_decoder_f CauseRICrequest_decode_xer; -xer_type_encoder_f CauseRICrequest_encode_xer; -per_type_decoder_f CauseRICrequest_decode_uper; -per_type_encoder_f CauseRICrequest_encode_uper; -per_type_decoder_f CauseRICrequest_decode_aper; -per_type_encoder_f CauseRICrequest_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseRICrequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CauseRICservice.c b/e2sim/src/ASN1c/CauseRICservice.c deleted file mode 100644 index 9c08e57..0000000 --- a/e2sim/src/ASN1c/CauseRICservice.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "CauseRICservice.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseRICservice_value2enum_1[] = { - { 0, 26, "ran-function-not-supported" }, - { 1, 19, "excessive-functions" }, - { 2, 18, "ric-resource-limit" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseRICservice_enum2value_1[] = { - 1, /* excessive-functions(1) */ - 0, /* ran-function-not-supported(0) */ - 2 /* ric-resource-limit(2) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1 = { - asn_MAP_CauseRICservice_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseRICservice_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseRICservice_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseRICservice = { - "CauseRICservice", - "CauseRICservice", - &asn_OP_NativeEnumerated, - asn_DEF_CauseRICservice_tags_1, - sizeof(asn_DEF_CauseRICservice_tags_1) - /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ - asn_DEF_CauseRICservice_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseRICservice_tags_1) - /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseRICservice_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseRICservice_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/CauseRICservice.h b/e2sim/src/ASN1c/CauseRICservice.h deleted file mode 100644 index d9b27ef..0000000 --- a/e2sim/src/ASN1c/CauseRICservice.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _CauseRICservice_H_ -#define _CauseRICservice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseRICservice { - CauseRICservice_ran_function_not_supported = 0, - CauseRICservice_excessive_functions = 1, - CauseRICservice_ric_resource_limit = 2 - /* - * Enumeration is extensible - */ -} e_CauseRICservice; - -/* CauseRICservice */ -typedef long CauseRICservice_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseRICservice; -extern const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1; -asn_struct_free_f CauseRICservice_free; -asn_struct_print_f CauseRICservice_print; -asn_constr_check_f CauseRICservice_constraint; -ber_type_decoder_f CauseRICservice_decode_ber; -der_type_encoder_f CauseRICservice_encode_der; -xer_type_decoder_f CauseRICservice_decode_xer; -xer_type_encoder_f CauseRICservice_encode_xer; -per_type_decoder_f CauseRICservice_decode_uper; -per_type_encoder_f CauseRICservice_encode_uper; -per_type_decoder_f CauseRICservice_decode_aper; -per_type_encoder_f CauseRICservice_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseRICservice_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CauseTransport.c b/e2sim/src/ASN1c/CauseTransport.c deleted file mode 100644 index ce9d605..0000000 --- a/e2sim/src/ASN1c/CauseTransport.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "CauseTransport.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = { - { 0, 11, "unspecified" }, - { 1, 30, "transport-resource-unavailable" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = { - 1, /* transport-resource-unavailable(1) */ - 0 /* unspecified(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = { - asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_CauseTransport_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_CauseTransport = { - "CauseTransport", - "CauseTransport", - &asn_OP_NativeEnumerated, - asn_DEF_CauseTransport_tags_1, - sizeof(asn_DEF_CauseTransport_tags_1) - /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ - asn_DEF_CauseTransport_tags_1, /* Same as above */ - sizeof(asn_DEF_CauseTransport_tags_1) - /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CauseTransport_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_CauseTransport_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/CauseTransport.h b/e2sim/src/ASN1c/CauseTransport.h deleted file mode 100644 index 8e926f3..0000000 --- a/e2sim/src/ASN1c/CauseTransport.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _CauseTransport_H_ -#define _CauseTransport_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum CauseTransport { - CauseTransport_unspecified = 0, - CauseTransport_transport_resource_unavailable = 1 - /* - * Enumeration is extensible - */ -} e_CauseTransport; - -/* CauseTransport */ -typedef long CauseTransport_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_CauseTransport_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_CauseTransport; -extern const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1; -asn_struct_free_f CauseTransport_free; -asn_struct_print_f CauseTransport_print; -asn_constr_check_f CauseTransport_constraint; -ber_type_decoder_f CauseTransport_decode_ber; -der_type_encoder_f CauseTransport_encode_der; -xer_type_decoder_f CauseTransport_decode_xer; -xer_type_encoder_f CauseTransport_encode_xer; -per_type_decoder_f CauseTransport_decode_uper; -per_type_encoder_f CauseTransport_encode_uper; -per_type_decoder_f CauseTransport_decode_aper; -per_type_encoder_f CauseTransport_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CauseTransport_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/Criticality.c b/e2sim/src/ASN1c/Criticality.c deleted file mode 100644 index 5b8c367..0000000 --- a/e2sim/src/ASN1c/Criticality.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "Criticality.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_Criticality_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = { - { 0, 6, "reject" }, - { 1, 6, "ignore" }, - { 2, 6, "notify" } -}; -static const unsigned int asn_MAP_Criticality_enum2value_1[] = { - 1, /* ignore(1) */ - 2, /* notify(2) */ - 0 /* reject(0) */ -}; -const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = { - asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_Criticality = { - "Criticality", - "Criticality", - &asn_OP_NativeEnumerated, - asn_DEF_Criticality_tags_1, - sizeof(asn_DEF_Criticality_tags_1) - /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ - asn_DEF_Criticality_tags_1, /* Same as above */ - sizeof(asn_DEF_Criticality_tags_1) - /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_Criticality_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_Criticality_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/Criticality.h b/e2sim/src/ASN1c/Criticality.h deleted file mode 100644 index 64e46bb..0000000 --- a/e2sim/src/ASN1c/Criticality.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _Criticality_H_ -#define _Criticality_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum Criticality { - Criticality_reject = 0, - Criticality_ignore = 1, - Criticality_notify = 2 -} e_Criticality; - -/* Criticality */ -typedef long Criticality_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_Criticality_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_Criticality; -extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1; -asn_struct_free_f Criticality_free; -asn_struct_print_f Criticality_print; -asn_constr_check_f Criticality_constraint; -ber_type_decoder_f Criticality_decode_ber; -der_type_encoder_f Criticality_encode_der; -xer_type_decoder_f Criticality_decode_xer; -xer_type_encoder_f Criticality_encode_xer; -per_type_decoder_f Criticality_decode_uper; -per_type_encoder_f Criticality_encode_uper; -per_type_decoder_f Criticality_decode_aper; -per_type_encoder_f Criticality_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _Criticality_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.c b/e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.c deleted file mode 100644 index 5b5c32a..0000000 --- a/e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "CriticalityDiagnostics-IE-Item.h" - -asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iECriticality), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "iECriticality" - }, - { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iE_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "iE-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, typeOfError), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TypeOfError, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "typeOfError" - }, -}; -static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* typeOfError */ -}; -asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 = { - sizeof(struct CriticalityDiagnostics_IE_Item), - offsetof(struct CriticalityDiagnostics_IE_Item, _asn_ctx), - asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item = { - "CriticalityDiagnostics-IE-Item", - "CriticalityDiagnostics-IE-Item", - &asn_OP_SEQUENCE, - asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, - sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ - asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CriticalityDiagnostics_IE_Item_1, - 3, /* Elements count */ - &asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.h b/e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.h deleted file mode 100644 index e0b769b..0000000 --- a/e2sim/src/ASN1c/CriticalityDiagnostics-IE-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _CriticalityDiagnostics_IE_Item_H_ -#define _CriticalityDiagnostics_IE_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "Criticality.h" -#include "ProtocolIE-ID.h" -#include "TypeOfError.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* CriticalityDiagnostics-IE-Item */ -typedef struct CriticalityDiagnostics_IE_Item { - Criticality_t iECriticality; - ProtocolIE_ID_t iE_ID; - TypeOfError_t typeOfError; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CriticalityDiagnostics_IE_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item; -extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1; -extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _CriticalityDiagnostics_IE_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.c b/e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.c deleted file mode 100644 index f8a7630..0000000 --- a/e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "CriticalityDiagnostics-IE-List.h" - -#include "CriticalityDiagnostics-IE-Item.h" -asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics_IE_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = { - sizeof(struct CriticalityDiagnostics_IE_List), - offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = { - "CriticalityDiagnostics-IE-List", - "CriticalityDiagnostics-IE-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_CriticalityDiagnostics_IE_List_tags_1, - sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ - asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ - sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_CriticalityDiagnostics_IE_List_1, - 1, /* Single element */ - &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.h b/e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.h deleted file mode 100644 index 65d4ef0..0000000 --- a/e2sim/src/ASN1c/CriticalityDiagnostics-IE-List.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _CriticalityDiagnostics_IE_List_H_ -#define _CriticalityDiagnostics_IE_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct CriticalityDiagnostics_IE_Item; - -/* CriticalityDiagnostics-IE-List */ -typedef struct CriticalityDiagnostics_IE_List { - A_SEQUENCE_OF(struct CriticalityDiagnostics_IE_Item) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CriticalityDiagnostics_IE_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List; -extern asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1; -extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[1]; -extern asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _CriticalityDiagnostics_IE_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/CriticalityDiagnostics.c b/e2sim/src/ASN1c/CriticalityDiagnostics.c deleted file mode 100644 index 5a9e07d..0000000 --- a/e2sim/src/ASN1c/CriticalityDiagnostics.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "CriticalityDiagnostics.h" - -#include "RICrequestID.h" -#include "CriticalityDiagnostics-IE-List.h" -static asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = { - { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TriggeringMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "triggeringMessage" - }, - { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "procedureCriticality" - }, - { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, ricRequestorID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricRequestorID" - }, - { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CriticalityDiagnostics_IE_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "iEsCriticalityDiagnostics" - }, -}; -static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; -static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ricRequestorID */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iEsCriticalityDiagnostics */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = { - sizeof(struct CriticalityDiagnostics), - offsetof(struct CriticalityDiagnostics, _asn_ctx), - asn_MAP_CriticalityDiagnostics_tag2el_1, - 5, /* Count of tags in the map */ - asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */ - 5, 0, /* Root/Additions */ - 5, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = { - "CriticalityDiagnostics", - "CriticalityDiagnostics", - &asn_OP_SEQUENCE, - asn_DEF_CriticalityDiagnostics_tags_1, - sizeof(asn_DEF_CriticalityDiagnostics_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ - asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */ - sizeof(asn_DEF_CriticalityDiagnostics_tags_1) - /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_CriticalityDiagnostics_1, - 5, /* Elements count */ - &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/CriticalityDiagnostics.h b/e2sim/src/ASN1c/CriticalityDiagnostics.h deleted file mode 100644 index cf33265..0000000 --- a/e2sim/src/ASN1c/CriticalityDiagnostics.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _CriticalityDiagnostics_H_ -#define _CriticalityDiagnostics_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "TriggeringMessage.h" -#include "Criticality.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RICrequestID; -struct CriticalityDiagnostics_IE_List; - -/* CriticalityDiagnostics */ -typedef struct CriticalityDiagnostics { - ProcedureCode_t *procedureCode; /* OPTIONAL */ - TriggeringMessage_t *triggeringMessage; /* OPTIONAL */ - Criticality_t *procedureCriticality; /* OPTIONAL */ - struct RICrequestID *ricRequestorID; /* OPTIONAL */ - struct CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} CriticalityDiagnostics_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics; - -#ifdef __cplusplus -} -#endif - -#endif /* _CriticalityDiagnostics_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2AP-PDU.c b/e2sim/src/ASN1c/E2AP-PDU.c deleted file mode 100644 index 5042ad2..0000000 --- a/e2sim/src/ASN1c/E2AP-PDU.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2AP-PDU.h" - -#include "InitiatingMessage.h" -#include "SuccessfulOutcome.h" -#include "UnsuccessfulOutcome.h" -static asn_per_constraints_t asn_PER_type_E2AP_PDU_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2AP_PDU_1[] = { - { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.initiatingMessage), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_InitiatingMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "initiatingMessage" - }, - { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.successfulOutcome), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SuccessfulOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "successfulOutcome" - }, - { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.unsuccessfulOutcome), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_UnsuccessfulOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "unsuccessfulOutcome" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2AP_PDU_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */ -}; -static asn_CHOICE_specifics_t asn_SPC_E2AP_PDU_specs_1 = { - sizeof(struct E2AP_PDU), - offsetof(struct E2AP_PDU, _asn_ctx), - offsetof(struct E2AP_PDU, present), - sizeof(((struct E2AP_PDU *)0)->present), - asn_MAP_E2AP_PDU_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2AP_PDU = { - "E2AP-PDU", - "E2AP-PDU", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2AP_PDU_constr_1, CHOICE_constraint }, - asn_MBR_E2AP_PDU_1, - 3, /* Elements count */ - &asn_SPC_E2AP_PDU_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2AP-PDU.h b/e2sim/src/ASN1c/E2AP-PDU.h deleted file mode 100644 index 977ba71..0000000 --- a/e2sim/src/ASN1c/E2AP-PDU.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2AP_PDU_H_ -#define _E2AP_PDU_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2AP_PDU_PR { - E2AP_PDU_PR_NOTHING, /* No components present */ - E2AP_PDU_PR_initiatingMessage, - E2AP_PDU_PR_successfulOutcome, - E2AP_PDU_PR_unsuccessfulOutcome - /* Extensions may appear below */ - -} E2AP_PDU_PR; - -/* Forward declarations */ -struct InitiatingMessage; -struct SuccessfulOutcome; -struct UnsuccessfulOutcome; - -/* E2AP-PDU */ -typedef struct E2AP_PDU { - E2AP_PDU_PR present; - union E2AP_PDU_u { - struct InitiatingMessage *initiatingMessage; - struct SuccessfulOutcome *successfulOutcome; - struct UnsuccessfulOutcome *unsuccessfulOutcome; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2AP_PDU_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2AP_PDU; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2AP_PDU_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2connectionSetupFailed-Item.c b/e2sim/src/ASN1c/E2connectionSetupFailed-Item.c deleted file mode 100644 index 1bc9bb9..0000000 --- a/e2sim/src/ASN1c/E2connectionSetupFailed-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2connectionSetupFailed-Item.h" - -static asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_Item, tnlInformation), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformation" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionSetupFailed_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionSetupFailed_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlInformation */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_Item_specs_1 = { - sizeof(struct E2connectionSetupFailed_Item), - offsetof(struct E2connectionSetupFailed_Item, _asn_ctx), - asn_MAP_E2connectionSetupFailed_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_Item = { - "E2connectionSetupFailed-Item", - "E2connectionSetupFailed-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionSetupFailed_Item_tags_1, - sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1) - /sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1[0]), /* 1 */ - asn_DEF_E2connectionSetupFailed_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1) - /sizeof(asn_DEF_E2connectionSetupFailed_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionSetupFailed_Item_1, - 2, /* Elements count */ - &asn_SPC_E2connectionSetupFailed_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2connectionSetupFailed-Item.h b/e2sim/src/ASN1c/E2connectionSetupFailed-Item.h deleted file mode 100644 index 0109037..0000000 --- a/e2sim/src/ASN1c/E2connectionSetupFailed-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2connectionSetupFailed_Item_H_ -#define _E2connectionSetupFailed_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "TNLinformation.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionSetupFailed-Item */ -typedef struct E2connectionSetupFailed_Item { - TNLinformation_t tnlInformation; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionSetupFailed_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionSetupFailed_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2connectionSetupFailed-List.c b/e2sim/src/ASN1c/E2connectionSetupFailed-List.c deleted file mode 100644 index d06cdfd..0000000 --- a/e2sim/src/ASN1c/E2connectionSetupFailed-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2connectionSetupFailed-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2connectionSetupFailed_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P6, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionSetupFailed_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2connectionSetupFailed_List_specs_1 = { - sizeof(struct E2connectionSetupFailed_List), - offsetof(struct E2connectionSetupFailed_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_List = { - "E2connectionSetupFailed-List", - "E2connectionSetupFailed-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2connectionSetupFailed_List_tags_1, - sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1) - /sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1[0]), /* 1 */ - asn_DEF_E2connectionSetupFailed_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1) - /sizeof(asn_DEF_E2connectionSetupFailed_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2connectionSetupFailed_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2connectionSetupFailed_List_1, - 1, /* Single element */ - &asn_SPC_E2connectionSetupFailed_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2connectionSetupFailed-List.h b/e2sim/src/ASN1c/E2connectionSetupFailed-List.h deleted file mode 100644 index 7e14810..0000000 --- a/e2sim/src/ASN1c/E2connectionSetupFailed-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2connectionSetupFailed_List_H_ -#define _E2connectionSetupFailed_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2connectionSetupFailed-List */ -typedef struct E2connectionSetupFailed_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionSetupFailed_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionSetupFailed_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2connectionUpdate-Item.c b/e2sim/src/ASN1c/E2connectionUpdate-Item.c deleted file mode 100644 index fa59079..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdate-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2connectionUpdate-Item.h" - -static asn_TYPE_member_t asn_MBR_E2connectionUpdate_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_Item, tnlInformation), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformation" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_Item, tnlUsage), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLusage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlUsage" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlInformation */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tnlUsage */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_Item_specs_1 = { - sizeof(struct E2connectionUpdate_Item), - offsetof(struct E2connectionUpdate_Item, _asn_ctx), - asn_MAP_E2connectionUpdate_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_Item = { - "E2connectionUpdate-Item", - "E2connectionUpdate-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdate_Item_tags_1, - sizeof(asn_DEF_E2connectionUpdate_Item_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_Item_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdate_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_Item_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_Item_1, - 2, /* Elements count */ - &asn_SPC_E2connectionUpdate_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2connectionUpdate-Item.h b/e2sim/src/ASN1c/E2connectionUpdate-Item.h deleted file mode 100644 index e312331..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdate-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2connectionUpdate_Item_H_ -#define _E2connectionUpdate_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "TNLinformation.h" -#include "TNLusage.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdate-Item */ -typedef struct E2connectionUpdate_Item { - TNLinformation_t tnlInformation; - TNLusage_t tnlUsage; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdate_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2connectionUpdate-List.c b/e2sim/src/ASN1c/E2connectionUpdate-List.c deleted file mode 100644 index eef607d..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdate-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2connectionUpdate-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2connectionUpdate_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2connectionUpdate_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P4, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2connectionUpdate_List_specs_1 = { - sizeof(struct E2connectionUpdate_List), - offsetof(struct E2connectionUpdate_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_List = { - "E2connectionUpdate-List", - "E2connectionUpdate-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2connectionUpdate_List_tags_1, - sizeof(asn_DEF_E2connectionUpdate_List_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_List_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdate_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_List_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2connectionUpdate_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2connectionUpdate_List_1, - 1, /* Single element */ - &asn_SPC_E2connectionUpdate_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2connectionUpdate-List.h b/e2sim/src/ASN1c/E2connectionUpdate-List.h deleted file mode 100644 index 845bd84..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdate-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2connectionUpdate_List_H_ -#define _E2connectionUpdate_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2connectionUpdate-List */ -typedef struct E2connectionUpdate_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdate_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2connectionUpdate.c b/e2sim/src/ASN1c/E2connectionUpdate.c deleted file mode 100644 index 59c7253..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdate.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2connectionUpdate.h" - -asn_TYPE_member_t asn_MBR_E2connectionUpdate_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P15, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_specs_1 = { - sizeof(struct E2connectionUpdate), - offsetof(struct E2connectionUpdate, _asn_ctx), - asn_MAP_E2connectionUpdate_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate = { - "E2connectionUpdate", - "E2connectionUpdate", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdate_tags_1, - sizeof(asn_DEF_E2connectionUpdate_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdate_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_tags_1) - /sizeof(asn_DEF_E2connectionUpdate_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_1, - 1, /* Elements count */ - &asn_SPC_E2connectionUpdate_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2connectionUpdate.h b/e2sim/src/ASN1c/E2connectionUpdate.h deleted file mode 100644 index 60a143f..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdate.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2connectionUpdate_H_ -#define _E2connectionUpdate_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdate */ -typedef struct E2connectionUpdate { - ProtocolIE_Container_1917P15_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_specs_1; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdate_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2connectionUpdateAcknowledge.c b/e2sim/src/ASN1c/E2connectionUpdateAcknowledge.c deleted file mode 100644 index ad48b95..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdateAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2connectionUpdateAcknowledge.h" - -asn_TYPE_member_t asn_MBR_E2connectionUpdateAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P16, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAcknowledge_specs_1 = { - sizeof(struct E2connectionUpdateAcknowledge), - offsetof(struct E2connectionUpdateAcknowledge, _asn_ctx), - asn_MAP_E2connectionUpdateAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAcknowledge = { - "E2connectionUpdateAcknowledge", - "E2connectionUpdateAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateAcknowledge_tags_1, - sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdateAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_E2connectionUpdateAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_E2connectionUpdateAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2connectionUpdateAcknowledge.h b/e2sim/src/ASN1c/E2connectionUpdateAcknowledge.h deleted file mode 100644 index a03dca2..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdateAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2connectionUpdateAcknowledge_H_ -#define _E2connectionUpdateAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdateAcknowledge */ -typedef struct E2connectionUpdateAcknowledge { - ProtocolIE_Container_1917P16_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdateAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2connectionUpdateFailure.c b/e2sim/src/ASN1c/E2connectionUpdateFailure.c deleted file mode 100644 index 35235a8..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdateFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2connectionUpdateFailure.h" - -asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P17, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_specs_1 = { - sizeof(struct E2connectionUpdateFailure), - offsetof(struct E2connectionUpdateFailure, _asn_ctx), - asn_MAP_E2connectionUpdateFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure = { - "E2connectionUpdateFailure", - "E2connectionUpdateFailure", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateFailure_tags_1, - sizeof(asn_DEF_E2connectionUpdateFailure_tags_1) - /sizeof(asn_DEF_E2connectionUpdateFailure_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdateFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateFailure_tags_1) - /sizeof(asn_DEF_E2connectionUpdateFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateFailure_1, - 1, /* Elements count */ - &asn_SPC_E2connectionUpdateFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2connectionUpdateFailure.h b/e2sim/src/ASN1c/E2connectionUpdateFailure.h deleted file mode 100644 index 8cf0d7a..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdateFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2connectionUpdateFailure_H_ -#define _E2connectionUpdateFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdateFailure */ -typedef struct E2connectionUpdateFailure { - ProtocolIE_Container_1917P17_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdateFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2connectionUpdateRemove-Item.c b/e2sim/src/ASN1c/E2connectionUpdateRemove-Item.c deleted file mode 100644 index ebac20d..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdateRemove-Item.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2connectionUpdateRemove-Item.h" - -static asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_Item, tnlInformation), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformation" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateRemove_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateRemove_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tnlInformation */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_Item_specs_1 = { - sizeof(struct E2connectionUpdateRemove_Item), - offsetof(struct E2connectionUpdateRemove_Item, _asn_ctx), - asn_MAP_E2connectionUpdateRemove_Item_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_Item = { - "E2connectionUpdateRemove-Item", - "E2connectionUpdateRemove-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateRemove_Item_tags_1, - sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1) - /sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdateRemove_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1) - /sizeof(asn_DEF_E2connectionUpdateRemove_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateRemove_Item_1, - 1, /* Elements count */ - &asn_SPC_E2connectionUpdateRemove_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2connectionUpdateRemove-Item.h b/e2sim/src/ASN1c/E2connectionUpdateRemove-Item.h deleted file mode 100644 index 76669fa..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdateRemove-Item.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2connectionUpdateRemove_Item_H_ -#define _E2connectionUpdateRemove_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "TNLinformation.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2connectionUpdateRemove-Item */ -typedef struct E2connectionUpdateRemove_Item { - TNLinformation_t tnlInformation; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateRemove_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdateRemove_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2connectionUpdateRemove-List.c b/e2sim/src/ASN1c/E2connectionUpdateRemove-List.c deleted file mode 100644 index 500a81e..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdateRemove-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2connectionUpdateRemove-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2connectionUpdateRemove_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P5, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateRemove_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2connectionUpdateRemove_List_specs_1 = { - sizeof(struct E2connectionUpdateRemove_List), - offsetof(struct E2connectionUpdateRemove_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_List = { - "E2connectionUpdateRemove-List", - "E2connectionUpdateRemove-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2connectionUpdateRemove_List_tags_1, - sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1) - /sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1[0]), /* 1 */ - asn_DEF_E2connectionUpdateRemove_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1) - /sizeof(asn_DEF_E2connectionUpdateRemove_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2connectionUpdateRemove_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2connectionUpdateRemove_List_1, - 1, /* Single element */ - &asn_SPC_E2connectionUpdateRemove_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2connectionUpdateRemove-List.h b/e2sim/src/ASN1c/E2connectionUpdateRemove-List.h deleted file mode 100644 index ec80ae8..0000000 --- a/e2sim/src/ASN1c/E2connectionUpdateRemove-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2connectionUpdateRemove_List_H_ -#define _E2connectionUpdateRemove_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2connectionUpdateRemove-List */ -typedef struct E2connectionUpdateRemove_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateRemove_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2connectionUpdateRemove_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigAddition-Item.c b/e2sim/src/ASN1c/E2nodeComponentConfigAddition-Item.c deleted file mode 100644 index 45cfa47..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigAddition-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigAddition-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_Item, e2nodeComponentConfiguration), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfiguration, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfiguration" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAddition_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAddition_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfiguration */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigAddition_Item), - offsetof(struct E2nodeComponentConfigAddition_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigAddition_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_Item = { - "E2nodeComponentConfigAddition-Item", - "E2nodeComponentConfigAddition-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigAddition_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAddition_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAddition_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAddition_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigAddition-Item.h b/e2sim/src/ASN1c/E2nodeComponentConfigAddition-Item.h deleted file mode 100644 index 009d0ad..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigAddition-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigAddition_Item_H_ -#define _E2nodeComponentConfigAddition_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfiguration.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigAddition-Item */ -typedef struct E2nodeComponentConfigAddition_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfiguration_t e2nodeComponentConfiguration; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAddition_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigAddition_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigAddition-List.c b/e2sim/src/ASN1c/E2nodeComponentConfigAddition-List.c deleted file mode 100644 index 8175003..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigAddition-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigAddition-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigAddition_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P7, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAddition_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigAddition_List_specs_1 = { - sizeof(struct E2nodeComponentConfigAddition_List), - offsetof(struct E2nodeComponentConfigAddition_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_List = { - "E2nodeComponentConfigAddition-List", - "E2nodeComponentConfigAddition-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigAddition_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAddition_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2nodeComponentConfigAddition_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigAddition_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigAddition_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigAddition-List.h b/e2sim/src/ASN1c/E2nodeComponentConfigAddition-List.h deleted file mode 100644 index 62747cb..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigAddition-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigAddition_List_H_ -#define _E2nodeComponentConfigAddition_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigAddition-List */ -typedef struct E2nodeComponentConfigAddition_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAddition_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigAddition_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.c b/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.c deleted file mode 100644 index 29cef18..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigAdditionAck-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_Item, e2nodeComponentConfigurationAck), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfigurationAck, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfigurationAck" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAdditionAck_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfigurationAck */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigAdditionAck_Item), - offsetof(struct E2nodeComponentConfigAdditionAck_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigAdditionAck_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_Item = { - "E2nodeComponentConfigAdditionAck-Item", - "E2nodeComponentConfigAdditionAck-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAdditionAck_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAdditionAck_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.h b/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.h deleted file mode 100644 index eb62eb7..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigAdditionAck_Item_H_ -#define _E2nodeComponentConfigAdditionAck_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfigurationAck.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigAdditionAck-Item */ -typedef struct E2nodeComponentConfigAdditionAck_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfigurationAck_t e2nodeComponentConfigurationAck; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAdditionAck_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigAdditionAck_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-List.c b/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-List.c deleted file mode 100644 index 70f51bb..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigAdditionAck-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigAdditionAck_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P11, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_List_specs_1 = { - sizeof(struct E2nodeComponentConfigAdditionAck_List), - offsetof(struct E2nodeComponentConfigAdditionAck_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_List = { - "E2nodeComponentConfigAdditionAck-List", - "E2nodeComponentConfigAdditionAck-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2nodeComponentConfigAdditionAck_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigAdditionAck_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigAdditionAck_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-List.h b/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-List.h deleted file mode 100644 index 9a77b8b..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigAdditionAck-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigAdditionAck_List_H_ -#define _E2nodeComponentConfigAdditionAck_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigAdditionAck-List */ -typedef struct E2nodeComponentConfigAdditionAck_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAdditionAck_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigAdditionAck_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-Item.c b/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-Item.c deleted file mode 100644 index 6b60e12..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigRemoval-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemoval_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* e2nodeComponentID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigRemoval_Item), - offsetof(struct E2nodeComponentConfigRemoval_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigRemoval_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_Item = { - "E2nodeComponentConfigRemoval-Item", - "E2nodeComponentConfigRemoval-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemoval_Item_1, - 2, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemoval_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-Item.h b/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-Item.h deleted file mode 100644 index 36c86d5..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigRemoval_Item_H_ -#define _E2nodeComponentConfigRemoval_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigRemoval-Item */ -typedef struct E2nodeComponentConfigRemoval_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemoval_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigRemoval_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-List.c b/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-List.c deleted file mode 100644 index dc48d0f..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigRemoval-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigRemoval_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P9, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemoval_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigRemoval_List_specs_1 = { - sizeof(struct E2nodeComponentConfigRemoval_List), - offsetof(struct E2nodeComponentConfigRemoval_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_List = { - "E2nodeComponentConfigRemoval-List", - "E2nodeComponentConfigRemoval-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigRemoval_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemoval_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2nodeComponentConfigRemoval_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigRemoval_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigRemoval_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-List.h b/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-List.h deleted file mode 100644 index 944a61a..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigRemoval-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigRemoval_List_H_ -#define _E2nodeComponentConfigRemoval_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigRemoval-List */ -typedef struct E2nodeComponentConfigRemoval_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemoval_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigRemoval_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.c b/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.c deleted file mode 100644 index a07a8bb..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigRemovalAck-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_Item, e2nodeComponentConfigurationAck), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfigurationAck, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfigurationAck" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemovalAck_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfigurationAck */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigRemovalAck_Item), - offsetof(struct E2nodeComponentConfigRemovalAck_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigRemovalAck_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_Item = { - "E2nodeComponentConfigRemovalAck-Item", - "E2nodeComponentConfigRemovalAck-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemovalAck_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemovalAck_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.h b/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.h deleted file mode 100644 index 6ab5a05..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigRemovalAck_Item_H_ -#define _E2nodeComponentConfigRemovalAck_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfigurationAck.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigRemovalAck-Item */ -typedef struct E2nodeComponentConfigRemovalAck_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfigurationAck_t e2nodeComponentConfigurationAck; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemovalAck_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigRemovalAck_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-List.c b/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-List.c deleted file mode 100644 index ed1c6c7..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigRemovalAck-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigRemovalAck_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P13, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_List_specs_1 = { - sizeof(struct E2nodeComponentConfigRemovalAck_List), - offsetof(struct E2nodeComponentConfigRemovalAck_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_List = { - "E2nodeComponentConfigRemovalAck-List", - "E2nodeComponentConfigRemovalAck-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2nodeComponentConfigRemovalAck_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigRemovalAck_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigRemovalAck_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-List.h b/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-List.h deleted file mode 100644 index fc59258..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigRemovalAck-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigRemovalAck_List_H_ -#define _E2nodeComponentConfigRemovalAck_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigRemovalAck-List */ -typedef struct E2nodeComponentConfigRemovalAck_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemovalAck_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigRemovalAck_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.c b/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.c deleted file mode 100644 index 295bf5d..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigUpdate-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_Item, e2nodeComponentConfiguration), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfiguration, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfiguration" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdate_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfiguration */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigUpdate_Item), - offsetof(struct E2nodeComponentConfigUpdate_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigUpdate_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_Item = { - "E2nodeComponentConfigUpdate-Item", - "E2nodeComponentConfigUpdate-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdate_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdate_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.h b/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.h deleted file mode 100644 index f78ddbe..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigUpdate_Item_H_ -#define _E2nodeComponentConfigUpdate_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfiguration.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigUpdate-Item */ -typedef struct E2nodeComponentConfigUpdate_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfiguration_t e2nodeComponentConfiguration; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdate_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigUpdate_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.c b/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.c deleted file mode 100644 index 7a49f73..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigUpdate-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigUpdate_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P8, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdate_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigUpdate_List_specs_1 = { - sizeof(struct E2nodeComponentConfigUpdate_List), - offsetof(struct E2nodeComponentConfigUpdate_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_List = { - "E2nodeComponentConfigUpdate-List", - "E2nodeComponentConfigUpdate-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigUpdate_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdate_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2nodeComponentConfigUpdate_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigUpdate_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigUpdate_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.h b/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.h deleted file mode 100644 index ee79073..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigUpdate-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigUpdate_List_H_ -#define _E2nodeComponentConfigUpdate_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigUpdate-List */ -typedef struct E2nodeComponentConfigUpdate_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdate_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigUpdate_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.c b/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.c deleted file mode 100644 index 8b33328..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigUpdateAck-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_Item, e2nodeComponentInterfaceType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceType" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_Item, e2nodeComponentID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_E2nodeComponentID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_Item, e2nodeComponentConfigurationAck), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentConfigurationAck, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentConfigurationAck" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdateAck_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* e2nodeComponentConfigurationAck */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_Item_specs_1 = { - sizeof(struct E2nodeComponentConfigUpdateAck_Item), - offsetof(struct E2nodeComponentConfigUpdateAck_Item, _asn_ctx), - asn_MAP_E2nodeComponentConfigUpdateAck_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_Item = { - "E2nodeComponentConfigUpdateAck-Item", - "E2nodeComponentConfigUpdateAck-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdateAck_Item_1, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdateAck_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.h b/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.h deleted file mode 100644 index 8fede58..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigUpdateAck_Item_H_ -#define _E2nodeComponentConfigUpdateAck_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "E2nodeComponentInterfaceType.h" -#include "E2nodeComponentID.h" -#include "E2nodeComponentConfigurationAck.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfigUpdateAck-Item */ -typedef struct E2nodeComponentConfigUpdateAck_Item { - E2nodeComponentInterfaceType_t e2nodeComponentInterfaceType; - E2nodeComponentID_t e2nodeComponentID; - E2nodeComponentConfigurationAck_t e2nodeComponentConfigurationAck; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdateAck_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigUpdateAck_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-List.c b/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-List.c deleted file mode 100644 index d25030a..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigUpdateAck-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2nodeComponentConfigUpdateAck_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P12, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_List_specs_1 = { - sizeof(struct E2nodeComponentConfigUpdateAck_List), - offsetof(struct E2nodeComponentConfigUpdateAck_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_List = { - "E2nodeComponentConfigUpdateAck-List", - "E2nodeComponentConfigUpdateAck-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2nodeComponentConfigUpdateAck_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeComponentConfigUpdateAck_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeComponentConfigUpdateAck_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-List.h b/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-List.h deleted file mode 100644 index 8d33460..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigUpdateAck-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigUpdateAck_List_H_ -#define _E2nodeComponentConfigUpdateAck_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeComponentConfigUpdateAck-List */ -typedef struct E2nodeComponentConfigUpdateAck_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdateAck_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigUpdateAck_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfiguration.c b/e2sim/src/ASN1c/E2nodeComponentConfiguration.c deleted file mode 100644 index 375f39b..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfiguration.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfiguration.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfiguration_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfiguration, e2nodeComponentRequestPart), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentRequestPart" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfiguration, e2nodeComponentResponsePart), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_OCTET_STRING, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentResponsePart" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfiguration_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfiguration_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentRequestPart */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* e2nodeComponentResponsePart */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfiguration_specs_1 = { - sizeof(struct E2nodeComponentConfiguration), - offsetof(struct E2nodeComponentConfiguration, _asn_ctx), - asn_MAP_E2nodeComponentConfiguration_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfiguration = { - "E2nodeComponentConfiguration", - "E2nodeComponentConfiguration", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfiguration_tags_1, - sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfiguration_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfiguration_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfiguration_1, - 2, /* Elements count */ - &asn_SPC_E2nodeComponentConfiguration_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfiguration.h b/e2sim/src/ASN1c/E2nodeComponentConfiguration.h deleted file mode 100644 index b9c9277..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfiguration.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfiguration_H_ -#define _E2nodeComponentConfiguration_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentConfiguration */ -typedef struct E2nodeComponentConfiguration { - OCTET_STRING_t e2nodeComponentRequestPart; - OCTET_STRING_t e2nodeComponentResponsePart; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfiguration_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfiguration; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfiguration_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfiguration_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfiguration_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigurationAck.c b/e2sim/src/ASN1c/E2nodeComponentConfigurationAck.c deleted file mode 100644 index c17ceb2..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigurationAck.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentConfigurationAck.h" - -#include "Cause.h" -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_updateOutcome_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_updateOutcome_value2enum_2[] = { - { 0, 7, "success" }, - { 1, 7, "failure" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_updateOutcome_enum2value_2[] = { - 1, /* failure(1) */ - 0 /* success(0) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_updateOutcome_specs_2 = { - asn_MAP_updateOutcome_value2enum_2, /* "tag" => N; sorted by tag */ - asn_MAP_updateOutcome_enum2value_2, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_updateOutcome_tags_2[] = { - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_updateOutcome_2 = { - "updateOutcome", - "updateOutcome", - &asn_OP_NativeEnumerated, - asn_DEF_updateOutcome_tags_2, - sizeof(asn_DEF_updateOutcome_tags_2) - /sizeof(asn_DEF_updateOutcome_tags_2[0]) - 1, /* 1 */ - asn_DEF_updateOutcome_tags_2, /* Same as above */ - sizeof(asn_DEF_updateOutcome_tags_2) - /sizeof(asn_DEF_updateOutcome_tags_2[0]), /* 2 */ - { 0, &asn_PER_type_updateOutcome_constr_2, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_updateOutcome_specs_2 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigurationAck_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigurationAck, updateOutcome), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_updateOutcome_2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "updateOutcome" - }, - { ATF_POINTER, 1, offsetof(struct E2nodeComponentConfigurationAck, failureCause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "failureCause" - }, -}; -static const int asn_MAP_E2nodeComponentConfigurationAck_oms_1[] = { 1 }; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigurationAck_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigurationAck_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* updateOutcome */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* failureCause */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigurationAck_specs_1 = { - sizeof(struct E2nodeComponentConfigurationAck), - offsetof(struct E2nodeComponentConfigurationAck, _asn_ctx), - asn_MAP_E2nodeComponentConfigurationAck_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_E2nodeComponentConfigurationAck_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigurationAck = { - "E2nodeComponentConfigurationAck", - "E2nodeComponentConfigurationAck", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigurationAck_tags_1, - sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigurationAck_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1) - /sizeof(asn_DEF_E2nodeComponentConfigurationAck_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigurationAck_1, - 2, /* Elements count */ - &asn_SPC_E2nodeComponentConfigurationAck_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentConfigurationAck.h b/e2sim/src/ASN1c/E2nodeComponentConfigurationAck.h deleted file mode 100644 index b29691d..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentConfigurationAck.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentConfigurationAck_H_ -#define _E2nodeComponentConfigurationAck_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2nodeComponentConfigurationAck__updateOutcome { - E2nodeComponentConfigurationAck__updateOutcome_success = 0, - E2nodeComponentConfigurationAck__updateOutcome_failure = 1 - /* - * Enumeration is extensible - */ -} e_E2nodeComponentConfigurationAck__updateOutcome; - -/* Forward declarations */ -struct Cause; - -/* E2nodeComponentConfigurationAck */ -typedef struct E2nodeComponentConfigurationAck { - long updateOutcome; - struct Cause *failureCause; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigurationAck_t; - -/* Implementation */ -/* extern asn_TYPE_descriptor_t asn_DEF_updateOutcome_2; // (Use -fall-defs-global to expose) */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigurationAck; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigurationAck_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigurationAck_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentConfigurationAck_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentID.c b/e2sim/src/ASN1c/E2nodeComponentID.c deleted file mode 100644 index ce3697d..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentID.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentID.h" - -#include "E2nodeComponentInterfaceNG.h" -#include "E2nodeComponentInterfaceXn.h" -#include "E2nodeComponentInterfaceE1.h" -#include "E2nodeComponentInterfaceF1.h" -#include "E2nodeComponentInterfaceW1.h" -#include "E2nodeComponentInterfaceS1.h" -#include "E2nodeComponentInterfaceX2.h" -asn_per_constraints_t asn_PER_type_E2nodeComponentID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_E2nodeComponentID_1[] = { - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeNG), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceNG, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeNG" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeXn), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceXn, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeXn" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeE1), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceE1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeE1" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeF1), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceF1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeF1" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeW1), - (ASN_TAG_CLASS_CONTEXT | (4 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceW1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeW1" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeS1), - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceS1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeS1" - }, - { ATF_POINTER, 0, offsetof(struct E2nodeComponentID, choice.e2nodeComponentInterfaceTypeX2), - (ASN_TAG_CLASS_CONTEXT | (6 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_E2nodeComponentInterfaceX2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "e2nodeComponentInterfaceTypeX2" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e2nodeComponentInterfaceTypeNG */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2nodeComponentInterfaceTypeXn */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2nodeComponentInterfaceTypeE1 */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e2nodeComponentInterfaceTypeF1 */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* e2nodeComponentInterfaceTypeW1 */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e2nodeComponentInterfaceTypeS1 */ - { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* e2nodeComponentInterfaceTypeX2 */ -}; -asn_CHOICE_specifics_t asn_SPC_E2nodeComponentID_specs_1 = { - sizeof(struct E2nodeComponentID), - offsetof(struct E2nodeComponentID, _asn_ctx), - offsetof(struct E2nodeComponentID, present), - sizeof(((struct E2nodeComponentID *)0)->present), - asn_MAP_E2nodeComponentID_tag2el_1, - 7, /* Count of tags in the map */ - 0, 0, - 7 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentID = { - "E2nodeComponentID", - "E2nodeComponentID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_E2nodeComponentID_constr_1, CHOICE_constraint }, - asn_MBR_E2nodeComponentID_1, - 7, /* Elements count */ - &asn_SPC_E2nodeComponentID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentID.h b/e2sim/src/ASN1c/E2nodeComponentID.h deleted file mode 100644 index 1e76e9f..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentID.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentID_H_ -#define _E2nodeComponentID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2nodeComponentID_PR { - E2nodeComponentID_PR_NOTHING, /* No components present */ - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeNG, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeXn, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeE1, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeF1, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeW1, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeS1, - E2nodeComponentID_PR_e2nodeComponentInterfaceTypeX2 - /* Extensions may appear below */ - -} E2nodeComponentID_PR; - -/* Forward declarations */ -struct E2nodeComponentInterfaceNG; -struct E2nodeComponentInterfaceXn; -struct E2nodeComponentInterfaceE1; -struct E2nodeComponentInterfaceF1; -struct E2nodeComponentInterfaceW1; -struct E2nodeComponentInterfaceS1; -struct E2nodeComponentInterfaceX2; - -/* E2nodeComponentID */ -typedef struct E2nodeComponentID { - E2nodeComponentID_PR present; - union E2nodeComponentID_u { - struct E2nodeComponentInterfaceNG *e2nodeComponentInterfaceTypeNG; - struct E2nodeComponentInterfaceXn *e2nodeComponentInterfaceTypeXn; - struct E2nodeComponentInterfaceE1 *e2nodeComponentInterfaceTypeE1; - struct E2nodeComponentInterfaceF1 *e2nodeComponentInterfaceTypeF1; - struct E2nodeComponentInterfaceW1 *e2nodeComponentInterfaceTypeW1; - struct E2nodeComponentInterfaceS1 *e2nodeComponentInterfaceTypeS1; - struct E2nodeComponentInterfaceX2 *e2nodeComponentInterfaceTypeX2; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentID; -extern asn_CHOICE_specifics_t asn_SPC_E2nodeComponentID_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentID_1[7]; -extern asn_per_constraints_t asn_PER_type_E2nodeComponentID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceE1.c b/e2sim/src/ASN1c/E2nodeComponentInterfaceE1.c deleted file mode 100644 index 7183e8d..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceE1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentInterfaceE1.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceE1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceE1, gNB_CU_CP_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-CP-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceE1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceE1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-CP-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceE1_specs_1 = { - sizeof(struct E2nodeComponentInterfaceE1), - offsetof(struct E2nodeComponentInterfaceE1, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceE1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceE1 = { - "E2nodeComponentInterfaceE1", - "E2nodeComponentInterfaceE1", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceE1_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceE1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceE1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceE1_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceE1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceE1.h b/e2sim/src/ASN1c/E2nodeComponentInterfaceE1.h deleted file mode 100644 index 813fe07..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceE1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentInterfaceE1_H_ -#define _E2nodeComponentInterfaceE1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GNB-CU-UP-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceE1 */ -typedef struct E2nodeComponentInterfaceE1 { - GNB_CU_UP_ID_t gNB_CU_CP_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceE1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceE1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceE1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceE1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceE1_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceF1.c b/e2sim/src/ASN1c/E2nodeComponentInterfaceF1.c deleted file mode 100644 index 6ede91a..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceF1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentInterfaceF1.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceF1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceF1, gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceF1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceF1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceF1_specs_1 = { - sizeof(struct E2nodeComponentInterfaceF1), - offsetof(struct E2nodeComponentInterfaceF1, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceF1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceF1 = { - "E2nodeComponentInterfaceF1", - "E2nodeComponentInterfaceF1", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceF1_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceF1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceF1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceF1_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceF1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceF1.h b/e2sim/src/ASN1c/E2nodeComponentInterfaceF1.h deleted file mode 100644 index b9867b9..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceF1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentInterfaceF1_H_ -#define _E2nodeComponentInterfaceF1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GNB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceF1 */ -typedef struct E2nodeComponentInterfaceF1 { - GNB_DU_ID_t gNB_DU_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceF1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceF1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceF1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceF1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceF1_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceNG.c b/e2sim/src/ASN1c/E2nodeComponentInterfaceNG.c deleted file mode 100644 index 7d92f9f..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceNG.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentInterfaceNG.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceNG_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceNG, amf_name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_AMFName, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "amf-name" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceNG_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceNG_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* amf-name */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceNG_specs_1 = { - sizeof(struct E2nodeComponentInterfaceNG), - offsetof(struct E2nodeComponentInterfaceNG, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceNG_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceNG = { - "E2nodeComponentInterfaceNG", - "E2nodeComponentInterfaceNG", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceNG_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceNG_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceNG_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceNG_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceNG_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceNG.h b/e2sim/src/ASN1c/E2nodeComponentInterfaceNG.h deleted file mode 100644 index cc366c3..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceNG.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentInterfaceNG_H_ -#define _E2nodeComponentInterfaceNG_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "AMFName.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceNG */ -typedef struct E2nodeComponentInterfaceNG { - AMFName_t amf_name; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceNG_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceNG; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceNG_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceNG_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceNG_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceS1.c b/e2sim/src/ASN1c/E2nodeComponentInterfaceS1.c deleted file mode 100644 index d85197a..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceS1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentInterfaceS1.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceS1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceS1, mme_name), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_MMEname, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "mme-name" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceS1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceS1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mme-name */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceS1_specs_1 = { - sizeof(struct E2nodeComponentInterfaceS1), - offsetof(struct E2nodeComponentInterfaceS1, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceS1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceS1 = { - "E2nodeComponentInterfaceS1", - "E2nodeComponentInterfaceS1", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceS1_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceS1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceS1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceS1_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceS1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceS1.h b/e2sim/src/ASN1c/E2nodeComponentInterfaceS1.h deleted file mode 100644 index 56a4b2c..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceS1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentInterfaceS1_H_ -#define _E2nodeComponentInterfaceS1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "MMEname.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceS1 */ -typedef struct E2nodeComponentInterfaceS1 { - MMEname_t mme_name; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceS1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceS1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceS1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceS1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceS1_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceType.c b/e2sim/src/ASN1c/E2nodeComponentInterfaceType.c deleted file mode 100644 index 24794d4..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceType.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentInterfaceType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_E2nodeComponentInterfaceType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_E2nodeComponentInterfaceType_value2enum_1[] = { - { 0, 2, "ng" }, - { 1, 2, "xn" }, - { 2, 2, "e1" }, - { 3, 2, "f1" }, - { 4, 2, "w1" }, - { 5, 2, "s1" }, - { 6, 2, "x2" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_E2nodeComponentInterfaceType_enum2value_1[] = { - 2, /* e1(2) */ - 3, /* f1(3) */ - 0, /* ng(0) */ - 5, /* s1(5) */ - 4, /* w1(4) */ - 6, /* x2(6) */ - 1 /* xn(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_E2nodeComponentInterfaceType_specs_1 = { - asn_MAP_E2nodeComponentInterfaceType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_E2nodeComponentInterfaceType_enum2value_1, /* N => "tag"; sorted by N */ - 7, /* Number of elements in the maps */ - 8, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceType = { - "E2nodeComponentInterfaceType", - "E2nodeComponentInterfaceType", - &asn_OP_NativeEnumerated, - asn_DEF_E2nodeComponentInterfaceType_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceType_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceType_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2nodeComponentInterfaceType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_E2nodeComponentInterfaceType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceType.h b/e2sim/src/ASN1c/E2nodeComponentInterfaceType.h deleted file mode 100644 index d6f0bdc..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceType.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentInterfaceType_H_ -#define _E2nodeComponentInterfaceType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum E2nodeComponentInterfaceType { - E2nodeComponentInterfaceType_ng = 0, - E2nodeComponentInterfaceType_xn = 1, - E2nodeComponentInterfaceType_e1 = 2, - E2nodeComponentInterfaceType_f1 = 3, - E2nodeComponentInterfaceType_w1 = 4, - E2nodeComponentInterfaceType_s1 = 5, - E2nodeComponentInterfaceType_x2 = 6 - /* - * Enumeration is extensible - */ -} e_E2nodeComponentInterfaceType; - -/* E2nodeComponentInterfaceType */ -typedef long E2nodeComponentInterfaceType_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_E2nodeComponentInterfaceType_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceType; -extern const asn_INTEGER_specifics_t asn_SPC_E2nodeComponentInterfaceType_specs_1; -asn_struct_free_f E2nodeComponentInterfaceType_free; -asn_struct_print_f E2nodeComponentInterfaceType_print; -asn_constr_check_f E2nodeComponentInterfaceType_constraint; -ber_type_decoder_f E2nodeComponentInterfaceType_decode_ber; -der_type_encoder_f E2nodeComponentInterfaceType_encode_der; -xer_type_decoder_f E2nodeComponentInterfaceType_decode_xer; -xer_type_encoder_f E2nodeComponentInterfaceType_encode_xer; -per_type_decoder_f E2nodeComponentInterfaceType_decode_uper; -per_type_encoder_f E2nodeComponentInterfaceType_encode_uper; -per_type_decoder_f E2nodeComponentInterfaceType_decode_aper; -per_type_encoder_f E2nodeComponentInterfaceType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceW1.c b/e2sim/src/ASN1c/E2nodeComponentInterfaceW1.c deleted file mode 100644 index c3e2af1..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceW1.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentInterfaceW1.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceW1_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceW1, ng_eNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NGENB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ng-eNB-DU-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceW1_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceW1_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ng-eNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceW1_specs_1 = { - sizeof(struct E2nodeComponentInterfaceW1), - offsetof(struct E2nodeComponentInterfaceW1, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceW1_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceW1 = { - "E2nodeComponentInterfaceW1", - "E2nodeComponentInterfaceW1", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceW1_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceW1_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceW1_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceW1_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceW1_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceW1.h b/e2sim/src/ASN1c/E2nodeComponentInterfaceW1.h deleted file mode 100644 index 84fc6ef..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceW1.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentInterfaceW1_H_ -#define _E2nodeComponentInterfaceW1_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NGENB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceW1 */ -typedef struct E2nodeComponentInterfaceW1 { - NGENB_DU_ID_t ng_eNB_DU_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceW1_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceW1; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceW1_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceW1_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceW1_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceX2.c b/e2sim/src/ASN1c/E2nodeComponentInterfaceX2.c deleted file mode 100644 index 182ef1e..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceX2.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentInterfaceX2.h" - -#include "GlobalENB-ID.h" -#include "GlobalenGNB-ID.h" -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceX2_1[] = { - { ATF_POINTER, 2, offsetof(struct E2nodeComponentInterfaceX2, global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, - { ATF_POINTER, 1, offsetof(struct E2nodeComponentInterfaceX2, global_en_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalenGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-en-gNB-ID" - }, -}; -static const int asn_MAP_E2nodeComponentInterfaceX2_oms_1[] = { 0, 1 }; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceX2_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceX2_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global-en-gNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceX2_specs_1 = { - sizeof(struct E2nodeComponentInterfaceX2), - offsetof(struct E2nodeComponentInterfaceX2, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceX2_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_E2nodeComponentInterfaceX2_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceX2 = { - "E2nodeComponentInterfaceX2", - "E2nodeComponentInterfaceX2", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceX2_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceX2_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceX2_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceX2_1, - 2, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceX2_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceX2.h b/e2sim/src/ASN1c/E2nodeComponentInterfaceX2.h deleted file mode 100644 index 3182830..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceX2.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentInterfaceX2_H_ -#define _E2nodeComponentInterfaceX2_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct GlobalENB_ID; -struct GlobalenGNB_ID; - -/* E2nodeComponentInterfaceX2 */ -typedef struct E2nodeComponentInterfaceX2 { - struct GlobalENB_ID *global_eNB_ID; /* OPTIONAL */ - struct GlobalenGNB_ID *global_en_gNB_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceX2_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceX2; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceX2_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceX2_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceX2_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceXn.c b/e2sim/src/ASN1c/E2nodeComponentInterfaceXn.c deleted file mode 100644 index 68f8846..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceXn.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeComponentInterfaceXn.h" - -asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceXn_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentInterfaceXn, global_NG_RAN_Node_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_GlobalNG_RANNode_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-NG-RAN-Node-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentInterfaceXn_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentInterfaceXn_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-NG-RAN-Node-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceXn_specs_1 = { - sizeof(struct E2nodeComponentInterfaceXn), - offsetof(struct E2nodeComponentInterfaceXn, _asn_ctx), - asn_MAP_E2nodeComponentInterfaceXn_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceXn = { - "E2nodeComponentInterfaceXn", - "E2nodeComponentInterfaceXn", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentInterfaceXn_tags_1, - sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1[0]), /* 1 */ - asn_DEF_E2nodeComponentInterfaceXn_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1) - /sizeof(asn_DEF_E2nodeComponentInterfaceXn_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentInterfaceXn_1, - 1, /* Elements count */ - &asn_SPC_E2nodeComponentInterfaceXn_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeComponentInterfaceXn.h b/e2sim/src/ASN1c/E2nodeComponentInterfaceXn.h deleted file mode 100644 index 896eea2..0000000 --- a/e2sim/src/ASN1c/E2nodeComponentInterfaceXn.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeComponentInterfaceXn_H_ -#define _E2nodeComponentInterfaceXn_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalNG-RANNode-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeComponentInterfaceXn */ -typedef struct E2nodeComponentInterfaceXn { - GlobalNG_RANNode_ID_t global_NG_RAN_Node_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentInterfaceXn_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentInterfaceXn; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentInterfaceXn_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentInterfaceXn_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeComponentInterfaceXn_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeConfigurationUpdate.c b/e2sim/src/ASN1c/E2nodeConfigurationUpdate.c deleted file mode 100644 index f40909c..0000000 --- a/e2sim/src/ASN1c/E2nodeConfigurationUpdate.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeConfigurationUpdate.h" - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P18, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdate_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdate_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_specs_1 = { - sizeof(struct E2nodeConfigurationUpdate), - offsetof(struct E2nodeConfigurationUpdate, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdate_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate = { - "E2nodeConfigurationUpdate", - "E2nodeConfigurationUpdate", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdate_tags_1, - sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdate_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdate_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdate_1, - 1, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdate_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeConfigurationUpdate.h b/e2sim/src/ASN1c/E2nodeConfigurationUpdate.h deleted file mode 100644 index 60e609d..0000000 --- a/e2sim/src/ASN1c/E2nodeConfigurationUpdate.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeConfigurationUpdate_H_ -#define _E2nodeConfigurationUpdate_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeConfigurationUpdate */ -typedef struct E2nodeConfigurationUpdate { - ProtocolIE_Container_1917P18_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdate_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeConfigurationUpdate_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.c b/e2sim/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.c deleted file mode 100644 index 4586653..0000000 --- a/e2sim/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeConfigurationUpdateAcknowledge.h" - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P19, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_specs_1 = { - sizeof(struct E2nodeConfigurationUpdateAcknowledge), - offsetof(struct E2nodeConfigurationUpdateAcknowledge, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdateAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge = { - "E2nodeConfigurationUpdateAcknowledge", - "E2nodeConfigurationUpdateAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1, - sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdateAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.h b/e2sim/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.h deleted file mode 100644 index dd820a8..0000000 --- a/e2sim/src/ASN1c/E2nodeConfigurationUpdateAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeConfigurationUpdateAcknowledge_H_ -#define _E2nodeConfigurationUpdateAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeConfigurationUpdateAcknowledge */ -typedef struct E2nodeConfigurationUpdateAcknowledge { - ProtocolIE_Container_1917P19_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdateAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeConfigurationUpdateAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.c b/e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.c deleted file mode 100644 index 7de3e76..0000000 --- a/e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeConfigurationUpdateFailure.h" - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P20, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_specs_1 = { - sizeof(struct E2nodeConfigurationUpdateFailure), - offsetof(struct E2nodeConfigurationUpdateFailure, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdateFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure = { - "E2nodeConfigurationUpdateFailure", - "E2nodeConfigurationUpdateFailure", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdateFailure_tags_1, - sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdateFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1) - /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdateFailure_1, - 1, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdateFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.h b/e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.h deleted file mode 100644 index 781aef4..0000000 --- a/e2sim/src/ASN1c/E2nodeConfigurationUpdateFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeConfigurationUpdateFailure_H_ -#define _E2nodeConfigurationUpdateFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeConfigurationUpdateFailure */ -typedef struct E2nodeConfigurationUpdateFailure { - ProtocolIE_Container_1917P20_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdateFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeConfigurationUpdateFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.c b/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.c deleted file mode 100644 index d547e80..0000000 --- a/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeTNLassociationRemoval-Item.h" - -static asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_Item, tnlInformation), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformation" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_Item, tnlInformationRIC), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "tnlInformationRIC" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeTNLassociationRemoval_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlInformation */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tnlInformationRIC */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_Item_specs_1 = { - sizeof(struct E2nodeTNLassociationRemoval_Item), - offsetof(struct E2nodeTNLassociationRemoval_Item, _asn_ctx), - asn_MAP_E2nodeTNLassociationRemoval_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_Item = { - "E2nodeTNLassociationRemoval-Item", - "E2nodeTNLassociationRemoval-Item", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1, - sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1[0]), /* 1 */ - asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeTNLassociationRemoval_Item_1, - 2, /* Elements count */ - &asn_SPC_E2nodeTNLassociationRemoval_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.h b/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.h deleted file mode 100644 index e8763ee..0000000 --- a/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-Item.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeTNLassociationRemoval_Item_H_ -#define _E2nodeTNLassociationRemoval_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "TNLinformation.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2nodeTNLassociationRemoval-Item */ -typedef struct E2nodeTNLassociationRemoval_Item { - TNLinformation_t tnlInformation; - TNLinformation_t tnlInformationRIC; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeTNLassociationRemoval_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeTNLassociationRemoval_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.c b/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.c deleted file mode 100644 index e82f69c..0000000 --- a/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2nodeTNLassociationRemoval-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_E2nodeTNLassociationRemoval_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P10, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeTNLassociationRemoval_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_E2nodeTNLassociationRemoval_List_specs_1 = { - sizeof(struct E2nodeTNLassociationRemoval_List), - offsetof(struct E2nodeTNLassociationRemoval_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_List = { - "E2nodeTNLassociationRemoval-List", - "E2nodeTNLassociationRemoval-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_E2nodeTNLassociationRemoval_List_tags_1, - sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1[0]), /* 1 */ - asn_DEF_E2nodeTNLassociationRemoval_List_tags_1, /* Same as above */ - sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_E2nodeTNLassociationRemoval_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_E2nodeTNLassociationRemoval_List_1, - 1, /* Single element */ - &asn_SPC_E2nodeTNLassociationRemoval_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.h b/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.h deleted file mode 100644 index bba966b..0000000 --- a/e2sim/src/ASN1c/E2nodeTNLassociationRemoval-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2nodeTNLassociationRemoval_List_H_ -#define _E2nodeTNLassociationRemoval_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* E2nodeTNLassociationRemoval-List */ -typedef struct E2nodeTNLassociationRemoval_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeTNLassociationRemoval_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2nodeTNLassociationRemoval_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2setupFailure.c b/e2sim/src/ASN1c/E2setupFailure.c deleted file mode 100644 index e521bc4..0000000 --- a/e2sim/src/ASN1c/E2setupFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2setupFailure.h" - -asn_TYPE_member_t asn_MBR_E2setupFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P14, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1 = { - sizeof(struct E2setupFailure), - offsetof(struct E2setupFailure, _asn_ctx), - asn_MAP_E2setupFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupFailure = { - "E2setupFailure", - "E2setupFailure", - &asn_OP_SEQUENCE, - asn_DEF_E2setupFailure_tags_1, - sizeof(asn_DEF_E2setupFailure_tags_1) - /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ - asn_DEF_E2setupFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_E2setupFailure_tags_1) - /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupFailure_1, - 1, /* Elements count */ - &asn_SPC_E2setupFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2setupFailure.h b/e2sim/src/ASN1c/E2setupFailure.h deleted file mode 100644 index b92899c..0000000 --- a/e2sim/src/ASN1c/E2setupFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2setupFailure_H_ -#define _E2setupFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2setupFailure */ -typedef struct E2setupFailure { - ProtocolIE_Container_1917P14_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2setupFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_E2setupFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2setupFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2setupRequest.c b/e2sim/src/ASN1c/E2setupRequest.c deleted file mode 100644 index c34efea..0000000 --- a/e2sim/src/ASN1c/E2setupRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2setupRequest.h" - -asn_TYPE_member_t asn_MBR_E2setupRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P12, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1 = { - sizeof(struct E2setupRequest), - offsetof(struct E2setupRequest, _asn_ctx), - asn_MAP_E2setupRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupRequest = { - "E2setupRequest", - "E2setupRequest", - &asn_OP_SEQUENCE, - asn_DEF_E2setupRequest_tags_1, - sizeof(asn_DEF_E2setupRequest_tags_1) - /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ - asn_DEF_E2setupRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_E2setupRequest_tags_1) - /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupRequest_1, - 1, /* Elements count */ - &asn_SPC_E2setupRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2setupRequest.h b/e2sim/src/ASN1c/E2setupRequest.h deleted file mode 100644 index 4f01328..0000000 --- a/e2sim/src/ASN1c/E2setupRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2setupRequest_H_ -#define _E2setupRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2setupRequest */ -typedef struct E2setupRequest { - ProtocolIE_Container_1917P12_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2setupRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_E2setupRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2setupRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/E2setupResponse.c b/e2sim/src/ASN1c/E2setupResponse.c deleted file mode 100644 index 46d708b..0000000 --- a/e2sim/src/ASN1c/E2setupResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "E2setupResponse.h" - -asn_TYPE_member_t asn_MBR_E2setupResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P13, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1 = { - sizeof(struct E2setupResponse), - offsetof(struct E2setupResponse, _asn_ctx), - asn_MAP_E2setupResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupResponse = { - "E2setupResponse", - "E2setupResponse", - &asn_OP_SEQUENCE, - asn_DEF_E2setupResponse_tags_1, - sizeof(asn_DEF_E2setupResponse_tags_1) - /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ - asn_DEF_E2setupResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_E2setupResponse_tags_1) - /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupResponse_1, - 1, /* Elements count */ - &asn_SPC_E2setupResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/E2setupResponse.h b/e2sim/src/ASN1c/E2setupResponse.h deleted file mode 100644 index f380882..0000000 --- a/e2sim/src/ASN1c/E2setupResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _E2setupResponse_H_ -#define _E2setupResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* E2setupResponse */ -typedef struct E2setupResponse { - ProtocolIE_Container_1917P13_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_E2setupResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_E2setupResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _E2setupResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ENB-ID-Choice.c b/e2sim/src/ASN1c/ENB-ID-Choice.c deleted file mode 100644 index f6d14e2..0000000 --- a/e2sim/src/ASN1c/ENB-ID-Choice.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ENB-ID-Choice.h" - -static int -memb_enb_ID_macro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_enb_ID_shortmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 18)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_enb_ID_longmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 21)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_enb_ID_macro_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_macro), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_enb_ID_macro_constr_2, memb_enb_ID_macro_constraint_1 }, - 0, 0, /* No default value */ - "enb-ID-macro" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_shortmacro), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_enb_ID_shortmacro_constr_3, memb_enb_ID_shortmacro_constraint_1 }, - 0, 0, /* No default value */ - "enb-ID-shortmacro" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_longmacro), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_enb_ID_longmacro_constr_4, memb_enb_ID_longmacro_constraint_1 }, - 0, 0, /* No default value */ - "enb-ID-longmacro" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_Choice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enb-ID-macro */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* enb-ID-shortmacro */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* enb-ID-longmacro */ -}; -asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1 = { - sizeof(struct ENB_ID_Choice), - offsetof(struct ENB_ID_Choice, _asn_ctx), - offsetof(struct ENB_ID_Choice, present), - sizeof(((struct ENB_ID_Choice *)0)->present), - asn_MAP_ENB_ID_Choice_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, - 3 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice = { - "ENB-ID-Choice", - "ENB-ID-Choice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_ENB_ID_Choice_constr_1, CHOICE_constraint }, - asn_MBR_ENB_ID_Choice_1, - 3, /* Elements count */ - &asn_SPC_ENB_ID_Choice_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/ENB-ID-Choice.h b/e2sim/src/ASN1c/ENB-ID-Choice.h deleted file mode 100644 index 3785315..0000000 --- a/e2sim/src/ASN1c/ENB-ID-Choice.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ENB_ID_Choice_H_ -#define _ENB_ID_Choice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum ENB_ID_Choice_PR { - ENB_ID_Choice_PR_NOTHING, /* No components present */ - ENB_ID_Choice_PR_enb_ID_macro, - ENB_ID_Choice_PR_enb_ID_shortmacro, - ENB_ID_Choice_PR_enb_ID_longmacro - /* Extensions may appear below */ - -} ENB_ID_Choice_PR; - -/* ENB-ID-Choice */ -typedef struct ENB_ID_Choice { - ENB_ID_Choice_PR present; - union ENB_ID_Choice_u { - BIT_STRING_t enb_ID_macro; - BIT_STRING_t enb_ID_shortmacro; - BIT_STRING_t enb_ID_longmacro; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ENB_ID_Choice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice; -extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1; -extern asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[3]; -extern asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _ENB_ID_Choice_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ENB-ID.c b/e2sim/src/ASN1c/ENB-ID.c deleted file mode 100644 index e231b10..0000000 --- a/e2sim/src/ASN1c/ENB-ID.c +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ENB-ID.h" - -static int -memb_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 28)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 18)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 21)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ENB_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ENB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_macro_eNB_ID_constr_2, memb_macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "macro-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.home_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_home_eNB_ID_constr_3, memb_home_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "home-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.short_Macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_short_Macro_eNB_ID_constr_5, memb_short_Macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "short-Macro-eNB-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.long_Macro_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_long_Macro_eNB_ID_constr_6, memb_long_Macro_eNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "long-Macro-eNB-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1 = { - sizeof(struct ENB_ID), - offsetof(struct ENB_ID, _asn_ctx), - offsetof(struct ENB_ID, present), - sizeof(((struct ENB_ID *)0)->present), - asn_MAP_ENB_ID_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ENB_ID = { - "ENB-ID", - "ENB-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_ENB_ID_constr_1, CHOICE_constraint }, - asn_MBR_ENB_ID_1, - 4, /* Elements count */ - &asn_SPC_ENB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/ENB-ID.h b/e2sim/src/ASN1c/ENB-ID.h deleted file mode 100644 index a53fd6c..0000000 --- a/e2sim/src/ASN1c/ENB-ID.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ENB_ID_H_ -#define _ENB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum ENB_ID_PR { - ENB_ID_PR_NOTHING, /* No components present */ - ENB_ID_PR_macro_eNB_ID, - ENB_ID_PR_home_eNB_ID, - /* Extensions may appear below */ - ENB_ID_PR_short_Macro_eNB_ID, - ENB_ID_PR_long_Macro_eNB_ID -} ENB_ID_PR; - -/* ENB-ID */ -typedef struct ENB_ID { - ENB_ID_PR present; - union ENB_ID_u { - BIT_STRING_t macro_eNB_ID; - BIT_STRING_t home_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - BIT_STRING_t short_Macro_eNB_ID; - BIT_STRING_t long_Macro_eNB_ID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ENB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ENB_ID; -extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_ENB_ID_1[4]; -extern asn_per_constraints_t asn_PER_type_ENB_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _ENB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ENGNB-ID.c b/e2sim/src/ASN1c/ENGNB-ID.c deleted file mode 100644 index 3eb4ac4..0000000 --- a/e2sim/src/ASN1c/ENGNB-ID.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ENGNB-ID.h" - -static int -memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size >= 22 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ENGNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ENGNB_ID, choice.gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_gNB_ID_constr_2, memb_gNB_ID_constraint_1 }, - 0, 0, /* No default value */ - "gNB-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_ENGNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1 = { - sizeof(struct ENGNB_ID), - offsetof(struct ENGNB_ID, _asn_ctx), - offsetof(struct ENGNB_ID, present), - sizeof(((struct ENGNB_ID *)0)->present), - asn_MAP_ENGNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ENGNB_ID = { - "ENGNB-ID", - "ENGNB-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_ENGNB_ID_constr_1, CHOICE_constraint }, - asn_MBR_ENGNB_ID_1, - 1, /* Elements count */ - &asn_SPC_ENGNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/ENGNB-ID.h b/e2sim/src/ASN1c/ENGNB-ID.h deleted file mode 100644 index 8d180c5..0000000 --- a/e2sim/src/ASN1c/ENGNB-ID.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ENGNB_ID_H_ -#define _ENGNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum ENGNB_ID_PR { - ENGNB_ID_PR_NOTHING, /* No components present */ - ENGNB_ID_PR_gNB_ID - /* Extensions may appear below */ - -} ENGNB_ID_PR; - -/* ENGNB-ID */ -typedef struct ENGNB_ID { - ENGNB_ID_PR present; - union ENGNB_ID_u { - BIT_STRING_t gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ENGNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ENGNB_ID; -extern asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_ENGNB_ID_1[1]; -extern asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _ENGNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ErrorIndication.c b/e2sim/src/ASN1c/ErrorIndication.c deleted file mode 100644 index 1a1ca01..0000000 --- a/e2sim/src/ASN1c/ErrorIndication.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ErrorIndication.h" - -asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P11, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = { - sizeof(struct ErrorIndication), - offsetof(struct ErrorIndication, _asn_ctx), - asn_MAP_ErrorIndication_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ErrorIndication = { - "ErrorIndication", - "ErrorIndication", - &asn_OP_SEQUENCE, - asn_DEF_ErrorIndication_tags_1, - sizeof(asn_DEF_ErrorIndication_tags_1) - /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ - asn_DEF_ErrorIndication_tags_1, /* Same as above */ - sizeof(asn_DEF_ErrorIndication_tags_1) - /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ErrorIndication_1, - 1, /* Elements count */ - &asn_SPC_ErrorIndication_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/ErrorIndication.h b/e2sim/src/ASN1c/ErrorIndication.h deleted file mode 100644 index 8af3f17..0000000 --- a/e2sim/src/ASN1c/ErrorIndication.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ErrorIndication_H_ -#define _ErrorIndication_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ErrorIndication */ -typedef struct ErrorIndication { - ProtocolIE_Container_1917P11_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ErrorIndication_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication; -extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1; -extern asn_TYPE_member_t asn_MBR_ErrorIndication_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ErrorIndication_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GNB-CU-UP-ID.c b/e2sim/src/ASN1c/GNB-CU-UP-ID.c deleted file mode 100644 index f5ab574..0000000 --- a/e2sim/src/ASN1c/GNB-CU-UP-ID.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GNB-CU-UP-ID.h" - -int -GNB_CU_UP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 68719476735)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using INTEGER, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_CU_UP_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID = { - "GNB-CU-UP-ID", - "GNB-CU-UP-ID", - &asn_OP_INTEGER, - asn_DEF_GNB_CU_UP_ID_tags_1, - sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ - asn_DEF_GNB_CU_UP_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) - /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_GNB_CU_UP_ID_constr_1, GNB_CU_UP_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/GNB-CU-UP-ID.h b/e2sim/src/ASN1c/GNB-CU-UP-ID.h deleted file mode 100644 index 0e7bcbc..0000000 --- a/e2sim/src/ASN1c/GNB-CU-UP-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GNB_CU_UP_ID_H_ -#define _GNB_CU_UP_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "INTEGER.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-CU-UP-ID */ -typedef INTEGER_t GNB_CU_UP_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID; -asn_struct_free_f GNB_CU_UP_ID_free; -asn_struct_print_f GNB_CU_UP_ID_print; -asn_constr_check_f GNB_CU_UP_ID_constraint; -ber_type_decoder_f GNB_CU_UP_ID_decode_ber; -der_type_encoder_f GNB_CU_UP_ID_encode_der; -xer_type_decoder_f GNB_CU_UP_ID_decode_xer; -xer_type_encoder_f GNB_CU_UP_ID_encode_xer; -per_type_decoder_f GNB_CU_UP_ID_decode_uper; -per_type_encoder_f GNB_CU_UP_ID_encode_uper; -per_type_decoder_f GNB_CU_UP_ID_decode_aper; -per_type_encoder_f GNB_CU_UP_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_CU_UP_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GNB-DU-ID.c b/e2sim/src/ASN1c/GNB-DU-ID.c deleted file mode 100644 index 18e8b90..0000000 --- a/e2sim/src/ASN1c/GNB-DU-ID.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GNB-DU-ID.h" - -int -GNB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 68719476735)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using INTEGER, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_GNB_DU_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID = { - "GNB-DU-ID", - "GNB-DU-ID", - &asn_OP_INTEGER, - asn_DEF_GNB_DU_ID_tags_1, - sizeof(asn_DEF_GNB_DU_ID_tags_1) - /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ - asn_DEF_GNB_DU_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GNB_DU_ID_tags_1) - /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_GNB_DU_ID_constr_1, GNB_DU_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/GNB-DU-ID.h b/e2sim/src/ASN1c/GNB-DU-ID.h deleted file mode 100644 index 0322d24..0000000 --- a/e2sim/src/ASN1c/GNB-DU-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GNB_DU_ID_H_ -#define _GNB_DU_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "INTEGER.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GNB-DU-ID */ -typedef INTEGER_t GNB_DU_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID; -asn_struct_free_f GNB_DU_ID_free; -asn_struct_print_f GNB_DU_ID_print; -asn_constr_check_f GNB_DU_ID_constraint; -ber_type_decoder_f GNB_DU_ID_decode_ber; -der_type_encoder_f GNB_DU_ID_encode_der; -xer_type_decoder_f GNB_DU_ID_decode_xer; -xer_type_encoder_f GNB_DU_ID_encode_xer; -per_type_decoder_f GNB_DU_ID_decode_uper; -per_type_encoder_f GNB_DU_ID_encode_uper; -per_type_decoder_f GNB_DU_ID_decode_aper; -per_type_encoder_f GNB_DU_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_DU_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GNB-ID-Choice.c b/e2sim/src/ASN1c/GNB-ID-Choice.c deleted file mode 100644 index 5a66e0a..0000000 --- a/e2sim/src/ASN1c/GNB-ID-Choice.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GNB-ID-Choice.h" - -static int -memb_gnb_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size >= 22 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_gnb_ID_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GNB_ID_Choice, choice.gnb_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_gnb_ID_constr_2, memb_gnb_ID_constraint_1 }, - 0, 0, /* No default value */ - "gnb-ID" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_Choice_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gnb-ID */ -}; -asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1 = { - sizeof(struct GNB_ID_Choice), - offsetof(struct GNB_ID_Choice, _asn_ctx), - offsetof(struct GNB_ID_Choice, present), - sizeof(((struct GNB_ID_Choice *)0)->present), - asn_MAP_GNB_ID_Choice_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, - 1 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice = { - "GNB-ID-Choice", - "GNB-ID-Choice", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_GNB_ID_Choice_constr_1, CHOICE_constraint }, - asn_MBR_GNB_ID_Choice_1, - 1, /* Elements count */ - &asn_SPC_GNB_ID_Choice_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GNB-ID-Choice.h b/e2sim/src/ASN1c/GNB-ID-Choice.h deleted file mode 100644 index 25d8de8..0000000 --- a/e2sim/src/ASN1c/GNB-ID-Choice.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GNB_ID_Choice_H_ -#define _GNB_ID_Choice_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GNB_ID_Choice_PR { - GNB_ID_Choice_PR_NOTHING, /* No components present */ - GNB_ID_Choice_PR_gnb_ID - /* Extensions may appear below */ - -} GNB_ID_Choice_PR; - -/* GNB-ID-Choice */ -typedef struct GNB_ID_Choice { - GNB_ID_Choice_PR present; - union GNB_ID_Choice_u { - BIT_STRING_t gnb_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GNB_ID_Choice_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice; -extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1; -extern asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[1]; -extern asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _GNB_ID_Choice_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalE2node-ID.c b/e2sim/src/ASN1c/GlobalE2node-ID.c deleted file mode 100644 index 159bd68..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-ID.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalE2node-ID.h" - -#include "GlobalE2node-gNB-ID.h" -#include "GlobalE2node-en-gNB-ID.h" -#include "GlobalE2node-ng-eNB-ID.h" -#include "GlobalE2node-eNB-ID.h" -static asn_per_constraints_t asn_PER_type_GlobalE2node_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_GlobalE2node_ID_1[] = { - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.gNB), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.en_gNB), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_en_gNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "en-gNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.ng_eNB), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_ng_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ng-eNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.eNB), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalE2node_eNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eNB" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */ -}; -static asn_CHOICE_specifics_t asn_SPC_GlobalE2node_ID_specs_1 = { - sizeof(struct GlobalE2node_ID), - offsetof(struct GlobalE2node_ID, _asn_ctx), - offsetof(struct GlobalE2node_ID, present), - sizeof(((struct GlobalE2node_ID *)0)->present), - asn_MAP_GlobalE2node_ID_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, - 4 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID = { - "GlobalE2node-ID", - "GlobalE2node-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_GlobalE2node_ID_constr_1, CHOICE_constraint }, - asn_MBR_GlobalE2node_ID_1, - 4, /* Elements count */ - &asn_SPC_GlobalE2node_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalE2node-ID.h b/e2sim/src/ASN1c/GlobalE2node-ID.h deleted file mode 100644 index 5d7f455..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-ID.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalE2node_ID_H_ -#define _GlobalE2node_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GlobalE2node_ID_PR { - GlobalE2node_ID_PR_NOTHING, /* No components present */ - GlobalE2node_ID_PR_gNB, - GlobalE2node_ID_PR_en_gNB, - GlobalE2node_ID_PR_ng_eNB, - GlobalE2node_ID_PR_eNB - /* Extensions may appear below */ - -} GlobalE2node_ID_PR; - -/* Forward declarations */ -struct GlobalE2node_gNB_ID; -struct GlobalE2node_en_gNB_ID; -struct GlobalE2node_ng_eNB_ID; -struct GlobalE2node_eNB_ID; - -/* GlobalE2node-ID */ -typedef struct GlobalE2node_ID { - GlobalE2node_ID_PR present; - union GlobalE2node_ID_u { - struct GlobalE2node_gNB_ID *gNB; - struct GlobalE2node_en_gNB_ID *en_gNB; - struct GlobalE2node_ng_eNB_ID *ng_eNB; - struct GlobalE2node_eNB_ID *eNB; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalE2node-eNB-ID.c b/e2sim/src/ASN1c/GlobalE2node-eNB-ID.c deleted file mode 100644 index 8f7b1da..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-eNB-ID.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalE2node-eNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_eNB_ID, global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1 = { - sizeof(struct GlobalE2node_eNB_ID), - offsetof(struct GlobalE2node_eNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_eNB_ID_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID = { - "GlobalE2node-eNB-ID", - "GlobalE2node-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_eNB_ID_1, - 1, /* Elements count */ - &asn_SPC_GlobalE2node_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalE2node-eNB-ID.h b/e2sim/src/ASN1c/GlobalE2node-eNB-ID.h deleted file mode 100644 index 1f6ac5e..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-eNB-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalE2node_eNB_ID_H_ -#define _GlobalE2node_eNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalENB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalE2node-eNB-ID */ -typedef struct GlobalE2node_eNB_ID { - GlobalENB_ID_t global_eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_eNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.c b/e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.c deleted file mode 100644 index 864a2a1..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalE2node-en-gNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_en_gNB_ID, global_en_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalenGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-en-gNB-ID" - }, - { ATF_POINTER, 2, offsetof(struct GlobalE2node_en_gNB_ID, en_gNB_CU_UP_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "en-gNB-CU-UP-ID" - }, - { ATF_POINTER, 1, offsetof(struct GlobalE2node_en_gNB_ID, en_gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "en-gNB-DU-ID" - }, -}; -static const int asn_MAP_GlobalE2node_en_gNB_ID_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_en_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-en-gNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB-CU-UP-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* en-gNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1 = { - sizeof(struct GlobalE2node_en_gNB_ID), - offsetof(struct GlobalE2node_en_gNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_GlobalE2node_en_gNB_ID_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID = { - "GlobalE2node-en-gNB-ID", - "GlobalE2node-en-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_en_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_en_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_en_gNB_ID_1, - 3, /* Elements count */ - &asn_SPC_GlobalE2node_en_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.h b/e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.h deleted file mode 100644 index 7c15577..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-en-gNB-ID.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalE2node_en_gNB_ID_H_ -#define _GlobalE2node_en_gNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalenGNB-ID.h" -#include "GNB-CU-UP-ID.h" -#include "GNB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalE2node-en-gNB-ID */ -typedef struct GlobalE2node_en_gNB_ID { - GlobalenGNB_ID_t global_en_gNB_ID; - GNB_CU_UP_ID_t *en_gNB_CU_UP_ID; /* OPTIONAL */ - GNB_DU_ID_t *en_gNB_DU_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_en_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_en_gNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalE2node-gNB-ID.c b/e2sim/src/ASN1c/GlobalE2node-gNB-ID.c deleted file mode 100644 index 050265b..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-gNB-ID.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalE2node-gNB-ID.h" - -#include "GlobalenGNB-ID.h" -asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_gNB_ID, global_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalgNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-gNB-ID" - }, - { ATF_POINTER, 3, offsetof(struct GlobalE2node_gNB_ID, global_en_gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalenGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-en-gNB-ID" - }, - { ATF_POINTER, 2, offsetof(struct GlobalE2node_gNB_ID, gNB_CU_UP_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_CU_UP_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-CU-UP-ID" - }, - { ATF_POINTER, 1, offsetof(struct GlobalE2node_gNB_ID, gNB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GNB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-DU-ID" - }, -}; -static const int asn_MAP_GlobalE2node_gNB_ID_oms_1[] = { 1, 2, 3 }; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_gNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_gNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* global-en-gNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UP-ID */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* gNB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1 = { - sizeof(struct GlobalE2node_gNB_ID), - offsetof(struct GlobalE2node_gNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_gNB_ID_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_GlobalE2node_gNB_ID_oms_1, /* Optional members */ - 3, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID = { - "GlobalE2node-gNB-ID", - "GlobalE2node-gNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_gNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_gNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_gNB_ID_1, - 4, /* Elements count */ - &asn_SPC_GlobalE2node_gNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalE2node-gNB-ID.h b/e2sim/src/ASN1c/GlobalE2node-gNB-ID.h deleted file mode 100644 index bed418d..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-gNB-ID.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalE2node_gNB_ID_H_ -#define _GlobalE2node_gNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalgNB-ID.h" -#include "GNB-CU-UP-ID.h" -#include "GNB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct GlobalenGNB_ID; - -/* GlobalE2node-gNB-ID */ -typedef struct GlobalE2node_gNB_ID { - GlobalgNB_ID_t global_gNB_ID; - struct GlobalenGNB_ID *global_en_gNB_ID; /* OPTIONAL */ - GNB_CU_UP_ID_t *gNB_CU_UP_ID; /* OPTIONAL */ - GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_gNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[4]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_gNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.c b/e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.c deleted file mode 100644 index 313e953..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalE2node-ng-eNB-ID.h" - -#include "GlobalENB-ID.h" -asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_ng_eNB_ID, global_ng_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalngeNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-ng-eNB-ID" - }, - { ATF_POINTER, 2, offsetof(struct GlobalE2node_ng_eNB_ID, global_eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "global-eNB-ID" - }, - { ATF_POINTER, 1, offsetof(struct GlobalE2node_ng_eNB_ID, ngENB_DU_ID), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NGENB_DU_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ngENB-DU-ID" - }, -}; -static const int asn_MAP_GlobalE2node_ng_eNB_ID_oms_1[] = { 1, 2 }; -static const ber_tlv_tag_t asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-ng-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* global-eNB-ID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ngENB-DU-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 = { - sizeof(struct GlobalE2node_ng_eNB_ID), - offsetof(struct GlobalE2node_ng_eNB_ID, _asn_ctx), - asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1, - 3, /* Count of tags in the map */ - asn_MAP_GlobalE2node_ng_eNB_ID_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID = { - "GlobalE2node-ng-eNB-ID", - "GlobalE2node-ng-eNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, - sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) - /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalE2node_ng_eNB_ID_1, - 3, /* Elements count */ - &asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.h b/e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.h deleted file mode 100644 index 05ca8a1..0000000 --- a/e2sim/src/ASN1c/GlobalE2node-ng-eNB-ID.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalE2node_ng_eNB_ID_H_ -#define _GlobalE2node_ng_eNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "GlobalngeNB-ID.h" -#include "NGENB-DU-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct GlobalENB_ID; - -/* GlobalE2node-ng-eNB-ID */ -typedef struct GlobalE2node_ng_eNB_ID { - GlobalngeNB_ID_t global_ng_eNB_ID; - struct GlobalENB_ID *global_eNB_ID; /* OPTIONAL */ - NGENB_DU_ID_t *ngENB_DU_ID; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalE2node_ng_eNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalE2node_ng_eNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalENB-ID.c b/e2sim/src/ASN1c/GlobalENB-ID.c deleted file mode 100644 index d9d140a..0000000 --- a/e2sim/src/ASN1c/GlobalENB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalENB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_ENB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "eNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = { - sizeof(struct GlobalENB_ID), - offsetof(struct GlobalENB_ID, _asn_ctx), - asn_MAP_GlobalENB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID = { - "GlobalENB-ID", - "GlobalENB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalENB_ID_tags_1, - sizeof(asn_DEF_GlobalENB_ID_tags_1) - /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalENB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalENB_ID_tags_1) - /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalENB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalENB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalENB-ID.h b/e2sim/src/ASN1c/GlobalENB-ID.h deleted file mode 100644 index 822ac42..0000000 --- a/e2sim/src/ASN1c/GlobalENB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalENB_ID_H_ -#define _GlobalENB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "ENB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalENB-ID */ -typedef struct GlobalENB_ID { - PLMN_Identity_t pLMN_Identity; - ENB_ID_t eNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalENB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalENB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalNG-RANNode-ID.c b/e2sim/src/ASN1c/GlobalNG-RANNode-ID.c deleted file mode 100644 index 0541f38..0000000 --- a/e2sim/src/ASN1c/GlobalNG-RANNode-ID.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalNG-RANNode-ID.h" - -#include "GlobalgNB-ID.h" -#include "GlobalngeNB-ID.h" -asn_per_constraints_t asn_PER_type_GlobalNG_RANNode_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_GlobalNG_RANNode_ID_1[] = { - { ATF_POINTER, 0, offsetof(struct GlobalNG_RANNode_ID, choice.gNB), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalgNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB" - }, - { ATF_POINTER, 0, offsetof(struct GlobalNG_RANNode_ID, choice.ng_eNB), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_GlobalngeNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ng-eNB" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalNG_RANNode_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-eNB */ -}; -asn_CHOICE_specifics_t asn_SPC_GlobalNG_RANNode_ID_specs_1 = { - sizeof(struct GlobalNG_RANNode_ID), - offsetof(struct GlobalNG_RANNode_ID, _asn_ctx), - offsetof(struct GlobalNG_RANNode_ID, present), - sizeof(((struct GlobalNG_RANNode_ID *)0)->present), - asn_MAP_GlobalNG_RANNode_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalNG_RANNode_ID = { - "GlobalNG-RANNode-ID", - "GlobalNG-RANNode-ID", - &asn_OP_CHOICE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, &asn_PER_type_GlobalNG_RANNode_ID_constr_1, CHOICE_constraint }, - asn_MBR_GlobalNG_RANNode_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalNG_RANNode_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalNG-RANNode-ID.h b/e2sim/src/ASN1c/GlobalNG-RANNode-ID.h deleted file mode 100644 index 325cb50..0000000 --- a/e2sim/src/ASN1c/GlobalNG-RANNode-ID.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalNG_RANNode_ID_H_ -#define _GlobalNG_RANNode_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "constr_CHOICE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum GlobalNG_RANNode_ID_PR { - GlobalNG_RANNode_ID_PR_NOTHING, /* No components present */ - GlobalNG_RANNode_ID_PR_gNB, - GlobalNG_RANNode_ID_PR_ng_eNB - /* Extensions may appear below */ - -} GlobalNG_RANNode_ID_PR; - -/* Forward declarations */ -struct GlobalgNB_ID; -struct GlobalngeNB_ID; - -/* GlobalNG-RANNode-ID */ -typedef struct GlobalNG_RANNode_ID { - GlobalNG_RANNode_ID_PR present; - union GlobalNG_RANNode_ID_u { - struct GlobalgNB_ID *gNB; - struct GlobalngeNB_ID *ng_eNB; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalNG_RANNode_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalNG_RANNode_ID; -extern asn_CHOICE_specifics_t asn_SPC_GlobalNG_RANNode_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalNG_RANNode_ID_1[2]; -extern asn_per_constraints_t asn_PER_type_GlobalNG_RANNode_ID_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalNG_RANNode_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalRIC-ID.c b/e2sim/src/ASN1c/GlobalRIC-ID.c deleted file mode 100644 index 5a4ef97..0000000 --- a/e2sim/src/ASN1c/GlobalRIC-ID.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalRIC-ID.h" - -static int -memb_ric_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 20)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_ric_ID_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_GlobalRIC_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, ric_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_ric_ID_constr_3, memb_ric_ID_constraint_1 }, - 0, 0, /* No default value */ - "ric-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalRIC_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalRIC_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-ID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_GlobalRIC_ID_specs_1 = { - sizeof(struct GlobalRIC_ID), - offsetof(struct GlobalRIC_ID, _asn_ctx), - asn_MAP_GlobalRIC_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID = { - "GlobalRIC-ID", - "GlobalRIC-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalRIC_ID_tags_1, - sizeof(asn_DEF_GlobalRIC_ID_tags_1) - /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalRIC_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalRIC_ID_tags_1) - /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalRIC_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalRIC_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalRIC-ID.h b/e2sim/src/ASN1c/GlobalRIC-ID.h deleted file mode 100644 index 93ccdb0..0000000 --- a/e2sim/src/ASN1c/GlobalRIC-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalRIC_ID_H_ -#define _GlobalRIC_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "BIT_STRING.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalRIC-ID */ -typedef struct GlobalRIC_ID { - PLMN_Identity_t pLMN_Identity; - BIT_STRING_t ric_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalRIC_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalRIC_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalenGNB-ID.c b/e2sim/src/ASN1c/GlobalenGNB-ID.c deleted file mode 100644 index 412df59..0000000 --- a/e2sim/src/ASN1c/GlobalenGNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalenGNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, pLMN_Identity), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "pLMN-Identity" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, gNB_ID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_ENGNB_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gNB-ID" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalenGNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalenGNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1 = { - sizeof(struct GlobalenGNB_ID), - offsetof(struct GlobalenGNB_ID, _asn_ctx), - asn_MAP_GlobalenGNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID = { - "GlobalenGNB-ID", - "GlobalenGNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalenGNB_ID_tags_1, - sizeof(asn_DEF_GlobalenGNB_ID_tags_1) - /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalenGNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalenGNB_ID_tags_1) - /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalenGNB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalenGNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalenGNB-ID.h b/e2sim/src/ASN1c/GlobalenGNB-ID.h deleted file mode 100644 index b32cebe..0000000 --- a/e2sim/src/ASN1c/GlobalenGNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalenGNB_ID_H_ -#define _GlobalenGNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "ENGNB-ID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalenGNB-ID */ -typedef struct GlobalenGNB_ID { - PLMN_Identity_t pLMN_Identity; - ENGNB_ID_t gNB_ID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalenGNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalenGNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalgNB-ID.c b/e2sim/src/ASN1c/GlobalgNB-ID.c deleted file mode 100644 index 5b756ef..0000000 --- a/e2sim/src/ASN1c/GlobalgNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalgNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, plmn_id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "plmn-id" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, gnb_id), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_GNB_ID_Choice, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "gnb-id" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalgNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalgNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gnb-id */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1 = { - sizeof(struct GlobalgNB_ID), - offsetof(struct GlobalgNB_ID, _asn_ctx), - asn_MAP_GlobalgNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID = { - "GlobalgNB-ID", - "GlobalgNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalgNB_ID_tags_1, - sizeof(asn_DEF_GlobalgNB_ID_tags_1) - /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalgNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalgNB_ID_tags_1) - /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalgNB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalgNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalgNB-ID.h b/e2sim/src/ASN1c/GlobalgNB-ID.h deleted file mode 100644 index 9287069..0000000 --- a/e2sim/src/ASN1c/GlobalgNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalgNB_ID_H_ -#define _GlobalgNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "GNB-ID-Choice.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalgNB-ID */ -typedef struct GlobalgNB_ID { - PLMN_Identity_t plmn_id; - GNB_ID_Choice_t gnb_id; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalgNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalgNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/GlobalngeNB-ID.c b/e2sim/src/ASN1c/GlobalngeNB-ID.c deleted file mode 100644 index f4ba963..0000000 --- a/e2sim/src/ASN1c/GlobalngeNB-ID.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "GlobalngeNB-ID.h" - -asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, plmn_id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_PLMN_Identity, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "plmn-id" - }, - { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, enb_id), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_ENB_ID_Choice, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "enb-id" - }, -}; -static const ber_tlv_tag_t asn_DEF_GlobalngeNB_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_GlobalngeNB_ID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* enb-id */ -}; -asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1 = { - sizeof(struct GlobalngeNB_ID), - offsetof(struct GlobalngeNB_ID, _asn_ctx), - asn_MAP_GlobalngeNB_ID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID = { - "GlobalngeNB-ID", - "GlobalngeNB-ID", - &asn_OP_SEQUENCE, - asn_DEF_GlobalngeNB_ID_tags_1, - sizeof(asn_DEF_GlobalngeNB_ID_tags_1) - /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ - asn_DEF_GlobalngeNB_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_GlobalngeNB_ID_tags_1) - /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_GlobalngeNB_ID_1, - 2, /* Elements count */ - &asn_SPC_GlobalngeNB_ID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/GlobalngeNB-ID.h b/e2sim/src/ASN1c/GlobalngeNB-ID.h deleted file mode 100644 index 5ca930f..0000000 --- a/e2sim/src/ASN1c/GlobalngeNB-ID.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _GlobalngeNB_ID_H_ -#define _GlobalngeNB_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PLMN-Identity.h" -#include "ENB-ID-Choice.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* GlobalngeNB-ID */ -typedef struct GlobalngeNB_ID { - PLMN_Identity_t plmn_id; - ENB_ID_Choice_t enb_id; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} GlobalngeNB_ID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID; -extern asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1; -extern asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _GlobalngeNB_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/INTEGER.c b/e2sim/src/ASN1c/INTEGER.c deleted file mode 100644 index 2a2f4d7..0000000 --- a/e2sim/src/ASN1c/INTEGER.c +++ /dev/null @@ -1,1735 +0,0 @@ -/*- - * Copyright (c) 2003-2014 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* Encoder and decoder of a primitive type */ -#include - -/* - * INTEGER basic type description. - */ -static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_INTEGER = { - INTEGER_free, - INTEGER_print, - INTEGER_compare, - ber_decode_primitive, - INTEGER_encode_der, - INTEGER_decode_xer, - INTEGER_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - INTEGER_decode_oer, /* OER decoder */ - INTEGER_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - INTEGER_decode_uper, /* Unaligned PER decoder */ - INTEGER_encode_uper, /* Unaligned PER encoder */ - INTEGER_decode_aper, /* Aligned PER decoder */ - INTEGER_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - INTEGER_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_INTEGER = { - "INTEGER", - "INTEGER", - &asn_OP_INTEGER, - asn_DEF_INTEGER_tags, - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - asn_DEF_INTEGER_tags, /* Same as above */ - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Encode INTEGER type using DER. - */ -asn_enc_rval_t -INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t rval; - INTEGER_t effective_integer; - - ASN_DEBUG("%s %s as INTEGER (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - /* - * Canonicalize integer in the buffer. - * (Remove too long sign extension, remove some first 0x00 bytes) - */ - if(st->buf) { - uint8_t *buf = st->buf; - uint8_t *end1 = buf + st->size - 1; - int shift; - - /* Compute the number of superfluous leading bytes */ - for(; buf < end1; buf++) { - /* - * If the contents octets of an integer value encoding - * consist of more than one octet, then the bits of the - * first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - switch(*buf) { - case 0x00: if((buf[1] & 0x80) == 0) - continue; - break; - case 0xff: if((buf[1] & 0x80)) - continue; - break; - } - break; - } - - /* Remove leading superfluous bytes from the integer */ - shift = buf - st->buf; - if(shift) { - union { - const uint8_t *c_buf; - uint8_t *nc_buf; - } unconst; - unconst.c_buf = st->buf; - effective_integer.buf = unconst.nc_buf + shift; - effective_integer.size = st->size - shift; - - st = &effective_integer; - } - } - - rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); - if(rval.structure_ptr == &effective_integer) { - rval.structure_ptr = sptr; - } - return rval; -} - -static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( - const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop); - -/* - * INTEGER specific human-readable output. - */ -static ssize_t -INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; - uint8_t *buf = st->buf; - uint8_t *buf_end = st->buf + st->size; - intmax_t value; - ssize_t wrote = 0; - char *p; - int ret; - - if(specs && specs->field_unsigned) - ret = asn_INTEGER2umax(st, (uintmax_t *)&value); - else - ret = asn_INTEGER2imax(st, &value); - - /* Simple case: the integer size is small */ - if(ret == 0) { - const asn_INTEGER_enum_map_t *el; - el = (value >= 0 || !specs || !specs->field_unsigned) - ? INTEGER_map_value2enum(specs, value) : 0; - if(el) { - if(plainOrXER == 0) - return asn__format_to_callback(cb, app_key, - "%" ASN_PRIdMAX " (%s)", value, el->enum_name); - else - return asn__format_to_callback(cb, app_key, - "<%s/>", el->enum_name); - } else if(plainOrXER && specs && specs->strict_enumeration) { - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } else { - return asn__format_to_callback(cb, app_key, - (specs && specs->field_unsigned) - ? "%" ASN_PRIuMAX - : "%" ASN_PRIdMAX, - value); - } - } else if(plainOrXER && specs && specs->strict_enumeration) { - /* - * Here and earlier, we cannot encode the ENUMERATED values - * if there is no corresponding identifier. - */ - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } - - /* Output in the long xx:yy:zz... format */ - /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ - for(p = scratch; buf < buf_end; buf++) { - const char * const h2c = "0123456789ABCDEF"; - if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { - /* Flush buffer */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - wrote += p - scratch; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x3a; /* ":" */ - } - if(p != scratch) - p--; /* Remove the last ":" */ - - wrote += p - scratch; - return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; -} - -/* - * INTEGER specific human-readable output. - */ -int -INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - ssize_t ret; - - (void)ilevel; - - if(!st || !st->buf) - ret = cb("", 8, app_key); - else - ret = INTEGER__dump(td, st, cb, app_key, 0); - - return (ret < 0) ? -1 : 0; -} - -struct e2v_key { - const char *start; - const char *stop; - const asn_INTEGER_enum_map_t *vemap; - const unsigned int *evmap; -}; -static int -INTEGER__compar_enum2value(const void *kp, const void *am) { - const struct e2v_key *key = (const struct e2v_key *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - const char *ptr, *end, *name; - - /* Remap the element (sort by different criterion) */ - el = key->vemap + key->evmap[el - key->vemap]; - - /* Compare strings */ - for(ptr = key->start, end = key->stop, name = el->enum_name; - ptr < end; ptr++, name++) { - if(*ptr != *name || !*name) - return *(const unsigned char *)ptr - - *(const unsigned char *)name; - } - return name[0] ? -1 : 0; -} - -static const asn_INTEGER_enum_map_t * -INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, - const char *lstop) { - const asn_INTEGER_enum_map_t *el_found; - int count = specs ? specs->map_count : 0; - struct e2v_key key; - const char *lp; - - if(!count) return NULL; - - /* Guaranteed: assert(lstart < lstop); */ - /* Figure out the tag name */ - for(lstart++, lp = lstart; lp < lstop; lp++) { - switch(*lp) { - case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ - case 0x2f: /* '/' */ case 0x3e: /* '>' */ - break; - default: - continue; - } - break; - } - if(lp == lstop) return NULL; /* No tag found */ - lstop = lp; - - key.start = lstart; - key.stop = lstop; - key.vemap = specs->value2enum; - key.evmap = specs->enum2value; - el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, - specs->value2enum, count, sizeof(specs->value2enum[0]), - INTEGER__compar_enum2value); - if(el_found) { - /* Remap enum2value into value2enum */ - el_found = key.vemap + key.evmap[el_found - key.vemap]; - } - return el_found; -} - -static int -INTEGER__compar_value2enum(const void *kp, const void *am) { - long a = *(const long *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - long b = el->nat_value; - if(a < b) return -1; - else if(a == b) return 0; - else return 1; -} - -const asn_INTEGER_enum_map_t * -INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { - int count = specs ? specs->map_count : 0; - if(!count) return 0; - return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, - count, sizeof(specs->value2enum[0]), - INTEGER__compar_value2enum); -} - -static int -INTEGER_st_prealloc(INTEGER_t *st, int min_size) { - void *p = MALLOC(min_size + 1); - if(p) { - void *b = st->buf; - st->size = 0; - st->buf = p; - FREEMEM(b); - return 0; - } else { - return -1; - } -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -static enum xer_pbd_rval -INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, - const void *chunk_buf, size_t chunk_size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - INTEGER_t *st = (INTEGER_t *)sptr; - intmax_t dec_value; - intmax_t hex_value = 0; - const char *lp; - const char *lstart = (const char *)chunk_buf; - const char *lstop = lstart + chunk_size; - enum { - ST_LEADSPACE, - ST_SKIPSPHEX, - ST_WAITDIGITS, - ST_DIGITS, - ST_DIGITS_TRAILSPACE, - ST_HEXDIGIT1, - ST_HEXDIGIT2, - ST_HEXDIGITS_TRAILSPACE, - ST_HEXCOLON, - ST_END_ENUM, - ST_UNEXPECTED - } state = ST_LEADSPACE; - const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ - const char *dec_value_end = 0; - - if(chunk_size) - ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", - (long)chunk_size, *lstart, lstop[-1]); - - if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) - return XPBD_SYSTEM_FAILURE; - - /* - * We may have received a tag here. It will be processed inline. - * Use strtoul()-like code and serialize the result. - */ - for(lp = lstart; lp < lstop; lp++) { - int lv = *lp; - switch(lv) { - case 0x09: case 0x0a: case 0x0d: case 0x20: - switch(state) { - case ST_LEADSPACE: - case ST_DIGITS_TRAILSPACE: - case ST_HEXDIGITS_TRAILSPACE: - case ST_SKIPSPHEX: - continue; - case ST_DIGITS: - dec_value_end = lp; - state = ST_DIGITS_TRAILSPACE; - continue; - case ST_HEXCOLON: - state = ST_HEXDIGITS_TRAILSPACE; - continue; - default: - break; - } - break; - case 0x2d: /* '-' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x2b: /* '+' */ - if(state == ST_LEADSPACE) { - dec_value = 0; - dec_value_start = lp; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: - switch(state) { - case ST_DIGITS: continue; - case ST_SKIPSPHEX: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = (lv - 0x30) << 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += (lv - 0x30); - state = ST_HEXCOLON; - st->buf[st->size++] = (uint8_t)hex_value; - continue; - case ST_HEXCOLON: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - dec_value = 0; - dec_value_start = lp; - /* FALL THROUGH */ - case ST_WAITDIGITS: - state = ST_DIGITS; - continue; - default: - break; - } - break; - case 0x3c: /* '<', start of XML encoded enumeration */ - if(state == ST_LEADSPACE) { - const asn_INTEGER_enum_map_t *el; - el = INTEGER_map_enum2value( - (const asn_INTEGER_specifics_t *) - td->specifics, lstart, lstop); - if(el) { - ASN_DEBUG("Found \"%s\" => %ld", - el->enum_name, el->nat_value); - dec_value = el->nat_value; - state = ST_END_ENUM; - lp = lstop - 1; - continue; - } - ASN_DEBUG("Unknown identifier for INTEGER"); - } - return XPBD_BROKEN_ENCODING; - case 0x3a: /* ':' */ - if(state == ST_HEXCOLON) { - /* This colon is expected */ - state = ST_HEXDIGIT1; - continue; - } else if(state == ST_DIGITS) { - /* The colon here means that we have - * decoded the first two hexadecimal - * places as a decimal value. - * Switch decoding mode. */ - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - } else { - ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); - break; - } - /* [A-Fa-f] */ - case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: - case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: - switch(state) { - case ST_SKIPSPHEX: - case ST_LEADSPACE: /* Fall through */ - case ST_HEXDIGIT1: - hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - hex_value <<= 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); - hex_value += 10; - st->buf[st->size++] = (uint8_t)hex_value; - state = ST_HEXCOLON; - continue; - case ST_DIGITS: - ASN_DEBUG("INTEGER re-evaluate as hex form"); - state = ST_SKIPSPHEX; - dec_value_start = 0; - lp = lstart - 1; - continue; - default: - break; - } - break; - } - - /* Found extra non-numeric stuff */ - ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", - lv, (long)(lp - lstart)); - state = ST_UNEXPECTED; - break; - } - - switch(state) { - case ST_END_ENUM: - /* Got a complete and valid enumeration encoded as a tag. */ - break; - case ST_DIGITS: - dec_value_end = lstop; - /* FALL THROUGH */ - case ST_DIGITS_TRAILSPACE: - /* The last symbol encountered was a digit. */ - switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { - case ASN_STRTOX_OK: - if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { - break; - } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { - break; - } else { - /* - * We model INTEGER on long for XER, - * to avoid rewriting all the tests at once. - */ - ASN_DEBUG("INTEGER exceeds long range"); - } - /* Fall through */ - case ASN_STRTOX_ERROR_RANGE: - ASN_DEBUG("INTEGER decode %s hit range limit", td->name); - return XPBD_DECODER_LIMIT; - case ASN_STRTOX_ERROR_INVAL: - case ASN_STRTOX_EXPECT_MORE: - case ASN_STRTOX_EXTRA_DATA: - return XPBD_BROKEN_ENCODING; - } - break; - case ST_HEXCOLON: - case ST_HEXDIGITS_TRAILSPACE: - st->buf[st->size] = 0; /* Just in case termination */ - return XPBD_BODY_CONSUMED; - case ST_HEXDIGIT1: - case ST_HEXDIGIT2: - case ST_SKIPSPHEX: - return XPBD_BROKEN_ENCODING; - case ST_LEADSPACE: - /* Content not found */ - return XPBD_NOT_BODY_IGNORE; - case ST_WAITDIGITS: - case ST_UNEXPECTED: - ASN_DEBUG("INTEGER: No useful digits (state %d)", state); - return XPBD_BROKEN_ENCODING; /* No digits */ - } - - /* - * Convert the result of parsing of enumeration or a straight - * decimal value into a BER representation. - */ - if(asn_imax2INTEGER(st, dec_value)) { - ASN_DEBUG("INTEGER decode %s conversion failed", td->name); - return XPBD_SYSTEM_FAILURE; - } - - return XPBD_BODY_CONSUMED; -} - -asn_dec_rval_t -INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return xer_decode_primitive(opt_codec_ctx, td, - sptr, sizeof(INTEGER_t), opt_mname, - buf_ptr, size, INTEGER__xer_body_decode); -} - -asn_enc_rval_t -INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t er = {0,0,0}; - - (void)ilevel; - (void)flags; - - if(!st || !st->buf) - ASN__ENCODE_FAILED; - - er.encoded = INTEGER__dump(td, st, cb, app_key, 1); - if(er.encoded < 0) ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691-2008/11, #13.2.2, constrained whole number */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #11.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) - ASN__DECODE_FAILED; - - if(specs && specs->field_unsigned) { - unsigned long uvalue = 0; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - uvalue += ct->lower_bound; - if(asn_ulong2INTEGER(st, uvalue)) - ASN__DECODE_FAILED; - } else { - unsigned long uvalue = 0; - long svalue; - if(uper_get_constrained_whole_number(pd, - &uvalue, ct->range_bits)) - ASN__DECODE_STARVED; - ASN_DEBUG("Got value %lu + low %ld", - uvalue, ct->lower_bound); - if(per_long_range_unrebase(uvalue, ct->lower_bound, - ct->upper_bound, &svalue) - || asn_long2INTEGER(st, svalue)) { - ASN__DECODE_FAILED; - } - } - return rval; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len = 0; - void *p = NULL; - int ret = 0; - - /* Get the PER length */ - len = uper_get_length(pd, -1, 0, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value = 0; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_imax2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - - /* X.691-11/2008, #13.2.2, test if constrained whole number */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - /* #11.5.6 -> #11.3 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - if(specs && specs->field_unsigned) { - if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) - || ((unsigned long)value < (unsigned long)ct->lower_bound)) - || ((unsigned long)value > (unsigned long)ct->upper_bound) - ) { - ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", - value, ct->lower_bound, ct->upper_bound); - ASN__ENCODE_FAILED; - } - v = (unsigned long)value - (unsigned long)ct->lower_bound; - } else { - if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { - ASN__ENCODE_FAILED; - } - } - if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) - ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - int need_eom = 0; - ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; - } - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - const asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) ASN__DECODE_FAILED; - } - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) ASN__DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) ASN__DECODE_FAILED; - st->size = size; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #10.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - if (ct->range_bits > 16) { - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - int length = 0, i; - long value = 0; - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, - max_range_bytes, i); - - if ((length = per_get_few_bits(pd, i)) < 0) - ASN__DECODE_FAILED; - - /* X.691 #12.2.6 length determinant + lb (1) */ - length += 1; - ASN_DEBUG("Got length %d", length); - if (aper_get_align(pd) != 0) - ASN__DECODE_FAILED; - while (length--) { - int buf = per_get_few_bits(pd, 8); - if (buf < 0) - ASN__DECODE_FAILED; - value += (((long)buf) << (8 * length)); - } - - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_uint642INTEGER(st, (unsigned long)value) - : asn_int642INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } else { - long value = 0; - if (ct->range_bits < 8) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else if (ct->range_bits == 8) { - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - } else { - /* Align */ - if (aper_get_align(pd) < 0) - ASN__DECODE_FAILED; - value = per_get_few_bits(pd, 16); - if(value < 0) ASN__DECODE_STARVED; - } - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_ulong2INTEGER(st, value) - : asn_long2INTEGER(st, value)) - ASN__DECODE_FAILED; - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - } - return rval; - } else { - ASN__DECODE_FAILED; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len; - void *p; - int ret; - - /* Get the PER length */ - len = aper_get_length(pd, -1, -1, &repeat); - if(len < 0) ASN__DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) ASN__DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) ASN__DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value; - if(asn_INTEGER2long(st, &value)) - ASN__DECODE_FAILED; - if(asn_long2INTEGER(st, value + ct->lower_bound)) - ASN__DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const INTEGER_t *st = (const INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - const asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) ASN__ENCODE_FAILED; - - if(!constraints) constraints = td->encoding_constraints.per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - ASN__ENCODE_FAILED; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->range_bits >= 0) { - unsigned long v; - - /* #10.5.6 */ - ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", - value, value - ct->lower_bound, ct->range_bits); - - v = value - ct->lower_bound; - - /* #12 <= 8 -> alignment ? */ - if (ct->range_bits < 8) { - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits == 8) { - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) - ASN__ENCODE_FAILED; - } else if (ct->range_bits <= 16) { - /* Consume the bytes to align on octet */ - if(aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - if(per_put_few_bits(po, 0x0000 | v, - 16)) - ASN__ENCODE_FAILED; - } else { - /* TODO: extend to >64 bits */ - int64_t v64 = v; - int i, j; - int max_range_bytes = (ct->range_bits >> 3) + - (((ct->range_bits % 8) > 0) ? 1 : 0); - - for (i = 1; ; i++) { - int upper = 1 << i; - if (upper >= max_range_bytes) - break; - } - - for (j = sizeof(int64_t) -1; j != 0; j--) { - int64_t val; - val = v64 >> (j * 8); - if (val != 0) - break; - } - - /* Putting length in the minimum number of bits ex: 5 = 3bits */ - if (per_put_few_bits(po, j, i)) - ASN__ENCODE_FAILED; - - /* Consume the bits to align on octet */ - if (aper_put_align(po) < 0) - ASN__ENCODE_FAILED; - /* Put the value */ - for (i = 0; i <= j; i++) { - if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) - ASN__ENCODE_FAILED; - } - } - ASN__ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - ASN__ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - ssize_t mayEncode = aper_put_length(po, -1, end - buf); - if(mayEncode < 0) - ASN__ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - ASN__ENCODE_FAILED; - buf += mayEncode; - } - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -static intmax_t -asn__integer_convert(const uint8_t *b, const uint8_t *end) { - uintmax_t value; - - /* Perform the sign initialization */ - /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ - if((*b >> 7)) { - value = (uintmax_t)(-1); - } else { - value = 0; - } - - /* Conversion engine */ - for(; b < end; b++) { - value = (value << 8) | *b; - } - - return value; -} - -int -asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { - uint8_t *b, *end; - size_t size; - - /* Sanity checking */ - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - /* Cache the begin/end of the buffer */ - b = iptr->buf; /* Start of the INTEGER buffer */ - size = iptr->size; - end = b + size; /* Where to stop */ - - if(size > sizeof(intmax_t)) { - uint8_t *end1 = end - 1; - /* - * Slightly more advanced processing, - * able to process INTEGERs with >sizeof(intmax_t) bytes - * when the actual value is small, e.g. for intmax_t == int32_t - * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) - */ - /* Skip out the insignificant leading bytes */ - for(; b < end1; b++) { - switch(*b) { - case 0x00: if((b[1] & 0x80) == 0) continue; break; - case 0xff: if((b[1] & 0x80) != 0) continue; break; - } - break; - } - - size = end - b; - if(size > sizeof(intmax_t)) { - /* Still cannot fit the sizeof(intmax_t) */ - errno = ERANGE; - return -1; - } - } - - /* Shortcut processing of a corner case */ - if(end == b) { - *lptr = 0; - return 0; - } - - *lptr = asn__integer_convert(b, end); - return 0; -} - -/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ -int -asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { - uint8_t *b, *end; - uintmax_t value; - size_t size; - - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - b = iptr->buf; - size = iptr->size; - end = b + size; - - /* If all extra leading bytes are zeroes, ignore them */ - for(; size > sizeof(value); b++, size--) { - if(*b) { - /* Value won't fit into uintmax_t */ - errno = ERANGE; - return -1; - } - } - - /* Conversion engine */ - for(value = 0; b < end; b++) - value = (value << 8) | *b; - - *lptr = value; - return 0; -} - -int -asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= ((~(uintmax_t)0) >> 1)) { - return asn_imax2INTEGER(st, value); - } - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ - for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)(long *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -int -asn_INTEGER2long(const INTEGER_t *iptr, long *l) { - intmax_t v; - if(asn_INTEGER2imax(iptr, &v) == 0) { - if(v < LONG_MIN || v > LONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { - uintmax_t v; - if(asn_INTEGER2umax(iptr, &v) == 0) { - if(v > ULONG_MAX) { - errno = ERANGE; - return -1; - } - *l = v; - return 0; - } else { - return -1; - } -} - -int -asn_long2INTEGER(INTEGER_t *st, long value) { - return asn_imax2INTEGER(st, value); -} - -int -asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { - return asn_imax2INTEGER(st, value); -} - - -int -asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= INT64_MAX) - return asn_int642INTEGER(st, value); - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; - for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_int642INTEGER(INTEGER_t *st, int64_t value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtol/strtoimax(3). - */ -enum asn_strtox_result_e -asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { - int sign = 1; - intmax_t value; - -#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) - const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; - intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; -#undef ASN1_INTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - last_digit_max++; - sign = -1; - /* FALL THROUGH */ - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - if(sign > 0) { - value = value * 10 + d; - } else { - sign = 1; - value = -value * 10 - d; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *intp = sign * value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *intp = sign * value; - return ASN_STRTOX_OK; -} - -/* - * Parse the number in the given string until the given *end position, - * returning the position after the last parsed character back using the - * same (*end) pointer. - * WARNING: This behavior is different from the standard strtoul/strtoumax(3). - */ -enum asn_strtox_result_e -asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { - uintmax_t value; - -#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) - const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; - uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; -#undef ASN1_UINTMAX_MAX - - if(str >= *end) return ASN_STRTOX_ERROR_INVAL; - - switch(*str) { - case '-': - return ASN_STRTOX_ERROR_INVAL; - case '+': - str++; - if(str >= *end) { - *end = str; - return ASN_STRTOX_EXPECT_MORE; - } - } - - for(value = 0; str < (*end); str++) { - switch(*str) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { - unsigned int d = *str - '0'; - if(value < upper_boundary) { - value = value * 10 + d; - } else if(value == upper_boundary) { - if(d <= last_digit_max) { - value = value * 10 + d; - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } else { - *end = str; - return ASN_STRTOX_ERROR_RANGE; - } - } - continue; - default: - *end = str; - *uintp = value; - return ASN_STRTOX_EXTRA_DATA; - } - } - - *end = str; - *uintp = value; - return ASN_STRTOX_OK; -} - -enum asn_strtox_result_e -asn_strtol_lim(const char *str, const char **end, long *lp) { - intmax_t value; - switch(asn_strtoimax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value >= LONG_MIN && value <= LONG_MAX) { - *lp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -enum asn_strtox_result_e -asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { - uintmax_t value; - switch(asn_strtoumax_lim(str, end, &value)) { - case ASN_STRTOX_ERROR_RANGE: - return ASN_STRTOX_ERROR_RANGE; - case ASN_STRTOX_ERROR_INVAL: - return ASN_STRTOX_ERROR_INVAL; - case ASN_STRTOX_EXPECT_MORE: - return ASN_STRTOX_EXPECT_MORE; - case ASN_STRTOX_OK: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_OK; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - case ASN_STRTOX_EXTRA_DATA: - if(value <= ULONG_MAX) { - *ulp = value; - return ASN_STRTOX_EXTRA_DATA; - } else { - return ASN_STRTOX_ERROR_RANGE; - } - } - - assert(!"Unreachable"); - return ASN_STRTOX_ERROR_INVAL; -} - -int -INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const INTEGER_t *a = aptr; - const INTEGER_t *b = bptr; - - (void)td; - - if(a && b) { - if(a->size && b->size) { - int sign_a = (a->buf[0] & 0x80) ? -1 : 1; - int sign_b = (b->buf[0] & 0x80) ? -1 : 1; - - if(sign_a < sign_b) return -1; - if(sign_a > sign_b) return 1; - - /* The shortest integer wins, unless comparing negatives */ - if(a->size < b->size) { - return -1 * sign_a; - } else if(a->size > b->size) { - return 1 * sign_b; - } - - return sign_a * memcmp(a->buf, b->buf, a->size); - } else if(a->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (1) * sign; - } else if(b->size) { - int sign = (a->buf[0] & 0x80) ? -1 : 1; - return (-1) * sign; - } else { - return 0; - } - } else if(!a && !b) { - return 0; - } else if(!a) { - return -1; - } else { - return 1; - } - -} - -asn_random_fill_result_t -INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - INTEGER_t *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (INTEGER_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - if(asn_imax2INTEGER(st, value)) { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return result_failed; - } else { - *sptr = st; - result_ok.length = st->size; - return result_ok; - } -} diff --git a/e2sim/src/ASN1c/INTEGER.h b/e2sim/src/ASN1c/INTEGER.h deleted file mode 100644 index f776c07..0000000 --- a/e2sim/src/ASN1c/INTEGER.h +++ /dev/null @@ -1,108 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/InitiatingMessage.c b/e2sim/src/ASN1c/InitiatingMessage.c deleted file mode 100644 index bbe2e22..0000000 --- a/e2sim/src/ASN1c/InitiatingMessage.c +++ /dev/null @@ -1,440 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "InitiatingMessage.h" - -static const long asn_VAL_1_id_RICsubscription = 8; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_2_id_RICsubscriptionDelete = 9; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_3_id_RICserviceUpdate = 7; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_4_id_RICcontrol = 4; -static const long asn_VAL_4_reject = 0; -static const long asn_VAL_5_id_E2setup = 1; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_6_id_E2nodeConfigurationUpdate = 10; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_7_id_E2connectionUpdate = 11; -static const long asn_VAL_7_reject = 0; -static const long asn_VAL_8_id_Reset = 3; -static const long asn_VAL_8_reject = 0; -static const long asn_VAL_9_id_RICindication = 5; -static const long asn_VAL_9_ignore = 1; -static const long asn_VAL_10_id_RICserviceQuery = 6; -static const long asn_VAL_10_ignore = 1; -static const long asn_VAL_11_id_ErrorIndication = 2; -static const long asn_VAL_11_ignore = 1; -static const long asn_VAL_12_id_RICsubscriptionDeleteRequired = 12; -static const long asn_VAL_12_ignore = 1; -static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2nodeConfigurationUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_E2nodeConfigurationUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2connectionUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_E2connectionUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_Reset }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_RICindication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_RICserviceQuery }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ErrorIndication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequired }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_RICsubscriptionDeleteRequired }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore } -}; -static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { - { 12, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } -}; -static int -memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_InitiatingMessage_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 4; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_InitiatingMessage_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 0; /* &InitiatingMessage */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceUpdate), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdate, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceUpdate" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICcontrolRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2setupRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2setupRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2nodeConfigurationUpdate), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdate, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeConfigurationUpdate" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2connectionUpdate), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdate" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResetRequest), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ResetRequest" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICindication), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICindication, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindication" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceQuery), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceQuery, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceQuery" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ErrorIndication), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ErrorIndication, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ErrorIndication" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequired), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequired, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteRequired" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 11 }, /* RICsubscriptionRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 10 }, /* RICsubscriptionDeleteRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 9 }, /* RICserviceUpdate */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 8 }, /* RICcontrolRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 7 }, /* E2setupRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 6 }, /* E2nodeConfigurationUpdate */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 5 }, /* E2connectionUpdate */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 4 }, /* ResetRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 3 }, /* RICindication */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 2 }, /* RICserviceQuery */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 1 }, /* ErrorIndication */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -11, 0 } /* RICsubscriptionDeleteRequired */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct InitiatingMessage__value), - offsetof(struct InitiatingMessage__value, _asn_ctx), - offsetof(struct InitiatingMessage__value, present), - sizeof(((struct InitiatingMessage__value *)0)->present), - asn_MAP_value_tag2el_4, - 12, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 12, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_InitiatingMessage_criticality_type, - { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_InitiatingMessage_value_type, - { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = { - sizeof(struct InitiatingMessage), - offsetof(struct InitiatingMessage, _asn_ctx), - asn_MAP_InitiatingMessage_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = { - "InitiatingMessage", - "InitiatingMessage", - &asn_OP_SEQUENCE, - asn_DEF_InitiatingMessage_tags_1, - sizeof(asn_DEF_InitiatingMessage_tags_1) - /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ - asn_DEF_InitiatingMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_InitiatingMessage_tags_1) - /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_InitiatingMessage_1, - 3, /* Elements count */ - &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/InitiatingMessage.h b/e2sim/src/ASN1c/InitiatingMessage.h deleted file mode 100644 index b4e4384..0000000 --- a/e2sim/src/ASN1c/InitiatingMessage.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _InitiatingMessage_H_ -#define _InitiatingMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICsubscriptionRequest.h" -#include "RICsubscriptionResponse.h" -#include "RICsubscriptionFailure.h" -#include "RICsubscriptionDeleteRequest.h" -#include "RICsubscriptionDeleteResponse.h" -#include "RICsubscriptionDeleteFailure.h" -#include "RICserviceUpdate.h" -#include "RICserviceUpdateAcknowledge.h" -#include "RICserviceUpdateFailure.h" -#include "RICcontrolRequest.h" -#include "RICcontrolAcknowledge.h" -#include "RICcontrolFailure.h" -#include "E2setupRequest.h" -#include "E2setupResponse.h" -#include "E2setupFailure.h" -#include "E2nodeConfigurationUpdate.h" -#include "E2nodeConfigurationUpdateAcknowledge.h" -#include "E2nodeConfigurationUpdateFailure.h" -#include "E2connectionUpdate.h" -#include "E2connectionUpdateAcknowledge.h" -#include "E2connectionUpdateFailure.h" -#include "ResetRequest.h" -#include "ResetResponse.h" -#include "RICindication.h" -#include "RICserviceQuery.h" -#include "ErrorIndication.h" -#include "RICsubscriptionDeleteRequired.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum InitiatingMessage__value_PR { - InitiatingMessage__value_PR_NOTHING, /* No components present */ - InitiatingMessage__value_PR_RICsubscriptionRequest, - InitiatingMessage__value_PR_RICsubscriptionDeleteRequest, - InitiatingMessage__value_PR_RICserviceUpdate, - InitiatingMessage__value_PR_RICcontrolRequest, - InitiatingMessage__value_PR_E2setupRequest, - InitiatingMessage__value_PR_E2nodeConfigurationUpdate, - InitiatingMessage__value_PR_E2connectionUpdate, - InitiatingMessage__value_PR_ResetRequest, - InitiatingMessage__value_PR_RICindication, - InitiatingMessage__value_PR_RICserviceQuery, - InitiatingMessage__value_PR_ErrorIndication, - InitiatingMessage__value_PR_RICsubscriptionDeleteRequired -} InitiatingMessage__value_PR; - -/* InitiatingMessage */ -typedef struct InitiatingMessage { - ProcedureCode_t procedureCode; - Criticality_t criticality; - struct InitiatingMessage__value { - InitiatingMessage__value_PR present; - union InitiatingMessage__value_u { - RICsubscriptionRequest_t RICsubscriptionRequest; - RICsubscriptionDeleteRequest_t RICsubscriptionDeleteRequest; - RICserviceUpdate_t RICserviceUpdate; - RICcontrolRequest_t RICcontrolRequest; - E2setupRequest_t E2setupRequest; - E2nodeConfigurationUpdate_t E2nodeConfigurationUpdate; - E2connectionUpdate_t E2connectionUpdate; - ResetRequest_t ResetRequest; - RICindication_t RICindication; - RICserviceQuery_t RICserviceQuery; - ErrorIndication_t ErrorIndication; - RICsubscriptionDeleteRequired_t RICsubscriptionDeleteRequired; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} InitiatingMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage; -extern asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1; -extern asn_TYPE_member_t asn_MBR_InitiatingMessage_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _InitiatingMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/MMEname.c b/e2sim/src/ASN1c/MMEname.c deleted file mode 100644 index 92cf47a..0000000 --- a/e2sim/src/ASN1c/MMEname.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "MMEname.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -MMEname_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 150) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_MMEname_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_MMEname_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_MMEname_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, - asn_PER_MAP_MMEname_1_v2c, /* Value to PER code map */ - asn_PER_MAP_MMEname_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_MMEname_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_MMEname = { - "MMEname", - "MMEname", - &asn_OP_PrintableString, - asn_DEF_MMEname_tags_1, - sizeof(asn_DEF_MMEname_tags_1) - /sizeof(asn_DEF_MMEname_tags_1[0]), /* 1 */ - asn_DEF_MMEname_tags_1, /* Same as above */ - sizeof(asn_DEF_MMEname_tags_1) - /sizeof(asn_DEF_MMEname_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_MMEname_constr_1, MMEname_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/MMEname.h b/e2sim/src/ASN1c/MMEname.h deleted file mode 100644 index 28137b0..0000000 --- a/e2sim/src/ASN1c/MMEname.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _MMEname_H_ -#define _MMEname_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* MMEname */ -typedef PrintableString_t MMEname_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_MMEname_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_MMEname; -asn_struct_free_f MMEname_free; -asn_struct_print_f MMEname_print; -asn_constr_check_f MMEname_constraint; -ber_type_decoder_f MMEname_decode_ber; -der_type_encoder_f MMEname_encode_der; -xer_type_decoder_f MMEname_decode_xer; -xer_type_encoder_f MMEname_encode_xer; -per_type_decoder_f MMEname_decode_uper; -per_type_encoder_f MMEname_encode_uper; -per_type_decoder_f MMEname_decode_aper; -per_type_encoder_f MMEname_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _MMEname_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/Makefile.am.libasncodec b/e2sim/src/ASN1c/Makefile.am.libasncodec deleted file mode 100644 index 6395c68..0000000 --- a/e2sim/src/ASN1c/Makefile.am.libasncodec +++ /dev/null @@ -1,371 +0,0 @@ -ASN_MODULE_SRCS= \ - E2AP-PDU.c \ - InitiatingMessage.c \ - SuccessfulOutcome.c \ - UnsuccessfulOutcome.c \ - RICsubscriptionRequest.c \ - RICsubscriptionDetails.c \ - RICactions-ToBeSetup-List.c \ - RICaction-ToBeSetup-Item.c \ - RICsubscriptionResponse.c \ - RICaction-Admitted-List.c \ - RICaction-Admitted-Item.c \ - RICaction-NotAdmitted-List.c \ - RICaction-NotAdmitted-Item.c \ - RICsubscriptionFailure.c \ - RICsubscriptionDeleteRequest.c \ - RICsubscriptionDeleteResponse.c \ - RICsubscriptionDeleteFailure.c \ - RICsubscriptionDeleteRequired.c \ - RICsubscription-List-withCause.c \ - RICsubscription-withCause-Item.c \ - RICindication.c \ - RICcontrolRequest.c \ - RICcontrolAcknowledge.c \ - RICcontrolFailure.c \ - ErrorIndication.c \ - E2setupRequest.c \ - E2setupResponse.c \ - E2setupFailure.c \ - E2connectionUpdate.c \ - E2connectionUpdate-List.c \ - E2connectionUpdate-Item.c \ - E2connectionUpdateRemove-List.c \ - E2connectionUpdateRemove-Item.c \ - E2connectionUpdateAcknowledge.c \ - E2connectionSetupFailed-List.c \ - E2connectionSetupFailed-Item.c \ - E2connectionUpdateFailure.c \ - E2nodeConfigurationUpdate.c \ - E2nodeComponentConfigAddition-List.c \ - E2nodeComponentConfigAddition-Item.c \ - E2nodeComponentConfigUpdate-List.c \ - E2nodeComponentConfigUpdate-Item.c \ - E2nodeComponentConfigRemoval-List.c \ - E2nodeComponentConfigRemoval-Item.c \ - E2nodeTNLassociationRemoval-List.c \ - E2nodeTNLassociationRemoval-Item.c \ - E2nodeConfigurationUpdateAcknowledge.c \ - E2nodeComponentConfigAdditionAck-List.c \ - E2nodeComponentConfigAdditionAck-Item.c \ - E2nodeComponentConfigUpdateAck-List.c \ - E2nodeComponentConfigUpdateAck-Item.c \ - E2nodeComponentConfigRemovalAck-List.c \ - E2nodeComponentConfigRemovalAck-Item.c \ - E2nodeConfigurationUpdateFailure.c \ - ResetRequest.c \ - ResetResponse.c \ - RICserviceUpdate.c \ - RANfunctions-List.c \ - RANfunction-Item.c \ - RANfunctionsID-List.c \ - RANfunctionID-Item.c \ - RICserviceUpdateAcknowledge.c \ - RANfunctionsIDcause-List.c \ - RANfunctionIDcause-Item.c \ - RICserviceUpdateFailure.c \ - RICserviceQuery.c \ - AMFName.c \ - Cause.c \ - CauseE2node.c \ - CauseMisc.c \ - CauseProtocol.c \ - CauseRICrequest.c \ - CauseRICservice.c \ - CauseTransport.c \ - CriticalityDiagnostics.c \ - CriticalityDiagnostics-IE-List.c \ - CriticalityDiagnostics-IE-Item.c \ - E2nodeComponentConfiguration.c \ - E2nodeComponentConfigurationAck.c \ - E2nodeComponentInterfaceType.c \ - E2nodeComponentID.c \ - E2nodeComponentInterfaceE1.c \ - E2nodeComponentInterfaceF1.c \ - E2nodeComponentInterfaceNG.c \ - E2nodeComponentInterfaceS1.c \ - E2nodeComponentInterfaceX2.c \ - E2nodeComponentInterfaceXn.c \ - E2nodeComponentInterfaceW1.c \ - ENB-ID.c \ - ENB-ID-Choice.c \ - ENGNB-ID.c \ - GlobalE2node-ID.c \ - GlobalE2node-en-gNB-ID.c \ - GlobalE2node-eNB-ID.c \ - GlobalE2node-gNB-ID.c \ - GlobalE2node-ng-eNB-ID.c \ - GlobalENB-ID.c \ - GlobalenGNB-ID.c \ - GlobalgNB-ID.c \ - GlobalngeNB-ID.c \ - GlobalNG-RANNode-ID.c \ - GlobalRIC-ID.c \ - GNB-CU-UP-ID.c \ - GNB-DU-ID.c \ - GNB-ID-Choice.c \ - MMEname.c \ - NGENB-DU-ID.c \ - PLMN-Identity.c \ - RANfunctionDefinition.c \ - RANfunctionID.c \ - RANfunctionOID.c \ - RANfunctionRevision.c \ - RICactionDefinition.c \ - RICactionID.c \ - RICactionType.c \ - RICcallProcessID.c \ - RICcontrolAckRequest.c \ - RICcontrolHeader.c \ - RICcontrolMessage.c \ - RICcontrolOutcome.c \ - RICeventTriggerDefinition.c \ - RICindicationHeader.c \ - RICindicationMessage.c \ - RICindicationSN.c \ - RICindicationType.c \ - RICrequestID.c \ - RICsubsequentAction.c \ - RICsubsequentActionType.c \ - RICtimeToWait.c \ - TimeToWait.c \ - TNLinformation.c \ - TNLusage.c \ - TransactionID.c \ - TypeOfError.c \ - Criticality.c \ - Presence.c \ - ProcedureCode.c \ - ProtocolIE-ID.c \ - TriggeringMessage.c \ - ProtocolIE-Container.c \ - ProtocolIE-SingleContainer.c \ - ProtocolIE-Field.c \ - ProtocolIE-ContainerPair.c \ - ProtocolIE-FieldPair.c \ - ProtocolIE-ContainerList.c \ - ProtocolIE-ContainerPairList.c - -ASN_MODULE_HDRS= \ - E2AP-PDU.h \ - InitiatingMessage.h \ - SuccessfulOutcome.h \ - UnsuccessfulOutcome.h \ - RICsubscriptionRequest.h \ - RICsubscriptionDetails.h \ - RICactions-ToBeSetup-List.h \ - RICaction-ToBeSetup-Item.h \ - RICsubscriptionResponse.h \ - RICaction-Admitted-List.h \ - RICaction-Admitted-Item.h \ - RICaction-NotAdmitted-List.h \ - RICaction-NotAdmitted-Item.h \ - RICsubscriptionFailure.h \ - RICsubscriptionDeleteRequest.h \ - RICsubscriptionDeleteResponse.h \ - RICsubscriptionDeleteFailure.h \ - RICsubscriptionDeleteRequired.h \ - RICsubscription-List-withCause.h \ - RICsubscription-withCause-Item.h \ - RICindication.h \ - RICcontrolRequest.h \ - RICcontrolAcknowledge.h \ - RICcontrolFailure.h \ - ErrorIndication.h \ - E2setupRequest.h \ - E2setupResponse.h \ - E2setupFailure.h \ - E2connectionUpdate.h \ - E2connectionUpdate-List.h \ - E2connectionUpdate-Item.h \ - E2connectionUpdateRemove-List.h \ - E2connectionUpdateRemove-Item.h \ - E2connectionUpdateAcknowledge.h \ - E2connectionSetupFailed-List.h \ - E2connectionSetupFailed-Item.h \ - E2connectionUpdateFailure.h \ - E2nodeConfigurationUpdate.h \ - E2nodeComponentConfigAddition-List.h \ - E2nodeComponentConfigAddition-Item.h \ - E2nodeComponentConfigUpdate-List.h \ - E2nodeComponentConfigUpdate-Item.h \ - E2nodeComponentConfigRemoval-List.h \ - E2nodeComponentConfigRemoval-Item.h \ - E2nodeTNLassociationRemoval-List.h \ - E2nodeTNLassociationRemoval-Item.h \ - E2nodeConfigurationUpdateAcknowledge.h \ - E2nodeComponentConfigAdditionAck-List.h \ - E2nodeComponentConfigAdditionAck-Item.h \ - E2nodeComponentConfigUpdateAck-List.h \ - E2nodeComponentConfigUpdateAck-Item.h \ - E2nodeComponentConfigRemovalAck-List.h \ - E2nodeComponentConfigRemovalAck-Item.h \ - E2nodeConfigurationUpdateFailure.h \ - ResetRequest.h \ - ResetResponse.h \ - RICserviceUpdate.h \ - RANfunctions-List.h \ - RANfunction-Item.h \ - RANfunctionsID-List.h \ - RANfunctionID-Item.h \ - RICserviceUpdateAcknowledge.h \ - RANfunctionsIDcause-List.h \ - RANfunctionIDcause-Item.h \ - RICserviceUpdateFailure.h \ - RICserviceQuery.h \ - AMFName.h \ - Cause.h \ - CauseE2node.h \ - CauseMisc.h \ - CauseProtocol.h \ - CauseRICrequest.h \ - CauseRICservice.h \ - CauseTransport.h \ - CriticalityDiagnostics.h \ - CriticalityDiagnostics-IE-List.h \ - CriticalityDiagnostics-IE-Item.h \ - E2nodeComponentConfiguration.h \ - E2nodeComponentConfigurationAck.h \ - E2nodeComponentInterfaceType.h \ - E2nodeComponentID.h \ - E2nodeComponentInterfaceE1.h \ - E2nodeComponentInterfaceF1.h \ - E2nodeComponentInterfaceNG.h \ - E2nodeComponentInterfaceS1.h \ - E2nodeComponentInterfaceX2.h \ - E2nodeComponentInterfaceXn.h \ - E2nodeComponentInterfaceW1.h \ - ENB-ID.h \ - ENB-ID-Choice.h \ - ENGNB-ID.h \ - GlobalE2node-ID.h \ - GlobalE2node-en-gNB-ID.h \ - GlobalE2node-eNB-ID.h \ - GlobalE2node-gNB-ID.h \ - GlobalE2node-ng-eNB-ID.h \ - GlobalENB-ID.h \ - GlobalenGNB-ID.h \ - GlobalgNB-ID.h \ - GlobalngeNB-ID.h \ - GlobalNG-RANNode-ID.h \ - GlobalRIC-ID.h \ - GNB-CU-UP-ID.h \ - GNB-DU-ID.h \ - GNB-ID-Choice.h \ - MMEname.h \ - NGENB-DU-ID.h \ - PLMN-Identity.h \ - RANfunctionDefinition.h \ - RANfunctionID.h \ - RANfunctionOID.h \ - RANfunctionRevision.h \ - RICactionDefinition.h \ - RICactionID.h \ - RICactionType.h \ - RICcallProcessID.h \ - RICcontrolAckRequest.h \ - RICcontrolHeader.h \ - RICcontrolMessage.h \ - RICcontrolOutcome.h \ - RICeventTriggerDefinition.h \ - RICindicationHeader.h \ - RICindicationMessage.h \ - RICindicationSN.h \ - RICindicationType.h \ - RICrequestID.h \ - RICsubsequentAction.h \ - RICsubsequentActionType.h \ - RICtimeToWait.h \ - TimeToWait.h \ - TNLinformation.h \ - TNLusage.h \ - TransactionID.h \ - TypeOfError.h \ - Criticality.h \ - Presence.h \ - ProcedureCode.h \ - ProtocolIE-ID.h \ - TriggeringMessage.h \ - ProtocolIE-Container.h \ - ProtocolIE-SingleContainer.h \ - ProtocolIE-Field.h \ - ProtocolIE-ContainerPair.h \ - ProtocolIE-FieldPair.h \ - ProtocolIE-ContainerList.h \ - ProtocolIE-ContainerPairList.h - -ASN_MODULE_HDRS+=ANY.h -ASN_MODULE_SRCS+=ANY.c -ASN_MODULE_HDRS+=OCTET_STRING.h -ASN_MODULE_HDRS+=OPEN_TYPE.h -ASN_MODULE_SRCS+=OPEN_TYPE.c -ASN_MODULE_HDRS+=constr_CHOICE.h -ASN_MODULE_HDRS+=INTEGER.h -ASN_MODULE_SRCS+=INTEGER.c -ASN_MODULE_HDRS+=NativeEnumerated.h -ASN_MODULE_SRCS+=NativeEnumerated.c -ASN_MODULE_HDRS+=NativeInteger.h -ASN_MODULE_SRCS+=NativeInteger.c -ASN_MODULE_HDRS+=PrintableString.h -ASN_MODULE_SRCS+=PrintableString.c -ASN_MODULE_HDRS+=asn_SEQUENCE_OF.h -ASN_MODULE_SRCS+=asn_SEQUENCE_OF.c -ASN_MODULE_HDRS+=asn_SET_OF.h -ASN_MODULE_SRCS+=asn_SET_OF.c -ASN_MODULE_SRCS+=constr_CHOICE.c -ASN_MODULE_HDRS+=constr_SEQUENCE.h -ASN_MODULE_SRCS+=constr_SEQUENCE.c -ASN_MODULE_HDRS+=constr_SEQUENCE_OF.h -ASN_MODULE_SRCS+=constr_SEQUENCE_OF.c -ASN_MODULE_HDRS+=constr_SET_OF.h -ASN_MODULE_SRCS+=constr_SET_OF.c -ASN_MODULE_HDRS+=asn_application.h -ASN_MODULE_SRCS+=asn_application.c -ASN_MODULE_HDRS+=asn_ioc.h -ASN_MODULE_HDRS+=asn_system.h -ASN_MODULE_HDRS+=asn_codecs.h -ASN_MODULE_HDRS+=asn_internal.h -ASN_MODULE_SRCS+=asn_internal.c -ASN_MODULE_HDRS+=asn_random_fill.h -ASN_MODULE_SRCS+=asn_random_fill.c -ASN_MODULE_HDRS+=asn_bit_data.h -ASN_MODULE_SRCS+=asn_bit_data.c -ASN_MODULE_SRCS+=OCTET_STRING.c -ASN_MODULE_HDRS+=BIT_STRING.h -ASN_MODULE_SRCS+=BIT_STRING.c -ASN_MODULE_SRCS+=asn_codecs_prim.c -ASN_MODULE_HDRS+=asn_codecs_prim.h -ASN_MODULE_HDRS+=ber_tlv_length.h -ASN_MODULE_SRCS+=ber_tlv_length.c -ASN_MODULE_HDRS+=ber_tlv_tag.h -ASN_MODULE_SRCS+=ber_tlv_tag.c -ASN_MODULE_HDRS+=ber_decoder.h -ASN_MODULE_SRCS+=ber_decoder.c -ASN_MODULE_HDRS+=der_encoder.h -ASN_MODULE_SRCS+=der_encoder.c -ASN_MODULE_HDRS+=constr_TYPE.h -ASN_MODULE_SRCS+=constr_TYPE.c -ASN_MODULE_HDRS+=constraints.h -ASN_MODULE_SRCS+=constraints.c -ASN_MODULE_HDRS+=xer_support.h -ASN_MODULE_SRCS+=xer_support.c -ASN_MODULE_HDRS+=xer_decoder.h -ASN_MODULE_SRCS+=xer_decoder.c -ASN_MODULE_HDRS+=xer_encoder.h -ASN_MODULE_SRCS+=xer_encoder.c -ASN_MODULE_HDRS+=per_support.h -ASN_MODULE_SRCS+=per_support.c -ASN_MODULE_HDRS+=per_decoder.h -ASN_MODULE_SRCS+=per_decoder.c -ASN_MODULE_HDRS+=per_encoder.h -ASN_MODULE_SRCS+=per_encoder.c -ASN_MODULE_HDRS+=per_opentype.h -ASN_MODULE_SRCS+=per_opentype.c - -ASN_MODULE_CFLAGS=-DASN_DISABLE_OER_SUPPORT - -lib_LTLIBRARIES+=libasncodec.la -libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) -libasncodec_la_CPPFLAGS=-I$(top_srcdir)/ -libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) -libasncodec_la_LDFLAGS=-lm diff --git a/e2sim/src/ASN1c/NGENB-DU-ID.c b/e2sim/src/ASN1c/NGENB-DU-ID.c deleted file mode 100644 index 7842307..0000000 --- a/e2sim/src/ASN1c/NGENB-DU-ID.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "NGENB-DU-ID.h" - -int -NGENB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(asn_INTEGER2long(st, &value)) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value too large (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((value >= 0 && value <= 68719476735)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using INTEGER, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_NGENB_DU_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_NGENB_DU_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_NGENB_DU_ID = { - "NGENB-DU-ID", - "NGENB-DU-ID", - &asn_OP_INTEGER, - asn_DEF_NGENB_DU_ID_tags_1, - sizeof(asn_DEF_NGENB_DU_ID_tags_1) - /sizeof(asn_DEF_NGENB_DU_ID_tags_1[0]), /* 1 */ - asn_DEF_NGENB_DU_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_NGENB_DU_ID_tags_1) - /sizeof(asn_DEF_NGENB_DU_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_NGENB_DU_ID_constr_1, NGENB_DU_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/NGENB-DU-ID.h b/e2sim/src/ASN1c/NGENB-DU-ID.h deleted file mode 100644 index cb33684..0000000 --- a/e2sim/src/ASN1c/NGENB-DU-ID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _NGENB_DU_ID_H_ -#define _NGENB_DU_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "INTEGER.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* NGENB-DU-ID */ -typedef INTEGER_t NGENB_DU_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_NGENB_DU_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_NGENB_DU_ID; -asn_struct_free_f NGENB_DU_ID_free; -asn_struct_print_f NGENB_DU_ID_print; -asn_constr_check_f NGENB_DU_ID_constraint; -ber_type_decoder_f NGENB_DU_ID_decode_ber; -der_type_encoder_f NGENB_DU_ID_encode_der; -xer_type_decoder_f NGENB_DU_ID_decode_xer; -xer_type_encoder_f NGENB_DU_ID_encode_xer; -per_type_decoder_f NGENB_DU_ID_decode_uper; -per_type_encoder_f NGENB_DU_ID_encode_uper; -per_type_decoder_f NGENB_DU_ID_decode_aper; -per_type_encoder_f NGENB_DU_ID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _NGENB_DU_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/NativeEnumerated.c b/e2sim/src/ASN1c/NativeEnumerated.c deleted file mode 100644 index 50ffb1d..0000000 --- a/e2sim/src/ASN1c/NativeEnumerated.c +++ /dev/null @@ -1,367 +0,0 @@ -/*- - * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeEnumerated basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeEnumerated = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeEnumerated_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeEnumerated_decode_oer, - NativeEnumerated_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeEnumerated_decode_uper, - NativeEnumerated_encode_uper, - NativeEnumerated_decode_aper, - NativeEnumerated_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeEnumerated_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { - "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ - "ENUMERATED", - &asn_OP_NativeEnumerated, - asn_DEF_NativeEnumerated_tags, - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - asn_DEF_NativeEnumerated_tags, /* Same as above */ - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -asn_enc_rval_t -NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - const asn_INTEGER_enum_map_t *el; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - el = INTEGER_map_value2enum(specs, *native); - if(el) { - er.encoded = - asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); - if(er.encoded < 0) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } else { - ASN_DEBUG( - "ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - long *native = (long *)*sptr; - const asn_per_constraint_t *ct = NULL; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -static int -NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { - const asn_INTEGER_enum_map_t *a = ap; - const asn_INTEGER_enum_map_t *b = bp; - if(a->nat_value == b->nat_value) - return 0; - if(a->nat_value < b->nat_value) - return -1; - return 1; -} - -asn_enc_rval_t -NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct = NULL; - int inext = 0; - asn_INTEGER_enum_map_t key; - const asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct && ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct && 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 = NULL; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__DECODE_FAILED; /* Mandatory! */ - if(!specs) ASN__DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) ASN__DECODE_STARVED; - if(inext) ct = 0; - } - - /* Deal with APER padding */ - if(ct && ct->upper_bound >= 255) { - int padding = 0; - padding = (8 - (pd->moved % 8)) % 8; - ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); - ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); - if(padding > 0) - per_get_few_bits(pd, padding); - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - ASN__DECODE_FAILED; - } else { - if(!specs->extension) - ASN__DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - ASN__DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -asn_enc_rval_t -NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native, value; - const asn_per_constraint_t *ct = NULL; - int inext = 0; - asn_INTEGER_enum_map_t key; - asn_INTEGER_enum_map_t *kf; - - if(!sptr) ASN__ENCODE_FAILED; - if(!specs) ASN__ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ASN__ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(const long *)sptr; - if(native < 0) ASN__ENCODE_FAILED; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - ASN__ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct && ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct && 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/e2sim/src/ASN1c/NativeEnumerated.h b/e2sim/src/ASN1c/NativeEnumerated.h deleted file mode 100644 index 459f0e6..0000000 --- a/e2sim/src/ASN1c/NativeEnumerated.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/NativeInteger.c b/e2sim/src/ASN1c/NativeInteger.c deleted file mode 100644 index 316e872..0000000 --- a/e2sim/src/ASN1c/NativeInteger.c +++ /dev/null @@ -1,550 +0,0 @@ -/*- - * Copyright (c) 2004, 2005, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeInteger basic type description. - */ -static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_operation_t asn_OP_NativeInteger = { - NativeInteger_free, - NativeInteger_print, - NativeInteger_compare, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeInteger_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - NativeInteger_decode_oer, /* OER decoder */ - NativeInteger_encode_oer, /* Canonical OER encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - NativeInteger_decode_uper, /* Unaligned PER decoder */ - NativeInteger_encode_uper, /* Unaligned PER encoder */ - NativeInteger_decode_aper, /* Aligned PER decoder */ - NativeInteger_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - NativeInteger_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_NativeInteger = { - "INTEGER", /* The ASN.1 type is still INTEGER */ - "INTEGER", - &asn_OP_NativeInteger, - asn_DEF_NativeInteger_tags, - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - asn_DEF_NativeInteger_tags, /* Same as above */ - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Decode INTEGER type. - */ -asn_dec_rval_t -NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **nint_ptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - long *native = (long *)*nint_ptr; - asn_dec_rval_t rval; - ber_tlv_len_t length; - - /* - * If the structure is not there, allocate it. - */ - if(native == NULL) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(native == NULL) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - } - - ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", - td->name, tag_mode); - - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - /* - * ASN.1 encoded INTEGER: buf_ptr, length - * Fill the native, at the same time checking for overflow. - * If overflow occured, return with RC_FAIL. - */ - { - INTEGER_t tmp; - union { - const void *constbuf; - void *nonconstbuf; - } unconst_buf; - long l; - - unconst_buf.constbuf = buf_ptr; - tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; - tmp.size = length; - - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&tmp, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - - *native = l; - } - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", - (long)rval.consumed, (long)length, td->name, (long)*native); - - return rval; -} - -/* - * Encode the NativeInteger using the standard INTEGER type DER encoder. - */ -asn_enc_rval_t -NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ - asn_enc_rval_t erval = {0,0,0}; - INTEGER_t tmp; - -#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ - - tmp.buf = (uint8_t *)&native; - tmp.size = sizeof(native); - -#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ - uint8_t buf[sizeof(native)]; - uint8_t *p; - - /* Prepare a fake INTEGER */ - for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) - *p = (uint8_t)native; - - tmp.buf = buf; - tmp.size = sizeof(buf); -#endif /* WORDS_BIGENDIAN */ - - /* Encode fake INTEGER */ - erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); - if(erval.structure_ptr == &tmp) { - erval.structure_ptr = ptr; - } - return erval; -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -asn_dec_rval_t -NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - INTEGER_t st; - void *st_ptr = (void *)&st; - long *native = (long *)*sptr; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&st, 0, sizeof(st)); - rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, - opt_mname, buf_ptr, size); - if(rval.code == RC_OK) { - long l; - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&st, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - } else { - *native = l; - } - } else { - /* - * Cannot restart from the middle; - * there is no place to save state in the native type. - * Request a continuation from the very beginning. - */ - rval.consumed = 0; - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); - return rval; -} - - -asn_enc_rval_t -NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; /* Enough for 64-bit int */ - asn_enc_rval_t er = {0,0,0}; - const long *native = (const long *)sptr; - - (void)ilevel; - (void)flags; - - if(!native) ASN__ENCODE_FAILED; - - er.encoded = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) - ? "%lu" : "%ld", *native); - if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) - || cb(scratch, er.encoded, app_key) < 0) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_uper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -asn_dec_rval_t -NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) ASN__DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - long native; - INTEGER_t tmpint; - - if(!sptr) ASN__ENCODE_FAILED; - - native = *(const long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) - : asn_long2INTEGER(&tmpint, native)) - ASN__ENCODE_FAILED; - er = INTEGER_encode_aper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -/* - * INTEGER specific human-readable output. - */ -int -NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - const long *native = (const long *)sptr; - char scratch[32]; /* Enough for 64-bit int */ - int ret; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(native) { - long value = *native; - ret = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) ? "%lu" : "%ld", value); - assert(ret > 0 && (size_t)ret < sizeof(scratch)); - if(cb(scratch, ret, app_key) < 0) return -1; - if(specs && (value >= 0 || !specs->field_unsigned)) { - const asn_INTEGER_enum_map_t *el = - INTEGER_map_value2enum(specs, value); - if(el) { - if(cb(" (", 2, app_key) < 0) return -1; - if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; - if(cb(")", 1, app_key) < 0) return -1; - } - } - return 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", - td->name, method, ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, sizeof(long)); - break; - } -} - -int -NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - (void)td; - - if(aptr && bptr) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - if(specs && specs->field_unsigned) { - const unsigned long *a = aptr; - const unsigned long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } else { - const long *a = aptr; - const long *b = bptr; - if(*a < *b) { - return -1; - } else if(*a > *b) { - return 1; - } else { - return 0; - } - } - } else if(!aptr) { - return -1; - } else { - return 1; - } -} - -asn_random_fill_result_t -NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_INTEGER_specifics_t *specs = - (const asn_INTEGER_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - long *st = *sptr; - const asn_INTEGER_enum_map_t *emap; - size_t emap_len; - intmax_t value; - int find_inside_map; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (long *)CALLOC(1, sizeof(*st)); - if(st == NULL) { - return result_failed; - } - } - - if(specs) { - emap = specs->value2enum; - emap_len = specs->map_count; - if(specs->strict_enumeration) { - find_inside_map = emap_len > 0; - } else { - find_inside_map = emap_len ? asn_random_between(0, 1) : 0; - } - } else { - emap = 0; - emap_len = 0; - find_inside_map = 0; - } - - if(find_inside_map) { - assert(emap_len > 0); - value = emap[asn_random_between(0, emap_len - 1)].nat_value; - } else { - const asn_per_constraints_t *ct; - - static const long variants[] = { - -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, - -16383, -257, -256, -255, -254, -129, -128, -127, - -126, -1, 0, 1, 126, 127, 128, 129, - 254, 255, 256, 257, 16383, 16384, 16385, 32767, - 32768, 32769, 65534, 65535, 65536, 65537}; - if(specs && specs->field_unsigned) { - assert(variants[18] == 0); - value = variants[asn_random_between( - 18, sizeof(variants) / sizeof(variants[0]) - 1)]; - } else { - value = variants[asn_random_between( - 0, sizeof(variants) / sizeof(variants[0]) - 1)]; - } - - if(!constraints) constraints = &td->encoding_constraints; - ct = constraints ? constraints->per_constraints : 0; - if(ct && (ct->value.flags & APC_CONSTRAINED)) { - if(value < ct->value.lower_bound || value > ct->value.upper_bound) { - value = asn_random_between(ct->value.lower_bound, - ct->value.upper_bound); - } - } - } - - *sptr = st; - *st = value; - return result_ok; -} diff --git a/e2sim/src/ASN1c/NativeInteger.h b/e2sim/src/ASN1c/NativeInteger.h deleted file mode 100644 index c74406a..0000000 --- a/e2sim/src/ASN1c/NativeInteger.h +++ /dev/null @@ -1,46 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/OCTET_STRING.c b/e2sim/src/ASN1c/OCTET_STRING.c deleted file mode 100644 index ae34c96..0000000 --- a/e2sim/src/ASN1c/OCTET_STRING.c +++ /dev/null @@ -1,2411 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* for .bits_unused member */ -#include - -/* - * OCTET STRING basic type description. - */ -static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { - sizeof(OCTET_STRING_t), - offsetof(OCTET_STRING_t, _asn_ctx), - ASN_OSUBV_STR -}; - -asn_TYPE_operation_t asn_OP_OCTET_STRING = { - OCTET_STRING_free, - OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ - OCTET_STRING_compare, - OCTET_STRING_decode_ber, - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_hex, - OCTET_STRING_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - OCTET_STRING_decode_oer, - OCTET_STRING_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - OCTET_STRING_decode_uper, /* Unaligned PER decoder */ - OCTET_STRING_encode_uper, /* Unaligned PER encoder */ - OCTET_STRING_decode_aper, /* Aligned PER decoder */ - OCTET_STRING_encode_aper, /* Aligned PER encoder */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - OCTET_STRING_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; -asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { - "OCTET STRING", /* Canonical name */ - "OCTET_STRING", /* XML tag name */ - &asn_OP_OCTET_STRING, - asn_DEF_OCTET_STRING_tags, - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - asn_DEF_OCTET_STRING_tags, /* Same as above */ - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - { 0, 0, asn_generic_no_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs -}; - -#undef _CH_PHASE -#undef NEXT_PHASE -#undef PREV_PHASE -#define _CH_PHASE(ctx, inc) do { \ - if(ctx->phase == 0) \ - ctx->context = 0; \ - ctx->phase += inc; \ - } while(0) -#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) -#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -#undef APPEND -#define APPEND(bufptr, bufsize) do { \ - size_t _bs = (bufsize); /* Append size */ \ - size_t _ns = ctx->context; /* Allocated now */ \ - size_t _es = st->size + _bs; /* Expected size */ \ - /* int is really a typeof(st->size): */ \ - if((int)_es < 0) RETURN(RC_FAIL); \ - if(_ns <= _es) { \ - void *ptr; \ - /* Be nice and round to the memory allocator */ \ - do { _ns = _ns ? _ns << 1 : 16; } \ - while(_ns <= _es); \ - /* int is really a typeof(st->size): */ \ - if((int)_ns < 0) RETURN(RC_FAIL); \ - ptr = REALLOC(st->buf, _ns); \ - if(ptr) { \ - st->buf = (uint8_t *)ptr; \ - ctx->context = _ns; \ - } else { \ - RETURN(RC_FAIL); \ - } \ - ASN_DEBUG("Reallocating into %ld", (long)_ns); \ - } \ - memcpy(st->buf + st->size, bufptr, _bs); \ - /* Convenient nul-termination */ \ - st->buf[_es] = '\0'; \ - st->size = _es; \ - } while(0) - -/* - * The main reason why ASN.1 is still alive is that too much time and effort - * is necessary for learning it more or less adequately, thus creating a gut - * necessity to demonstrate that aquired skill everywhere afterwards. - * No, I am not going to explain what the following stuff is. - */ -struct _stack_el { - ber_tlv_len_t left; /* What's left to read (or -1) */ - ber_tlv_len_t got; /* What was actually processed */ - unsigned cont_level; /* Depth of subcontainment */ - int want_nulls; /* Want null "end of content" octets? */ - int bits_chopped; /* Flag in BIT STRING mode */ - ber_tlv_tag_t tag; /* For debugging purposes */ - struct _stack_el *prev; - struct _stack_el *next; -}; -struct _stack { - struct _stack_el *tail; - struct _stack_el *cur_ptr; -}; - -static struct _stack_el * -OS__add_stack_el(struct _stack *st) { - struct _stack_el *nel; - - /* - * Reuse the old stack frame or allocate a new one. - */ - if(st->cur_ptr && st->cur_ptr->next) { - nel = st->cur_ptr->next; - nel->bits_chopped = 0; - nel->got = 0; - /* Retain the nel->cont_level, it's correct. */ - } else { - nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); - if(nel == NULL) - return NULL; - - if(st->tail) { - /* Increase a subcontainment depth */ - nel->cont_level = st->tail->cont_level + 1; - st->tail->next = nel; - } - nel->prev = st->tail; - st->tail = nel; - } - - st->cur_ptr = nel; - - return nel; -} - -static struct _stack * -_new_stack(void) { - return (struct _stack *)CALLOC(1, sizeof(struct _stack)); -} - -/* - * Decode OCTET STRING type. - */ -asn_dec_rval_t -OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - asn_dec_rval_t rval; - asn_struct_ctx_t *ctx; - ssize_t consumed_myself = 0; - struct _stack *stck; /* Expectations stack structure */ - struct _stack_el *sel = 0; /* Stack element */ - int tlv_constr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - - ASN_DEBUG("Decoding %s as %s (frame %ld)", - td->name, - (type_variant == ASN_OSUBV_STR) ? - "OCTET STRING" : "OS-SpecialCase", - (long)size); - - /* - * Create the string if does not exist. - */ - if(st == NULL) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) RETURN(RC_FAIL); - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - switch(ctx->phase) { - case 0: - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, ctx, - buf_ptr, size, tag_mode, -1, - &ctx->left, &tlv_constr); - if(rval.code != RC_OK) - return rval; - - if(tlv_constr) { - /* - * Complex operation, requires stack of expectations. - */ - ctx->ptr = _new_stack(); - if(!ctx->ptr) { - RETURN(RC_FAIL); - } - } else { - /* - * Jump into stackless primitive decoding. - */ - _CH_PHASE(ctx, 3); - if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) - APPEND(buf_ptr, rval.consumed); - ADVANCE(rval.consumed); - goto phase3; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - phase1: - /* - * Fill the stack with expectations. - */ - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - do { - ber_tlv_tag_t tlv_tag; - ber_tlv_len_t tlv_len; - ber_tlv_tag_t expected_tag; - ssize_t tl, ll, tlvl; - /* This one works even if (sel->left == -1) */ - size_t Left = ((!sel||(size_t)sel->left >= size) - ?size:(size_t)sel->left); - - - ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)(sel?sel->got:0) - ); - if(sel && sel->left <= 0 && sel->want_nulls == 0) { - if(sel->prev) { - struct _stack_el *prev = sel->prev; - if(prev->left != -1) { - if(prev->left < sel->got) - RETURN(RC_FAIL); - prev->left -= sel->got; - } - prev->got += sel->got; - sel = stck->cur_ptr = prev; - if(!sel) break; - tlv_constr = 1; - continue; - } else { - sel = stck->cur_ptr = 0; - break; /* Nothing to wait */ - } - } - - tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); - ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", - (long)size, (long)Left, sel?"":"!", - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)tl); - switch(tl) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); - - ll = ber_fetch_length(tlv_constr, - (const char *)buf_ptr + tl,Left - tl,&tlv_len); - ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", - ber_tlv_tag_string(tlv_tag), tlv_constr, - (long)Left, (long)tl, (long)tlv_len, (long)ll); - switch(ll) { - case -1: RETURN(RC_FAIL); - case 0: RETURN(RC_WMORE); - } - - if(sel && sel->want_nulls - && ((const uint8_t *)buf_ptr)[0] == 0 - && ((const uint8_t *)buf_ptr)[1] == 0) - { - - ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); - - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND("\0\0", 2); - - ADVANCE(2); - sel->got += 2; - if(sel->left != -1) { - sel->left -= 2; /* assert(sel->left >= 2) */ - } - - sel->want_nulls--; - if(sel->want_nulls == 0) { - /* Move to the next expectation */ - sel->left = 0; - tlv_constr = 1; - } - - continue; - } - - /* - * Set up expected tags, - * depending on ASN.1 type being decoded. - */ - switch(type_variant) { - case ASN_OSUBV_BIT: - /* X.690: 8.6.4.1, NOTE 2 */ - /* Fall through */ - case ASN_OSUBV_STR: - default: - if(sel) { - unsigned level = sel->cont_level; - if(level < td->all_tags_count) { - expected_tag = td->all_tags[level]; - break; - } else if(td->all_tags_count) { - expected_tag = td->all_tags - [td->all_tags_count - 1]; - break; - } - /* else, Fall through */ - } - /* Fall through */ - case ASN_OSUBV_ANY: - expected_tag = tlv_tag; - break; - } - - - if(tlv_tag != expected_tag) { - char buf[2][32]; - ber_tlv_tag_snprint(tlv_tag, - buf[0], sizeof(buf[0])); - ber_tlv_tag_snprint(td->tags[td->tags_count-1], - buf[1], sizeof(buf[1])); - ASN_DEBUG("Tag does not match expectation: %s != %s", - buf[0], buf[1]); - RETURN(RC_FAIL); - } - - tlvl = tl + ll; /* Combined length of T and L encoding */ - if((tlv_len + tlvl) < 0) { - /* tlv_len value is too big */ - ASN_DEBUG("TLV encoding + length (%ld) is too big", - (long)tlv_len); - RETURN(RC_FAIL); - } - - /* - * Append a new expectation. - */ - sel = OS__add_stack_el(stck); - if(!sel) RETURN(RC_FAIL); - - sel->tag = tlv_tag; - - sel->want_nulls = (tlv_len==-1); - if(sel->prev && sel->prev->left != -1) { - /* Check that the parent frame is big enough */ - if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) - RETURN(RC_FAIL); - if(tlv_len == -1) - sel->left = sel->prev->left - tlvl; - else - sel->left = tlv_len; - } else { - sel->left = tlv_len; - } - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND(buf_ptr, tlvl); - sel->got += tlvl; - ADVANCE(tlvl); - - ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", - (long)sel->got, (long)sel->left, - sel->want_nulls, sel->cont_level); - - } while(tlv_constr); - if(sel == NULL) { - /* Finished operation, "phase out" */ - ASN_DEBUG("Phase out"); - _CH_PHASE(ctx, +3); - break; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 2: - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", - (long)sel->left, (long)size, (long)sel->got, - sel->want_nulls); - { - ber_tlv_len_t len; - - assert(sel->left >= 0); - - len = ((ber_tlv_len_t)size < sel->left) - ? (ber_tlv_len_t)size : sel->left; - if(len > 0) { - if(type_variant == ASN_OSUBV_BIT - && sel->bits_chopped == 0) { - /* Put the unused-bits-octet away */ - st->bits_unused = *(const uint8_t *)buf_ptr; - APPEND(((const char *)buf_ptr+1), (len - 1)); - sel->bits_chopped = 1; - } else { - APPEND(buf_ptr, len); - } - ADVANCE(len); - sel->left -= len; - sel->got += len; - } - - if(sel->left) { - ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", - (long)sel->left, (long)size, sel->want_nulls); - RETURN(RC_WMORE); - } - - PREV_PHASE(ctx); - goto phase1; - } - break; - case 3: - phase3: - /* - * Primitive form, no stack required. - */ - assert(ctx->left >= 0); - - if(size < (size_t)ctx->left) { - if(!size) RETURN(RC_WMORE); - if(type_variant == ASN_OSUBV_BIT && !ctx->context) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, size); - assert(ctx->context > 0); - ctx->left -= size; - ADVANCE(size); - RETURN(RC_WMORE); - } else { - if(type_variant == ASN_OSUBV_BIT - && !ctx->context && ctx->left) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, ctx->left); - ADVANCE(ctx->left); - ctx->left = 0; - - NEXT_PHASE(ctx); - } - break; - } - - if(sel) { - ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", - (void *)sel->prev, sel->want_nulls, - (long)sel->left, (long)sel->got, (long)size); - if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { - RETURN(RC_WMORE); - } - } - - /* - * BIT STRING-specific processing. - */ - if(type_variant == ASN_OSUBV_BIT) { - if(st->size) { - if(st->bits_unused < 0 || st->bits_unused > 7) { - RETURN(RC_FAIL); - } - /* Finalize BIT STRING: zero out unused bits. */ - st->buf[st->size-1] &= 0xff << st->bits_unused; - } else { - if(st->bits_unused) { - RETURN(RC_FAIL); - } - } - } - - ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", - (long)consumed_myself, td->name, - (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", - (long)st->size); - - - RETURN(RC_OK); -} - -/* - * Encode OCTET STRING type using DER. - */ -asn_enc_rval_t -OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = { 0, 0, 0 }; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - int fix_last_byte = 0; - - ASN_DEBUG("%s %s as OCTET STRING", - cb?"Estimating":"Encoding", td->name); - - /* - * Write tags. - */ - if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { - er.encoded = der_write_tags(td, - (type_variant == ASN_OSUBV_BIT) + st->size, - tag_mode, type_variant == ASN_OSUBV_ANY, tag, - cb, app_key); - if(er.encoded == -1) { - er.failed_type = td; - er.structure_ptr = sptr; - return er; - } - } else { - /* Disallow: [] IMPLICIT ANY */ - assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); - er.encoded = 0; - } - - if(!cb) { - er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; - ASN__ENCODED_OK(er); - } - - /* - * Prepare to deal with the last octet of BIT STRING. - */ - if(type_variant == ASN_OSUBV_BIT) { - uint8_t b = st->bits_unused & 0x07; - if(b && st->size) fix_last_byte = 1; - ASN__CALLBACK(&b, 1); - } - - /* Invoke callback for the main part of the buffer */ - ASN__CALLBACK(st->buf, st->size - fix_last_byte); - - /* The last octet should be stripped off the unused bits */ - if(fix_last_byte) { - uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); - ASN__CALLBACK(&b, 1); - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_enc_rval_t -OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const char * const h2c = "0123456789ABCDEF"; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - char scratch[16 * 3 + 4]; - char *p = scratch; - uint8_t *buf; - uint8_t *end; - size_t i; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - /* - * Dump the contents of the buffer in hexadecimal. - */ - buf = st->buf; - end = buf + st->size; - if(flags & XER_F_CANONICAL) { - char *scend = scratch + (sizeof(scratch) - 2); - for(; buf < end; buf++) { - if(p >= scend) { - ASN__CALLBACK(scratch, p - scratch); - p = scratch; - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - } - - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - } else { - for(i = 0; buf < end; buf++, i++) { - if(!(i % 16) && (i || st->size > 16)) { - ASN__CALLBACK(scratch, p-scratch); - p = scratch; - ASN__TEXT_INDENT(1, ilevel); - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - if(p - scratch) { - p--; /* Remove the tail space */ - ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ - if(st->size > 16) - ASN__TEXT_INDENT(1, ilevel-1); - } - } - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -static const struct OCTET_STRING__xer_escape_table_s { - const char *string; - int size; -} OCTET_STRING__xer_escape_table[] = { -#define OSXET(s) { s, sizeof(s) - 1 } - OSXET("\074\156\165\154\057\076"), /* */ - OSXET("\074\163\157\150\057\076"), /* */ - OSXET("\074\163\164\170\057\076"), /* */ - OSXET("\074\145\164\170\057\076"), /* */ - OSXET("\074\145\157\164\057\076"), /* */ - OSXET("\074\145\156\161\057\076"), /* */ - OSXET("\074\141\143\153\057\076"), /* */ - OSXET("\074\142\145\154\057\076"), /* */ - OSXET("\074\142\163\057\076"), /* */ - OSXET("\011"), /* \t */ - OSXET("\012"), /* \n */ - OSXET("\074\166\164\057\076"), /* */ - OSXET("\074\146\146\057\076"), /* */ - OSXET("\015"), /* \r */ - OSXET("\074\163\157\057\076"), /* */ - OSXET("\074\163\151\057\076"), /* */ - OSXET("\074\144\154\145\057\076"), /* */ - OSXET("\074\144\143\061\057\076"), /* */ - OSXET("\074\144\143\062\057\076"), /* */ - OSXET("\074\144\143\063\057\076"), /* */ - OSXET("\074\144\143\064\057\076"), /* */ - OSXET("\074\156\141\153\057\076"), /* */ - OSXET("\074\163\171\156\057\076"), /* */ - OSXET("\074\145\164\142\057\076"), /* */ - OSXET("\074\143\141\156\057\076"), /* */ - OSXET("\074\145\155\057\076"), /* */ - OSXET("\074\163\165\142\057\076"), /* */ - OSXET("\074\145\163\143\057\076"), /* */ - OSXET("\074\151\163\064\057\076"), /* */ - OSXET("\074\151\163\063\057\076"), /* */ - OSXET("\074\151\163\062\057\076"), /* */ - OSXET("\074\151\163\061\057\076"), /* */ - { 0, 0 }, /* " " */ - { 0, 0 }, /* ! */ - { 0, 0 }, /* \" */ - { 0, 0 }, /* # */ - { 0, 0 }, /* $ */ - { 0, 0 }, /* % */ - OSXET("\046\141\155\160\073"), /* & */ - { 0, 0 }, /* ' */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ - {0,0},{0,0},{0,0},{0,0}, /* 89:; */ - OSXET("\046\154\164\073"), /* < */ - { 0, 0 }, /* = */ - OSXET("\046\147\164\073"), /* > */ -}; - -static int -OS__check_escaped_control_char(const void *buf, int size) { - size_t i; - /* - * Inefficient algorithm which translates the escape sequences - * defined above into characters. Returns -1 if not found. - * TODO: replace by a faster algorithm (bsearch(), hash or - * nested table lookups). - */ - for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { - const struct OCTET_STRING__xer_escape_table_s *el; - el = &OCTET_STRING__xer_escape_table[i]; - if(el->size == size && memcmp(buf, el->string, size) == 0) - return i; - } - return -1; -} - -static int -OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { - /* - * This might be one of the escape sequences - * for control characters. Check it out. - * #11.15.5 - */ - int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); - if(control_char >= 0) { - OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; - void *p = REALLOC(st->buf, st->size + 2); - if(p) { - st->buf = (uint8_t *)p; - st->buf[st->size++] = control_char; - st->buf[st->size] = '\0'; /* nul-termination */ - return 0; - } - } - - return -1; /* No, it's not */ -} - -asn_enc_rval_t -OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - uint8_t *buf, *end; - uint8_t *ss; /* Sequence start */ - ssize_t encoded_len = 0; - - (void)ilevel; /* Unused argument */ - (void)flags; /* Unused argument */ - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - buf = st->buf; - end = buf + st->size; - for(ss = buf; buf < end; buf++) { - unsigned int ch = *buf; - int s_len; /* Special encoding sequence length */ - - /* - * Escape certain characters: X.680/11.15 - */ - if(ch < sizeof(OCTET_STRING__xer_escape_table) - /sizeof(OCTET_STRING__xer_escape_table[0]) - && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { - if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) - || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, - app_key) < 0) - ASN__ENCODE_FAILED; - encoded_len += (buf - ss) + s_len; - ss = buf + 1; - } - } - - encoded_len += (buf - ss); - if((buf - ss) && cb(ss, buf - ss, app_key) < 0) - ASN__ENCODE_FAILED; - - er.encoded = encoded_len; - ASN__ENCODED_OK(er); -} - -/* - * Convert from hexadecimal format (cstring): "AB CD EF" - */ -static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *chunk_stop = (const char *)chunk_buf; - const char *p = chunk_stop; - const char *pend = p + chunk_size; - unsigned int clv = 0; - int half = 0; /* Half bit */ - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 1) / 2; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * If something like " a b c " appears here, the " a b":3 will be - * converted, and the rest skipped. That is, unless buf_size is greater - * than chunk_size, then it'll be equivalent to "ABC0". - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - continue; - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - clv = (clv << 4) + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - clv = (clv << 4) + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - clv = (clv << 4) + (ch - 0x61 + 10); - break; - default: - *buf = 0; /* JIC */ - return -1; - } - if(half++) { - half = 0; - *buf++ = clv; - chunk_stop = p + 1; - } - } - - /* - * Check partial decoding. - */ - if(half) { - if(have_more) { - /* - * Partial specification is fine, - * because no more more PXER_TEXT data is available. - */ - *buf++ = clv << 4; - chunk_stop = p; - } - } else { - chunk_stop = p; - } - - st->size = buf - st->buf; /* Adjust the buffer size */ - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return (chunk_stop - (const char *)chunk_buf); /* Converted size */ -} - -/* - * Convert from binary format: "00101011101" - */ -static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - BIT_STRING_t *st = (BIT_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - int bits_unused = st->bits_unused & 0x7; - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - size_t new_size = st->size + (chunk_size + 7) / 8; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - (void)have_more; - - if(bits_unused == 0) - bits_unused = 8; - else if(st->size) - buf--; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* Ignore whitespace */ - break; - case 0x30: - case 0x31: - if(bits_unused-- <= 0) { - *++buf = 0; /* Clean the cell */ - bits_unused = 7; - } - *buf |= (ch&1) << bits_unused; - break; - default: - st->bits_unused = bits_unused; - return -1; - } - } - - if(bits_unused == 8) { - st->size = buf - st->buf; - st->bits_unused = 0; - } else { - st->size = buf - st->buf + 1; - st->bits_unused = bits_unused; - } - - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Something like strtod(), but with stricter rules. - */ -static int -OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { - const int32_t last_unicode_codepoint = 0x10ffff; - int32_t val = 0; - const char *p; - - for(p = buf; p < end; p++) { - int ch = *p; - - switch(ch) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ - val = val * base + (ch - 0x30); - break; - case 0x41: case 0x42: case 0x43: /* ABC */ - case 0x44: case 0x45: case 0x46: /* DEF */ - val = val * base + (ch - 0x41 + 10); - break; - case 0x61: case 0x62: case 0x63: /* abc */ - case 0x64: case 0x65: case 0x66: /* def */ - val = val * base + (ch - 0x61 + 10); - break; - case 0x3b: /* ';' */ - *ret_value = val; - return (p - buf) + 1; - default: - return -1; /* Character set error */ - } - - /* Value exceeds the Unicode range. */ - if(val > last_unicode_codepoint) { - return -1; - } - } - - *ret_value = -1; - return (p - buf); -} - -/* - * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" - */ -static ssize_t -OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, - size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - uint8_t *buf; - - /* Reallocate buffer */ - size_t new_size = st->size + chunk_size; - void *nptr = REALLOC(st->buf, new_size + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - int len; /* Length of the rest of the chunk */ - - if(ch != 0x26 /* '&' */) { - *buf++ = ch; - continue; /* That was easy... */ - } - - /* - * Process entity reference. - */ - len = chunk_size - (p - (const char *)chunk_buf); - if(len == 1 /* "&" */) goto want_more; - if(p[1] == 0x23 /* '#' */) { - const char *pval; /* Pointer to start of digits */ - int32_t val = 0; /* Entity reference value */ - int base; - - if(len == 2 /* "&#" */) goto want_more; - if(p[2] == 0x78 /* 'x' */) - pval = p + 3, base = 16; - else - pval = p + 2, base = 10; - len = OS__strtoent(base, pval, p + len, &val); - if(len == -1) { - /* Invalid charset. Just copy verbatim. */ - *buf++ = ch; - continue; - } - if(!len || pval[len-1] != 0x3b) goto want_more; - assert(val > 0); - p += (pval - p) + len - 1; /* Advance past entref */ - - if(val < 0x80) { - *buf++ = (char)val; - } else if(val < 0x800) { - *buf++ = 0xc0 | ((val >> 6)); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x10000) { - *buf++ = 0xe0 | ((val >> 12)); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x200000) { - *buf++ = 0xf0 | ((val >> 18)); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x4000000) { - *buf++ = 0xf8 | ((val >> 24)); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else { - *buf++ = 0xfc | ((val >> 30) & 0x1); - *buf++ = 0x80 | ((val >> 24) & 0x3f); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } - } else { - /* - * Ugly, limited parsing of & > < - */ - char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); - if(!sc) goto want_more; - if((sc - p) == 4 - && p[1] == 0x61 /* 'a' */ - && p[2] == 0x6d /* 'm' */ - && p[3] == 0x70 /* 'p' */) { - *buf++ = 0x26; - p = sc; - continue; - } - if((sc - p) == 3) { - if(p[1] == 0x6c) { - *buf = 0x3c; /* '<' */ - } else if(p[1] == 0x67) { - *buf = 0x3e; /* '>' */ - } else { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - if(p[2] != 0x74) { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - buf++; - p = sc; - continue; - } - /* Unsupported entity reference */ - *buf++ = ch; - } - - continue; - want_more: - if(have_more) { - /* - * We know that no more data (of the same type) - * is coming. Copy the rest verbatim. - */ - *buf++ = ch; - continue; - } - chunk_size = (p - (const char *)chunk_buf); - /* Processing stalled: need more data */ - break; - } - - st->size = buf - st->buf; - assert(st->size <= new_size); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Decode OCTET STRING from the XML element's body. - */ -static asn_dec_rval_t -OCTET_STRING__decode_xer( - const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, - void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size), - ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, - size_t chunk_size, int have_more)) { - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t *ctx; /* Per-structure parser context */ - asn_dec_rval_t rval; /* Return value from the decoder */ - int st_allocated; - - /* - * Create the string if does not exist. - */ - if(!st) { - st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); - *sptr = (void *)st; - if(!st) goto sta_failed; - st_allocated = 1; - } else { - st_allocated = 0; - } - if(!st->buf) { - /* This is separate from above section */ - st->buf = (uint8_t *)CALLOC(1, 1); - if(!st->buf) { - if(st_allocated) { - *sptr = 0; - goto stb_failed; - } else { - goto sta_failed; - } - } - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); - - return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, - buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); - -stb_failed: - FREEMEM(st); -sta_failed: - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; -} - -/* - * Decode OCTET STRING from the hexadecimal data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); -} - -/* - * Decode OCTET STRING from the binary (0/1) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_binary); -} - -/* - * Decode OCTET STRING from the string (ASCII/UTF-8) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, - size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, - OCTET_STRING__handle_control_chars, - OCTET_STRING__convert_entrefs); -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -static int -OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", - (int)units, lb, ub, unit_bits); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Decode without translation */ - lb = 0; - } else if(pc && pc->code2value) { - if(unit_bits > 16) - return 1; /* FATAL: can't have constrained - * UniversalString with more than - * 16 million code points */ - for(; buf < end; buf += bpc) { - int value; - int code = per_get_few_bits(po, unit_bits); - if(code < 0) return -1; /* WMORE */ - value = pc->code2value(code); - if(value < 0) { - ASN_DEBUG("Code %d (0x%02x) is" - " not in map (%ld..%ld)", - code, code, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = value; break; - case 2: buf[0] = value >> 8; buf[1] = value; break; - case 4: buf[0] = value >> 24; buf[1] = value >> 16; - buf[2] = value >> 8; buf[3] = value; break; - } - } - return 0; - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_get_many_bits(po, buf, 0, unit_bits * units); - } - - for(; buf < end; buf += bpc) { - int32_t code = per_get_few_bits(po, unit_bits); - int32_t ch = code + lb; - if(code < 0) return -1; /* WMORE */ - if(ch > ub) { - ASN_DEBUG("Code %d is out of range (%ld..%ld)", - ch, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: *buf = ch; break; - case 2: buf[0] = ch >> 8; buf[1] = ch; break; - case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; - buf[2] = ch >> 8; buf[3] = ch; break; - } - } - - return 0; -} - -static int -OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, const asn_per_constraints_t *pc) { - const uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", - (int)units, lb, ub, unit_bits, bpc); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Encode as is */ - lb = 0; - } else if(pc && pc->value2code) { - for(; buf < end; buf += bpc) { - int code; - uint32_t value; - switch(bpc) { - case 1: value = *(const uint8_t *)buf; break; - case 2: value = (buf[0] << 8) | buf[1]; break; - case 4: value = (buf[0] << 24) | (buf[1] << 16) - | (buf[2] << 8) | buf[3]; break; - default: return -1; - } - code = pc->value2code(value); - if(code < 0) { - ASN_DEBUG("Character %d (0x%02x) is" - " not in map (%ld..%ld)", - *buf, *buf, lb, ub); - return -1; - } - if(per_put_few_bits(po, code, unit_bits)) - return -1; - } - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_put_many_bits(po, buf, unit_bits * units); - } - - for(ub -= lb; buf < end; buf += bpc) { - int ch; - uint32_t value; - switch(bpc) { - case 1: - value = *(const uint8_t *)buf; - break; - case 2: - value = (buf[0] << 8) | buf[1]; - break; - case 4: - value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; - break; - default: - return -1; - } - ch = value - lb; - if(ch < 0 || ch > ub) { - ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, - value, lb, ub + lb); - return -1; - } - if(per_put_few_bits(po, ch, unit_bits)) return -1; - } - - return 0; -} - -static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { - { APC_CONSTRAINED, 8, 8, 0, 255 }, - { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, - 0, 0 -}; - -asn_dec_rval_t -OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = - constraints ? constraints : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); - break; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if(bpc) { - ASN_DEBUG("Encoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Encoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, - &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - if(raw_len == 0 && st->buf) break; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - len_bytes = raw_len * bpc; - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, - bpc, unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - size_t size_in_units; - const uint8_t *buf; - int ret; - enum { - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - case ASN_OSUBV_BIT: - ASN__ENCODE_FAILED; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - size_in_units = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - size_in_units = st->size >> 1; - if(st->size & 1) { - ASN_DEBUG("%s string size is not modulo 2", td->name); - ASN__ENCODE_FAILED; - } - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - size_in_units = st->size >> 2; - if(st->size & 3) { - ASN_DEBUG("%s string size is not modulo 4", td->name); - ASN__ENCODE_FAILED; - } - break; - } - - ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, size_in_units, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out whether size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((ssize_t)size_in_units < csiz->lower_bound - || (ssize_t)size_in_units > csiz->upper_bound) { - if(ct_extensible) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else { - ASN__ENCODE_FAILED; - } - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - if(csiz->effective_bits >= 0 && !inext) { - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, - size_in_units - csiz->lower_bound, csiz->effective_bits); - ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, - csiz->effective_bits); - if(ret) ASN__ENCODE_FAILED; - ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, - unit_bits, cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - ASN__ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); - - buf = st->buf; - ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); - if(may_save < 0) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, - need_eom ? ",+EOM" : ""); - - ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, - cval->lower_bound, - cval->upper_bound, pc); - if(ret) ASN__ENCODE_FAILED; - - buf += may_save * bpc; - size_in_units -= may_save; - assert(!(may_save & 0x07) || !size_in_units); - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - } while(size_in_units); - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: -/* case ASN_OSUBV_ANY: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); -*/ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; -*/ - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - cval = &asn_DEF_OCTET_STRING_constraints.value; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if (st->size > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - if(bpc) { - ASN_DEBUG("Decoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Decoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - if(bpc == 0) { - int ubs = (csiz->upper_bound & 0x7); - st->bits_unused = ubs ? 8 - ubs : 0; - } - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - if (csiz->upper_bound - csiz->lower_bound == 0) - /* Indefinite length case */ - raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); - else - raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); - repeat = 0; - if(raw_len < 0) RETURN(RC_WMORE); - raw_len += csiz->lower_bound; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - - if (raw_len > 2) { /* X.691 #16 NOTE 1 */ - if (aper_get_align(pd) < 0) - RETURN(RC_FAIL); - } - - if(bpc) { - len_bytes = raw_len * bpc; - len_bits = len_bytes * unit_bits; - } else { - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) - st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - } - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - if(bpc) { - ret = OCTET_STRING_per_get_characters(pd, - &st->buf[st->size], raw_len, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ret = per_get_many_bits(pd, &st->buf[st->size], - 0, len_bits); - } - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - - const asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (const asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_SPC_OCTET_STRING_specs; - const asn_per_constraints_t *pc = constraints ? constraints - : td->encoding_constraints.per_constraints; - const asn_per_constraint_t *cval; - const asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - unsigned int sizeinunits; - const uint8_t *buf; - int ret; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - ASN__ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - /* case ASN_OSUBV_ANY: - ASN__ENCODE_FAILED; - */ - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - sizeinunits = st->size * 8 - (st->bits_unused & 0x07); - ASN_DEBUG("BIT STRING of %d bytes", - sizeinunits); - break; - case ASN_OSUBV_ANY: - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; -/* if(cval->flags & APC_CONSTRAINED) - unit_bits = 8; -*/ - bpc = OS__BPC_CHAR; - sizeinunits = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - sizeinunits = st->size / 2; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - sizeinunits = st->size / 4; - break; - } - - ASN_DEBUG("Encoding %s into %d units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, sizeinunits, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out wheter size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((int)sizeinunits < csiz->lower_bound - || (int)sizeinunits > csiz->upper_bound) { - if(ct_extensible) { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else - ASN__ENCODE_FAILED; - } - } else { - inext = 0; - } - - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - ASN__ENCODE_FAILED; - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits >= 0) { - ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", - st->size, sizeinunits - csiz->lower_bound, - csiz->effective_bits); - if (csiz->effective_bits > 0) { - ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); - if(ret) ASN__ENCODE_FAILED; - } - /* EB MOD - AFAIU if lb != ub it is aligned whatever the number of bits */ - if ((st->size > 2) || (csiz->lower_bound != csiz->upper_bound)) { /* X.691 #16.11 */ - 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/e2sim/src/ASN1c/OCTET_STRING.h b/e2sim/src/ASN1c/OCTET_STRING.h deleted file mode 100644 index c2f8bae..0000000 --- a/e2sim/src/ASN1c/OCTET_STRING.h +++ /dev/null @@ -1,102 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/OPEN_TYPE.c b/e2sim/src/ASN1c/OPEN_TYPE.c deleted file mode 100644 index a54e99c..0000000 --- a/e2sim/src/ASN1c/OPEN_TYPE.c +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include -#include - -asn_TYPE_operation_t asn_OP_OPEN_TYPE = { - OPEN_TYPE_free, - OPEN_TYPE_print, - OPEN_TYPE_compare, - OPEN_TYPE_decode_ber, - OPEN_TYPE_encode_der, - OPEN_TYPE_decode_xer, - OPEN_TYPE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, 0, /* No OER support, use "-gen-OER" to enable */ -#else - OPEN_TYPE_decode_oer, - OPEN_TYPE_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, 0, 0, 0, -#else - OPEN_TYPE_decode_uper, - OPEN_TYPE_encode_uper, - OPEN_TYPE_decode_aper, - OPEN_TYPE_encode_aper, -#endif - 0, /* Random fill is not supported for open type */ - 0 /* Use generic outmost tag fetcher */ -}; - -#undef ADVANCE -#define ADVANCE(num_bytes) \ - do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -asn_dec_rval_t -OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - ASN_DEBUG("presence %d\n", selected.presence_index); - - rv = selected.type_descriptor->op->ber_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, - elm->tag_mode); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - rv.code = RC_OK; - rv.consumed = consumed_myself; - return rv; - } else { - /* Oh, now a full-blown failure failure */ - } - /* Fall through */ - case RC_FAIL: - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - break; - } - - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; -} - -asn_dec_rval_t -OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, const void *ptr, size_t size) { - size_t consumed_myself = 0; - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - int xer_context = 0; - ssize_t ch_size; - pxer_chunk_type_e ch_type; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - /* - * Confirm wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_OPENING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = selected.type_descriptor->op->xer_decoder( - opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); - ADVANCE(rv.consumed); - rv.consumed = 0; - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_FAIL: - /* Point to a best position where failure occurred */ - rv.consumed = consumed_myself; - /* Fall through */ - case RC_WMORE: - /* Wrt. rv.consumed==0: - * In case a genuine RC_WMORE, the whole Open Type decoding - * will have to be restarted. - */ - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - return rv; - } - - /* - * Finalize wrapper. - */ - for(;;) { - ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); - if(ch_size < 0) { - ASN__DECODE_FAILED; - } else { - switch(ch_type) { - case PXER_WMORE: - ASN__DECODE_STARVED; - case PXER_COMMENT: - case PXER_TEXT: - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; - } - break; - } - } - - /* - * Wrapper value confirmed. - */ - switch(xer_check_tag(ptr, ch_size, elm->name)) { - case XCT_CLOSING: - ADVANCE(ch_size); - break; - case XCT_BROKEN: - default: - ASN__DECODE_FAILED; - } - - rv.consumed += consumed_myself; - - return rv; -} - - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void *sptr, - const asn_TYPE_member_t *elm, asn_per_data_t *pd) { - asn_type_selector_result_t selected; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *inner_value; - asn_dec_rval_t rv; - - if(!(elm->flags & ATF_OPEN_TYPE)) { - ASN__DECODE_FAILED; - } - - if(!elm->type_selector) { - ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", - td->name, elm->name, elm->type->name); - ASN__DECODE_FAILED; - } - - selected = elm->type_selector(td, sptr); - if(!selected.presence_index) { - ASN__DECODE_FAILED; - } - - /* Fetch the pointer to this member */ - assert(elm->flags == ATF_OPEN_TYPE); - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - if(*memb_ptr2 != NULL) { - /* Make sure we reset the structure first before encoding */ - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) - != 0) { - ASN__DECODE_FAILED; - } - } - - inner_value = - (char *)*memb_ptr2 - + elm->type->elements[selected.presence_index - 1].memb_offset; - - rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, - &inner_value, pd); - switch(rv.code) { - case RC_OK: - if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, - selected.presence_index) - == 0) { - break; - } else { - rv.code = RC_FAIL; - } - /* Fall through */ - case RC_WMORE: - case RC_FAIL: - if(*memb_ptr2) { - if(elm->flags & ATF_POINTER) { - ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); - *memb_ptr2 = NULL; - } else { - ASN_STRUCT_RESET(*selected.type_descriptor, - inner_value); - } - } - } - return rv; -} - -asn_enc_rval_t -OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const void *memb_ptr; /* Pointer to the member */ - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_enc_rval_t er = {0,0,0}; - unsigned present; - - (void)constraints; - - present = CHOICE_variant_get_presence(td, sptr); - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - present--; - } - - ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { - ASN__ENCODE_FAILED; - } - - er.encoded = 0; - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/e2sim/src/ASN1c/OPEN_TYPE.h b/e2sim/src/ASN1c/OPEN_TYPE.h deleted file mode 100644 index b0d023c..0000000 --- a/e2sim/src/ASN1c/OPEN_TYPE.h +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/PLMN-Identity.c b/e2sim/src/ASN1c/PLMN-Identity.c deleted file mode 100644 index 25fb17d..0000000 --- a/e2sim/src/ASN1c/PLMN-Identity.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "PLMN-Identity.h" - -int -PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size == 3)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = { - "PLMN-Identity", - "PLMN-Identity", - &asn_OP_OCTET_STRING, - asn_DEF_PLMN_Identity_tags_1, - sizeof(asn_DEF_PLMN_Identity_tags_1) - /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ - asn_DEF_PLMN_Identity_tags_1, /* Same as above */ - sizeof(asn_DEF_PLMN_Identity_tags_1) - /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_PLMN_Identity_constr_1, PLMN_Identity_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/PLMN-Identity.h b/e2sim/src/ASN1c/PLMN-Identity.h deleted file mode 100644 index f8374fc..0000000 --- a/e2sim/src/ASN1c/PLMN-Identity.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _PLMN_Identity_H_ -#define _PLMN_Identity_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* PLMN-Identity */ -typedef OCTET_STRING_t PLMN_Identity_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity; -asn_struct_free_f PLMN_Identity_free; -asn_struct_print_f PLMN_Identity_print; -asn_constr_check_f PLMN_Identity_constraint; -ber_type_decoder_f PLMN_Identity_decode_ber; -der_type_encoder_f PLMN_Identity_encode_der; -xer_type_decoder_f PLMN_Identity_decode_xer; -xer_type_encoder_f PLMN_Identity_encode_xer; -per_type_decoder_f PLMN_Identity_decode_uper; -per_type_encoder_f PLMN_Identity_encode_uper; -per_type_decoder_f PLMN_Identity_decode_aper; -per_type_encoder_f PLMN_Identity_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _PLMN_Identity_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/Presence.c b/e2sim/src/ASN1c/Presence.c deleted file mode 100644 index 31a71b5..0000000 --- a/e2sim/src/ASN1c/Presence.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "Presence.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_Presence_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = { - { 0, 8, "optional" }, - { 1, 11, "conditional" }, - { 2, 9, "mandatory" } -}; -static const unsigned int asn_MAP_Presence_enum2value_1[] = { - 1, /* conditional(1) */ - 2, /* mandatory(2) */ - 0 /* optional(0) */ -}; -const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = { - asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_Presence_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_Presence = { - "Presence", - "Presence", - &asn_OP_NativeEnumerated, - asn_DEF_Presence_tags_1, - sizeof(asn_DEF_Presence_tags_1) - /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ - asn_DEF_Presence_tags_1, /* Same as above */ - sizeof(asn_DEF_Presence_tags_1) - /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_Presence_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_Presence_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/Presence.h b/e2sim/src/ASN1c/Presence.h deleted file mode 100644 index 3083f55..0000000 --- a/e2sim/src/ASN1c/Presence.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _Presence_H_ -#define _Presence_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum Presence { - Presence_optional = 0, - Presence_conditional = 1, - Presence_mandatory = 2 -} e_Presence; - -/* Presence */ -typedef long Presence_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_Presence_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_Presence; -extern const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1; -asn_struct_free_f Presence_free; -asn_struct_print_f Presence_print; -asn_constr_check_f Presence_constraint; -ber_type_decoder_f Presence_decode_ber; -der_type_encoder_f Presence_encode_der; -xer_type_decoder_f Presence_decode_xer; -xer_type_encoder_f Presence_encode_xer; -per_type_decoder_f Presence_decode_uper; -per_type_encoder_f Presence_encode_uper; -per_type_decoder_f Presence_decode_aper; -per_type_encoder_f Presence_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _Presence_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/PrintableString.c b/e2sim/src/ASN1c/PrintableString.c deleted file mode 100644 index 8fc3939..0000000 --- a/e2sim/src/ASN1c/PrintableString.c +++ /dev/null @@ -1,130 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/PrintableString.h b/e2sim/src/ASN1c/PrintableString.h deleted file mode 100644 index 8c2b61a..0000000 --- a/e2sim/src/ASN1c/PrintableString.h +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/ProcedureCode.c b/e2sim/src/ASN1c/ProcedureCode.c deleted file mode 100644 index a2628dc..0000000 --- a/e2sim/src/ASN1c/ProcedureCode.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ProcedureCode.h" - -int -ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProcedureCode = { - "ProcedureCode", - "ProcedureCode", - &asn_OP_NativeInteger, - asn_DEF_ProcedureCode_tags_1, - sizeof(asn_DEF_ProcedureCode_tags_1) - /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ - asn_DEF_ProcedureCode_tags_1, /* Same as above */ - sizeof(asn_DEF_ProcedureCode_tags_1) - /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_ProcedureCode_constr_1, ProcedureCode_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/ProcedureCode.h b/e2sim/src/ASN1c/ProcedureCode.h deleted file mode 100644 index cc17d51..0000000 --- a/e2sim/src/ASN1c/ProcedureCode.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ProcedureCode_H_ -#define _ProcedureCode_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ProcedureCode */ -typedef long ProcedureCode_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode; -asn_struct_free_f ProcedureCode_free; -asn_struct_print_f ProcedureCode_print; -asn_constr_check_f ProcedureCode_constraint; -ber_type_decoder_f ProcedureCode_decode_ber; -der_type_encoder_f ProcedureCode_encode_der; -xer_type_decoder_f ProcedureCode_decode_xer; -xer_type_encoder_f ProcedureCode_encode_xer; -per_type_decoder_f ProcedureCode_decode_uper; -per_type_encoder_f ProcedureCode_encode_uper; -per_type_decoder_f ProcedureCode_decode_aper; -per_type_encoder_f ProcedureCode_encode_aper; -#define ProcedureCode_id_E2setup ((ProcedureCode_t)1) -#define ProcedureCode_id_ErrorIndication ((ProcedureCode_t)2) -#define ProcedureCode_id_Reset ((ProcedureCode_t)3) -#define ProcedureCode_id_RICcontrol ((ProcedureCode_t)4) -#define ProcedureCode_id_RICindication ((ProcedureCode_t)5) -#define ProcedureCode_id_RICserviceQuery ((ProcedureCode_t)6) -#define ProcedureCode_id_RICserviceUpdate ((ProcedureCode_t)7) -#define ProcedureCode_id_RICsubscription ((ProcedureCode_t)8) -#define ProcedureCode_id_RICsubscriptionDelete ((ProcedureCode_t)9) -#define ProcedureCode_id_E2nodeConfigurationUpdate ((ProcedureCode_t)10) -#define ProcedureCode_id_E2connectionUpdate ((ProcedureCode_t)11) -#define ProcedureCode_id_RICsubscriptionDeleteRequired ((ProcedureCode_t)12) - -#ifdef __cplusplus -} -#endif - -#endif /* _ProcedureCode_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ProtocolIE-Container.c b/e2sim/src/ASN1c/ProtocolIE-Container.c deleted file mode 100644 index 05249bd..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-Container.c +++ /dev/null @@ -1,1090 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ProtocolIE-Container.h" - -#include "ProtocolIE-Field.h" -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P0_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P1_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P2_constr_5 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P3_constr_7 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P4_constr_9 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P5_constr_11 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P6_constr_13 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P7_constr_15 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P8_constr_17 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P9_constr_19 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P10_constr_21 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P11_constr_23 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P12_constr_25 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P13_constr_27 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P14_constr_29 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P15_constr_31 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P16_constr_33 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P17_constr_35 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P18_constr_37 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P19_constr_39 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P20_constr_41 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P21_constr_43 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P22_constr_45 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P23_constr_47 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P24_constr_49 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P25_constr_51 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P26_constr_53 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P0_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionRequest_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P0_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P0_specs_1 = { - sizeof(struct ProtocolIE_Container_1917P0), - offsetof(struct ProtocolIE_Container_1917P0, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P0 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P0_tags_1, - sizeof(asn_DEF_ProtocolIE_Container_1917P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_Container_1917P0_tags_1[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P0_tags_1, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_Container_1917P0_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P0_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P0_1, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P0_specs_1 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P1_3[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionResponse_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P1_tags_3[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P1_specs_3 = { - sizeof(struct ProtocolIE_Container_1917P1), - offsetof(struct ProtocolIE_Container_1917P1, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P1 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P1_tags_3, - sizeof(asn_DEF_ProtocolIE_Container_1917P1_tags_3) - /sizeof(asn_DEF_ProtocolIE_Container_1917P1_tags_3[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P1_tags_3, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P1_tags_3) - /sizeof(asn_DEF_ProtocolIE_Container_1917P1_tags_3[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P1_constr_3, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P1_3, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P1_specs_3 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P2_5[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P2_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P2_specs_5 = { - sizeof(struct ProtocolIE_Container_1917P2), - offsetof(struct ProtocolIE_Container_1917P2, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P2 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P2_tags_5, - sizeof(asn_DEF_ProtocolIE_Container_1917P2_tags_5) - /sizeof(asn_DEF_ProtocolIE_Container_1917P2_tags_5[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P2_tags_5, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P2_tags_5) - /sizeof(asn_DEF_ProtocolIE_Container_1917P2_tags_5[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P2_constr_5, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P2_5, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P2_specs_5 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P3_7[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequest_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P3_tags_7[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P3_specs_7 = { - sizeof(struct ProtocolIE_Container_1917P3), - offsetof(struct ProtocolIE_Container_1917P3, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P3 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P3_tags_7, - sizeof(asn_DEF_ProtocolIE_Container_1917P3_tags_7) - /sizeof(asn_DEF_ProtocolIE_Container_1917P3_tags_7[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P3_tags_7, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P3_tags_7) - /sizeof(asn_DEF_ProtocolIE_Container_1917P3_tags_7[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P3_constr_7, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P3_7, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P3_specs_7 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P4_9[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteResponse_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P4_tags_9[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P4_specs_9 = { - sizeof(struct ProtocolIE_Container_1917P4), - offsetof(struct ProtocolIE_Container_1917P4, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P4 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P4_tags_9, - sizeof(asn_DEF_ProtocolIE_Container_1917P4_tags_9) - /sizeof(asn_DEF_ProtocolIE_Container_1917P4_tags_9[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P4_tags_9, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P4_tags_9) - /sizeof(asn_DEF_ProtocolIE_Container_1917P4_tags_9[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P4_constr_9, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P4_9, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P4_specs_9 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P5_11[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P5_tags_11[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P5_specs_11 = { - sizeof(struct ProtocolIE_Container_1917P5), - offsetof(struct ProtocolIE_Container_1917P5, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P5 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P5_tags_11, - sizeof(asn_DEF_ProtocolIE_Container_1917P5_tags_11) - /sizeof(asn_DEF_ProtocolIE_Container_1917P5_tags_11[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P5_tags_11, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P5_tags_11) - /sizeof(asn_DEF_ProtocolIE_Container_1917P5_tags_11[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P5_constr_11, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P5_11, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P5_specs_11 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P6_13[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteRequired_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P6_tags_13[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P6_specs_13 = { - sizeof(struct ProtocolIE_Container_1917P6), - offsetof(struct ProtocolIE_Container_1917P6, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P6 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P6_tags_13, - sizeof(asn_DEF_ProtocolIE_Container_1917P6_tags_13) - /sizeof(asn_DEF_ProtocolIE_Container_1917P6_tags_13[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P6_tags_13, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P6_tags_13) - /sizeof(asn_DEF_ProtocolIE_Container_1917P6_tags_13[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P6_constr_13, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P6_13, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P6_specs_13 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P7_15[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICindication_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P7_tags_15[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P7_specs_15 = { - sizeof(struct ProtocolIE_Container_1917P7), - offsetof(struct ProtocolIE_Container_1917P7, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P7 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P7_tags_15, - sizeof(asn_DEF_ProtocolIE_Container_1917P7_tags_15) - /sizeof(asn_DEF_ProtocolIE_Container_1917P7_tags_15[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P7_tags_15, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P7_tags_15) - /sizeof(asn_DEF_ProtocolIE_Container_1917P7_tags_15[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P7_constr_15, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P7_15, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P7_specs_15 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P8_17[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolRequest_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P8_tags_17[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P8_specs_17 = { - sizeof(struct ProtocolIE_Container_1917P8), - offsetof(struct ProtocolIE_Container_1917P8, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P8 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P8_tags_17, - sizeof(asn_DEF_ProtocolIE_Container_1917P8_tags_17) - /sizeof(asn_DEF_ProtocolIE_Container_1917P8_tags_17[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P8_tags_17, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P8_tags_17) - /sizeof(asn_DEF_ProtocolIE_Container_1917P8_tags_17[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P8_constr_17, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P8_17, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P8_specs_17 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P9_19[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolAcknowledge_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P9_tags_19[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P9_specs_19 = { - sizeof(struct ProtocolIE_Container_1917P9), - offsetof(struct ProtocolIE_Container_1917P9, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P9 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P9_tags_19, - sizeof(asn_DEF_ProtocolIE_Container_1917P9_tags_19) - /sizeof(asn_DEF_ProtocolIE_Container_1917P9_tags_19[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P9_tags_19, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P9_tags_19) - /sizeof(asn_DEF_ProtocolIE_Container_1917P9_tags_19[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P9_constr_19, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P9_19, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P9_specs_19 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P10_21[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P10_tags_21[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P10_specs_21 = { - sizeof(struct ProtocolIE_Container_1917P10), - offsetof(struct ProtocolIE_Container_1917P10, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P10 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P10_tags_21, - sizeof(asn_DEF_ProtocolIE_Container_1917P10_tags_21) - /sizeof(asn_DEF_ProtocolIE_Container_1917P10_tags_21[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P10_tags_21, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P10_tags_21) - /sizeof(asn_DEF_ProtocolIE_Container_1917P10_tags_21[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P10_constr_21, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P10_21, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P10_specs_21 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P11_23[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ErrorIndication_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P11_tags_23[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P11_specs_23 = { - sizeof(struct ProtocolIE_Container_1917P11), - offsetof(struct ProtocolIE_Container_1917P11, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P11 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P11_tags_23, - sizeof(asn_DEF_ProtocolIE_Container_1917P11_tags_23) - /sizeof(asn_DEF_ProtocolIE_Container_1917P11_tags_23[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P11_tags_23, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P11_tags_23) - /sizeof(asn_DEF_ProtocolIE_Container_1917P11_tags_23[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P11_constr_23, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P11_23, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P11_specs_23 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P12_25[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupRequestIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P12_tags_25[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P12_specs_25 = { - sizeof(struct ProtocolIE_Container_1917P12), - offsetof(struct ProtocolIE_Container_1917P12, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P12 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P12_tags_25, - sizeof(asn_DEF_ProtocolIE_Container_1917P12_tags_25) - /sizeof(asn_DEF_ProtocolIE_Container_1917P12_tags_25[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P12_tags_25, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P12_tags_25) - /sizeof(asn_DEF_ProtocolIE_Container_1917P12_tags_25[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P12_constr_25, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P12_25, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P12_specs_25 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P13_27[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupResponseIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P13_tags_27[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P13_specs_27 = { - sizeof(struct ProtocolIE_Container_1917P13), - offsetof(struct ProtocolIE_Container_1917P13, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P13 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P13_tags_27, - sizeof(asn_DEF_ProtocolIE_Container_1917P13_tags_27) - /sizeof(asn_DEF_ProtocolIE_Container_1917P13_tags_27[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P13_tags_27, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P13_tags_27) - /sizeof(asn_DEF_ProtocolIE_Container_1917P13_tags_27[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P13_constr_27, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P13_27, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P13_specs_27 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P14_29[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupFailureIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P14_tags_29[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P14_specs_29 = { - sizeof(struct ProtocolIE_Container_1917P14), - offsetof(struct ProtocolIE_Container_1917P14, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P14 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P14_tags_29, - sizeof(asn_DEF_ProtocolIE_Container_1917P14_tags_29) - /sizeof(asn_DEF_ProtocolIE_Container_1917P14_tags_29[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P14_tags_29, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P14_tags_29) - /sizeof(asn_DEF_ProtocolIE_Container_1917P14_tags_29[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P14_constr_29, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P14_29, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P14_specs_29 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P15_31[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P15_tags_31[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P15_specs_31 = { - sizeof(struct ProtocolIE_Container_1917P15), - offsetof(struct ProtocolIE_Container_1917P15, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P15 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P15_tags_31, - sizeof(asn_DEF_ProtocolIE_Container_1917P15_tags_31) - /sizeof(asn_DEF_ProtocolIE_Container_1917P15_tags_31[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P15_tags_31, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P15_tags_31) - /sizeof(asn_DEF_ProtocolIE_Container_1917P15_tags_31[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P15_constr_31, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P15_31, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P15_specs_31 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P16_33[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateAck_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P16_tags_33[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P16_specs_33 = { - sizeof(struct ProtocolIE_Container_1917P16), - offsetof(struct ProtocolIE_Container_1917P16, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P16 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P16_tags_33, - sizeof(asn_DEF_ProtocolIE_Container_1917P16_tags_33) - /sizeof(asn_DEF_ProtocolIE_Container_1917P16_tags_33[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P16_tags_33, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P16_tags_33) - /sizeof(asn_DEF_ProtocolIE_Container_1917P16_tags_33[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P16_constr_33, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P16_33, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P16_specs_33 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P17_35[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P17_tags_35[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P17_specs_35 = { - sizeof(struct ProtocolIE_Container_1917P17), - offsetof(struct ProtocolIE_Container_1917P17, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P17 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P17_tags_35, - sizeof(asn_DEF_ProtocolIE_Container_1917P17_tags_35) - /sizeof(asn_DEF_ProtocolIE_Container_1917P17_tags_35[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P17_tags_35, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P17_tags_35) - /sizeof(asn_DEF_ProtocolIE_Container_1917P17_tags_35[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P17_constr_35, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P17_35, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P17_specs_35 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P18_37[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdate_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P18_tags_37[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P18_specs_37 = { - sizeof(struct ProtocolIE_Container_1917P18), - offsetof(struct ProtocolIE_Container_1917P18, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P18 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P18_tags_37, - sizeof(asn_DEF_ProtocolIE_Container_1917P18_tags_37) - /sizeof(asn_DEF_ProtocolIE_Container_1917P18_tags_37[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P18_tags_37, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P18_tags_37) - /sizeof(asn_DEF_ProtocolIE_Container_1917P18_tags_37[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P18_constr_37, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P18_37, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P18_specs_37 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P19_39[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P19_tags_39[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P19_specs_39 = { - sizeof(struct ProtocolIE_Container_1917P19), - offsetof(struct ProtocolIE_Container_1917P19, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P19 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P19_tags_39, - sizeof(asn_DEF_ProtocolIE_Container_1917P19_tags_39) - /sizeof(asn_DEF_ProtocolIE_Container_1917P19_tags_39[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P19_tags_39, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P19_tags_39) - /sizeof(asn_DEF_ProtocolIE_Container_1917P19_tags_39[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P19_constr_39, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P19_39, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P19_specs_39 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P20_41[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdateFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P20_tags_41[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P20_specs_41 = { - sizeof(struct ProtocolIE_Container_1917P20), - offsetof(struct ProtocolIE_Container_1917P20, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P20 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P20_tags_41, - sizeof(asn_DEF_ProtocolIE_Container_1917P20_tags_41) - /sizeof(asn_DEF_ProtocolIE_Container_1917P20_tags_41[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P20_tags_41, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P20_tags_41) - /sizeof(asn_DEF_ProtocolIE_Container_1917P20_tags_41[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P20_constr_41, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P20_41, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P20_specs_41 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P21_43[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetRequestIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P21_tags_43[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P21_specs_43 = { - sizeof(struct ProtocolIE_Container_1917P21), - offsetof(struct ProtocolIE_Container_1917P21, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P21 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P21_tags_43, - sizeof(asn_DEF_ProtocolIE_Container_1917P21_tags_43) - /sizeof(asn_DEF_ProtocolIE_Container_1917P21_tags_43[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P21_tags_43, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P21_tags_43) - /sizeof(asn_DEF_ProtocolIE_Container_1917P21_tags_43[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P21_constr_43, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P21_43, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P21_specs_43 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P22_45[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetResponseIEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P22_tags_45[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P22_specs_45 = { - sizeof(struct ProtocolIE_Container_1917P22), - offsetof(struct ProtocolIE_Container_1917P22, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P22 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P22_tags_45, - sizeof(asn_DEF_ProtocolIE_Container_1917P22_tags_45) - /sizeof(asn_DEF_ProtocolIE_Container_1917P22_tags_45[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P22_tags_45, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P22_tags_45) - /sizeof(asn_DEF_ProtocolIE_Container_1917P22_tags_45[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P22_constr_45, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P22_45, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P22_specs_45 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P23_47[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdate_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P23_tags_47[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P23_specs_47 = { - sizeof(struct ProtocolIE_Container_1917P23), - offsetof(struct ProtocolIE_Container_1917P23, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P23 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P23_tags_47, - sizeof(asn_DEF_ProtocolIE_Container_1917P23_tags_47) - /sizeof(asn_DEF_ProtocolIE_Container_1917P23_tags_47[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P23_tags_47, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P23_tags_47) - /sizeof(asn_DEF_ProtocolIE_Container_1917P23_tags_47[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P23_constr_47, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P23_47, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P23_specs_47 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P24_49[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateAcknowledge_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P24_tags_49[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P24_specs_49 = { - sizeof(struct ProtocolIE_Container_1917P24), - offsetof(struct ProtocolIE_Container_1917P24, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P24 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P24_tags_49, - sizeof(asn_DEF_ProtocolIE_Container_1917P24_tags_49) - /sizeof(asn_DEF_ProtocolIE_Container_1917P24_tags_49[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P24_tags_49, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P24_tags_49) - /sizeof(asn_DEF_ProtocolIE_Container_1917P24_tags_49[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P24_constr_49, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P24_49, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P24_specs_49 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P25_51[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateFailure_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P25_tags_51[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P25_specs_51 = { - sizeof(struct ProtocolIE_Container_1917P25), - offsetof(struct ProtocolIE_Container_1917P25, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P25 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P25_tags_51, - sizeof(asn_DEF_ProtocolIE_Container_1917P25_tags_51) - /sizeof(asn_DEF_ProtocolIE_Container_1917P25_tags_51[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P25_tags_51, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P25_tags_51) - /sizeof(asn_DEF_ProtocolIE_Container_1917P25_tags_51[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P25_constr_51, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P25_51, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P25_specs_51 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P26_53[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceQuery_IEs, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1917P26_tags_53[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P26_specs_53 = { - sizeof(struct ProtocolIE_Container_1917P26), - offsetof(struct ProtocolIE_Container_1917P26, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P26 = { - "ProtocolIE-Container", - "ProtocolIE-Container", - &asn_OP_SEQUENCE_OF, - asn_DEF_ProtocolIE_Container_1917P26_tags_53, - sizeof(asn_DEF_ProtocolIE_Container_1917P26_tags_53) - /sizeof(asn_DEF_ProtocolIE_Container_1917P26_tags_53[0]), /* 1 */ - asn_DEF_ProtocolIE_Container_1917P26_tags_53, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_Container_1917P26_tags_53) - /sizeof(asn_DEF_ProtocolIE_Container_1917P26_tags_53[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_Container_1917P26_constr_53, SEQUENCE_OF_constraint }, - asn_MBR_ProtocolIE_Container_1917P26_53, - 1, /* Single element */ - &asn_SPC_ProtocolIE_Container_1917P26_specs_53 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/ProtocolIE-Container.h b/e2sim/src/ASN1c/ProtocolIE-Container.h deleted file mode 100644 index 1406315..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-Container.h +++ /dev/null @@ -1,330 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ProtocolIE_Container_H_ -#define _ProtocolIE_Container_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RICsubscriptionRequest_IEs; -struct RICsubscriptionResponse_IEs; -struct RICsubscriptionFailure_IEs; -struct RICsubscriptionDeleteRequest_IEs; -struct RICsubscriptionDeleteResponse_IEs; -struct RICsubscriptionDeleteFailure_IEs; -struct RICsubscriptionDeleteRequired_IEs; -struct RICindication_IEs; -struct RICcontrolRequest_IEs; -struct RICcontrolAcknowledge_IEs; -struct RICcontrolFailure_IEs; -struct ErrorIndication_IEs; -struct E2setupRequestIEs; -struct E2setupResponseIEs; -struct E2setupFailureIEs; -struct E2connectionUpdate_IEs; -struct E2connectionUpdateAck_IEs; -struct E2connectionUpdateFailure_IEs; -struct E2nodeConfigurationUpdate_IEs; -struct E2nodeConfigurationUpdateAcknowledge_IEs; -struct E2nodeConfigurationUpdateFailure_IEs; -struct ResetRequestIEs; -struct ResetResponseIEs; -struct RICserviceUpdate_IEs; -struct RICserviceUpdateAcknowledge_IEs; -struct RICserviceUpdateFailure_IEs; -struct RICserviceQuery_IEs; - -/* ProtocolIE-Container */ -typedef struct ProtocolIE_Container_1917P0 { - A_SEQUENCE_OF(struct RICsubscriptionRequest_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P0_t; -typedef struct ProtocolIE_Container_1917P1 { - A_SEQUENCE_OF(struct RICsubscriptionResponse_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P1_t; -typedef struct ProtocolIE_Container_1917P2 { - A_SEQUENCE_OF(struct RICsubscriptionFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P2_t; -typedef struct ProtocolIE_Container_1917P3 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteRequest_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P3_t; -typedef struct ProtocolIE_Container_1917P4 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteResponse_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P4_t; -typedef struct ProtocolIE_Container_1917P5 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P5_t; -typedef struct ProtocolIE_Container_1917P6 { - A_SEQUENCE_OF(struct RICsubscriptionDeleteRequired_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P6_t; -typedef struct ProtocolIE_Container_1917P7 { - A_SEQUENCE_OF(struct RICindication_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P7_t; -typedef struct ProtocolIE_Container_1917P8 { - A_SEQUENCE_OF(struct RICcontrolRequest_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P8_t; -typedef struct ProtocolIE_Container_1917P9 { - A_SEQUENCE_OF(struct RICcontrolAcknowledge_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P9_t; -typedef struct ProtocolIE_Container_1917P10 { - A_SEQUENCE_OF(struct RICcontrolFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P10_t; -typedef struct ProtocolIE_Container_1917P11 { - A_SEQUENCE_OF(struct ErrorIndication_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P11_t; -typedef struct ProtocolIE_Container_1917P12 { - A_SEQUENCE_OF(struct E2setupRequestIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P12_t; -typedef struct ProtocolIE_Container_1917P13 { - A_SEQUENCE_OF(struct E2setupResponseIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P13_t; -typedef struct ProtocolIE_Container_1917P14 { - A_SEQUENCE_OF(struct E2setupFailureIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P14_t; -typedef struct ProtocolIE_Container_1917P15 { - A_SEQUENCE_OF(struct E2connectionUpdate_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P15_t; -typedef struct ProtocolIE_Container_1917P16 { - A_SEQUENCE_OF(struct E2connectionUpdateAck_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P16_t; -typedef struct ProtocolIE_Container_1917P17 { - A_SEQUENCE_OF(struct E2connectionUpdateFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P17_t; -typedef struct ProtocolIE_Container_1917P18 { - A_SEQUENCE_OF(struct E2nodeConfigurationUpdate_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P18_t; -typedef struct ProtocolIE_Container_1917P19 { - A_SEQUENCE_OF(struct E2nodeConfigurationUpdateAcknowledge_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P19_t; -typedef struct ProtocolIE_Container_1917P20 { - A_SEQUENCE_OF(struct E2nodeConfigurationUpdateFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P20_t; -typedef struct ProtocolIE_Container_1917P21 { - A_SEQUENCE_OF(struct ResetRequestIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P21_t; -typedef struct ProtocolIE_Container_1917P22 { - A_SEQUENCE_OF(struct ResetResponseIEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P22_t; -typedef struct ProtocolIE_Container_1917P23 { - A_SEQUENCE_OF(struct RICserviceUpdate_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P23_t; -typedef struct ProtocolIE_Container_1917P24 { - A_SEQUENCE_OF(struct RICserviceUpdateAcknowledge_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P24_t; -typedef struct ProtocolIE_Container_1917P25 { - A_SEQUENCE_OF(struct RICserviceUpdateFailure_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P25_t; -typedef struct ProtocolIE_Container_1917P26 { - A_SEQUENCE_OF(struct RICserviceQuery_IEs) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ProtocolIE_Container_1917P26_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P0; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P0_specs_1; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P0_1[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P0_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P1; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P1_specs_3; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P1_3[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P1_constr_3; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P2; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P2_specs_5; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P2_5[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P2_constr_5; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P3; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P3_specs_7; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P3_7[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P3_constr_7; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P4; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P4_specs_9; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P4_9[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P4_constr_9; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P5; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P5_specs_11; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P5_11[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P5_constr_11; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P6; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P6_specs_13; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P6_13[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P6_constr_13; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P7; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P7_specs_15; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P7_15[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P7_constr_15; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P8; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P8_specs_17; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P8_17[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P8_constr_17; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P9; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P9_specs_19; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P9_19[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P9_constr_19; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P10; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P10_specs_21; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P10_21[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P10_constr_21; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P11; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P11_specs_23; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P11_23[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P11_constr_23; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P12; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P12_specs_25; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P12_25[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P12_constr_25; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P13; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P13_specs_27; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P13_27[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P13_constr_27; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P14; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P14_specs_29; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P14_29[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P14_constr_29; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P15; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P15_specs_31; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P15_31[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P15_constr_31; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P16; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P16_specs_33; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P16_33[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P16_constr_33; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P17; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P17_specs_35; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P17_35[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P17_constr_35; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P18; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P18_specs_37; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P18_37[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P18_constr_37; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P19; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P19_specs_39; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P19_39[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P19_constr_39; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P20; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P20_specs_41; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P20_41[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P20_constr_41; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P21; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P21_specs_43; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P21_43[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P21_constr_43; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P22; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P22_specs_45; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P22_45[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P22_constr_45; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P23; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P23_specs_47; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P23_47[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P23_constr_47; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P24; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P24_specs_49; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P24_49[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P24_constr_49; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P25; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P25_specs_51; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P25_51[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P25_constr_51; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1917P26; -extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1917P26_specs_53; -extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1917P26_53[1]; -extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1917P26_constr_53; - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_Container_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ProtocolIE-ContainerList.c b/e2sim/src/ASN1c/ProtocolIE-ContainerList.c deleted file mode 100644 index e97ca34..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-ContainerList.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ProtocolIE-ContainerList.h" - diff --git a/e2sim/src/ASN1c/ProtocolIE-ContainerList.h b/e2sim/src/ASN1c/ProtocolIE-ContainerList.h deleted file mode 100644 index f79eecc..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-ContainerList.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ProtocolIE_ContainerList_H_ -#define _ProtocolIE_ContainerList_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ContainerList_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ProtocolIE-ContainerPair.c b/e2sim/src/ASN1c/ProtocolIE-ContainerPair.c deleted file mode 100644 index 1c1923e..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-ContainerPair.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ProtocolIE-ContainerPair.h" - diff --git a/e2sim/src/ASN1c/ProtocolIE-ContainerPair.h b/e2sim/src/ASN1c/ProtocolIE-ContainerPair.h deleted file mode 100644 index b6ac4f3..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-ContainerPair.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ProtocolIE_ContainerPair_H_ -#define _ProtocolIE_ContainerPair_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ContainerPair_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ProtocolIE-ContainerPairList.c b/e2sim/src/ASN1c/ProtocolIE-ContainerPairList.c deleted file mode 100644 index 3f82f58..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-ContainerPairList.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ProtocolIE-ContainerPairList.h" - diff --git a/e2sim/src/ASN1c/ProtocolIE-ContainerPairList.h b/e2sim/src/ASN1c/ProtocolIE-ContainerPairList.h deleted file mode 100644 index a555957..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-ContainerPairList.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ProtocolIE_ContainerPairList_H_ -#define _ProtocolIE_ContainerPairList_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ContainerPairList_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ProtocolIE-Field.c b/e2sim/src/ASN1c/ProtocolIE-Field.c deleted file mode 100644 index 06ce54f..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-Field.c +++ /dev/null @@ -1,12150 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ProtocolIE-Field.h" - -static const long asn_VAL_4_id_RICaction_ToBeSetup_Item = 19; -static const long asn_VAL_4_ignore = 1; -static const long asn_VAL_4_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_RICaction_ToBeSetup_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_ignore }, - { "&Value", aioc__type, &asn_DEF_RICaction_ToBeSetup_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows } -}; -static const long asn_VAL_9_id_RICaction_Admitted_Item = 14; -static const long asn_VAL_9_ignore = 1; -static const long asn_VAL_9_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICaction_Admitted_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_RICaction_Admitted_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, - { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICaction_Admitted_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICaction_Admitted_ItemIEs_1_rows } -}; -static const long asn_VAL_10_id_RICaction_NotAdmitted_Item = 16; -static const long asn_VAL_10_ignore = 1; -static const long asn_VAL_10_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_RICaction_NotAdmitted_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, - { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows } -}; -static const long asn_VAL_24_id_RICsubscription_withCause_Item = 51; -static const long asn_VAL_24_ignore = 1; -static const long asn_VAL_24_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscription_withCause_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_RICsubscription_withCause_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_ignore }, - { "&Value", aioc__type, &asn_DEF_RICsubscription_withCause_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscription_withCause_ItemIEs_1[] = { - { 1, 4, asn_IOS_RICsubscription_withCause_ItemIEs_1_rows } -}; -static const long asn_VAL_71_id_E2connectionUpdate_Item = 43; -static const long asn_VAL_71_ignore = 1; -static const long asn_VAL_71_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdate_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_E2connectionUpdate_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_ignore }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdate_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2connectionUpdate_ItemIEs_1_rows } -}; -static const long asn_VAL_72_id_E2connectionUpdateRemove_Item = 47; -static const long asn_VAL_72_ignore = 1; -static const long asn_VAL_72_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdateRemove_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_E2connectionUpdateRemove_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_ignore }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdateRemove_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdateRemove_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2connectionUpdateRemove_ItemIEs_1_rows } -}; -static const long asn_VAL_76_id_E2connectionSetupFailed_Item = 41; -static const long asn_VAL_76_ignore = 1; -static const long asn_VAL_76_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2connectionSetupFailed_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_76_id_E2connectionSetupFailed_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_76_ignore }, - { "&Value", aioc__type, &asn_DEF_E2connectionSetupFailed_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_76_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2connectionSetupFailed_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2connectionSetupFailed_ItemIEs_1_rows } -}; -static const long asn_VAL_87_id_E2nodeComponentConfigAddition_Item = 51; -static const long asn_VAL_87_reject = 0; -static const long asn_VAL_87_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_87_id_E2nodeComponentConfigAddition_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_87_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAddition_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_87_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1_rows } -}; -static const long asn_VAL_88_id_E2nodeComponentConfigUpdate_Item = 34; -static const long asn_VAL_88_reject = 0; -static const long asn_VAL_88_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_88_id_E2nodeComponentConfigUpdate_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_88_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdate_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_88_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1_rows } -}; -static const long asn_VAL_89_id_E2nodeComponentConfigRemoval_Item = 55; -static const long asn_VAL_89_reject = 0; -static const long asn_VAL_89_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_89_id_E2nodeComponentConfigRemoval_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_89_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemoval_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_89_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1_rows } -}; -static const long asn_VAL_90_id_E2nodeTNLassociationRemoval_Item = 59; -static const long asn_VAL_90_reject = 0; -static const long asn_VAL_90_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_90_id_E2nodeTNLassociationRemoval_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_90_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeTNLassociationRemoval_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_90_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1_rows } -}; -static const long asn_VAL_95_id_E2nodeComponentConfigAdditionAck_Item = 53; -static const long asn_VAL_95_reject = 0; -static const long asn_VAL_95_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_95_id_E2nodeComponentConfigAdditionAck_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_95_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAdditionAck_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_95_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1_rows } -}; -static const long asn_VAL_96_id_E2nodeComponentConfigUpdateAck_Item = 36; -static const long asn_VAL_96_reject = 0; -static const long asn_VAL_96_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_96_id_E2nodeComponentConfigUpdateAck_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_96_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdateAck_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_96_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1_rows } -}; -static const long asn_VAL_97_id_E2nodeComponentConfigRemovalAck_Item = 57; -static const long asn_VAL_97_reject = 0; -static const long asn_VAL_97_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_97_id_E2nodeComponentConfigRemovalAck_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_97_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemovalAck_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_97_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1[] = { - { 1, 4, asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1_rows } -}; -static const long asn_VAL_110_id_RANfunction_Item = 8; -static const long asn_VAL_110_ignore = 1; -static const long asn_VAL_110_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RANfunction_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_110_id_RANfunction_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_110_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunction_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_110_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RANfunction_ItemIEs_1[] = { - { 1, 4, asn_IOS_RANfunction_ItemIEs_1_rows } -}; -static const long asn_VAL_111_id_RANfunctionID_Item = 6; -static const long asn_VAL_111_ignore = 1; -static const long asn_VAL_111_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RANfunctionID_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_111_id_RANfunctionID_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_111_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_111_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RANfunctionID_ItemIEs_1[] = { - { 1, 4, asn_IOS_RANfunctionID_ItemIEs_1_rows } -}; -static const long asn_VAL_115_id_RANfunctionIEcause_Item = 7; -static const long asn_VAL_115_ignore = 1; -static const long asn_VAL_115_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RANfunctionIDcause_ItemIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_115_id_RANfunctionIEcause_Item }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_115_ignore }, - { "&Value", aioc__type, &asn_DEF_RANfunctionIDcause_Item }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_115_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RANfunctionIDcause_ItemIEs_1[] = { - { 1, 4, asn_IOS_RANfunctionIDcause_ItemIEs_1_rows } -}; -static const long asn_VAL_1_id_RICrequestID = 29; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_1_mandatory = 2; -static const long asn_VAL_2_id_RANfunctionID = 5; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_2_mandatory = 2; -static const long asn_VAL_3_id_RICsubscriptionDetails = 30; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_3_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionRequest_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_RICsubscriptionDetails }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&Value", aioc__type, &asn_DEF_RICsubscriptionDetails }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionRequest_IEs_1[] = { - { 3, 4, asn_IOS_RICsubscriptionRequest_IEs_1_rows } -}; -static const long asn_VAL_5_id_RICrequestID = 29; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_5_mandatory = 2; -static const long asn_VAL_6_id_RANfunctionID = 5; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_6_mandatory = 2; -static const long asn_VAL_7_id_RICactions_Admitted = 17; -static const long asn_VAL_7_reject = 0; -static const long asn_VAL_7_mandatory = 2; -static const long asn_VAL_8_id_RICactions_NotAdmitted = 18; -static const long asn_VAL_8_reject = 0; -static const long asn_VAL_8_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionResponse_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_RICactions_Admitted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, - { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_RICactions_NotAdmitted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, - { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_optional } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionResponse_IEs_1[] = { - { 4, 4, asn_IOS_RICsubscriptionResponse_IEs_1_rows } -}; -static const long asn_VAL_11_id_RICrequestID = 29; -static const long asn_VAL_11_reject = 0; -static const long asn_VAL_11_mandatory = 2; -static const long asn_VAL_12_id_RANfunctionID = 5; -static const long asn_VAL_12_reject = 0; -static const long asn_VAL_12_mandatory = 2; -static const long asn_VAL_13_id_Cause = 1; -static const long asn_VAL_13_reject = 0; -static const long asn_VAL_13_mandatory = 2; -static const long asn_VAL_14_id_CriticalityDiagnostics = 2; -static const long asn_VAL_14_ignore = 1; -static const long asn_VAL_14_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_reject }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_optional } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionFailure_IEs_1[] = { - { 4, 4, asn_IOS_RICsubscriptionFailure_IEs_1_rows } -}; -static const long asn_VAL_15_id_RICrequestID = 29; -static const long asn_VAL_15_reject = 0; -static const long asn_VAL_15_mandatory = 2; -static const long asn_VAL_16_id_RANfunctionID = 5; -static const long asn_VAL_16_reject = 0; -static const long asn_VAL_16_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1[] = { - { 2, 4, asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows } -}; -static const long asn_VAL_17_id_RICrequestID = 29; -static const long asn_VAL_17_reject = 0; -static const long asn_VAL_17_mandatory = 2; -static const long asn_VAL_18_id_RANfunctionID = 5; -static const long asn_VAL_18_reject = 0; -static const long asn_VAL_18_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1[] = { - { 2, 4, asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows } -}; -static const long asn_VAL_19_id_RICrequestID = 29; -static const long asn_VAL_19_reject = 0; -static const long asn_VAL_19_mandatory = 2; -static const long asn_VAL_20_id_RANfunctionID = 5; -static const long asn_VAL_20_reject = 0; -static const long asn_VAL_20_mandatory = 2; -static const long asn_VAL_21_id_Cause = 1; -static const long asn_VAL_21_ignore = 1; -static const long asn_VAL_21_mandatory = 2; -static const long asn_VAL_22_id_CriticalityDiagnostics = 2; -static const long asn_VAL_22_ignore = 1; -static const long asn_VAL_22_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_optional } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1[] = { - { 4, 4, asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows } -}; -static const long asn_VAL_23_id_RICsubscriptionToBeRemoved = 50; -static const long asn_VAL_23_ignore = 1; -static const long asn_VAL_23_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequired_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_RICsubscriptionToBeRemoved }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_ignore }, - { "&Value", aioc__type, &asn_DEF_RICsubscription_List_withCause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_mandatory } -}; -static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequired_IEs_1[] = { - { 1, 4, asn_IOS_RICsubscriptionDeleteRequired_IEs_1_rows } -}; -static const long asn_VAL_25_id_RICrequestID = 29; -static const long asn_VAL_25_reject = 0; -static const long asn_VAL_25_mandatory = 2; -static const long asn_VAL_26_id_RANfunctionID = 5; -static const long asn_VAL_26_reject = 0; -static const long asn_VAL_26_mandatory = 2; -static const long asn_VAL_27_id_RICactionID = 15; -static const long asn_VAL_27_reject = 0; -static const long asn_VAL_27_mandatory = 2; -static const long asn_VAL_28_id_RICindicationSN = 27; -static const long asn_VAL_28_reject = 0; -static const long asn_VAL_28_optional = 0; -static const long asn_VAL_29_id_RICindicationType = 28; -static const long asn_VAL_29_reject = 0; -static const long asn_VAL_29_mandatory = 2; -static const long asn_VAL_30_id_RICindicationHeader = 25; -static const long asn_VAL_30_reject = 0; -static const long asn_VAL_30_mandatory = 2; -static const long asn_VAL_31_id_RICindicationMessage = 26; -static const long asn_VAL_31_reject = 0; -static const long asn_VAL_31_mandatory = 2; -static const long asn_VAL_32_id_RICcallProcessID = 20; -static const long asn_VAL_32_reject = 0; -static const long asn_VAL_32_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICindication_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_RICactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_reject }, - { "&Value", aioc__type, &asn_DEF_RICactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_RICindicationSN }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationSN }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_RICindicationType }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationType }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RICindicationHeader }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationHeader }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_RICindicationMessage }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_reject }, - { "&Value", aioc__type, &asn_DEF_RICindicationMessage }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_optional } -}; -static const asn_ioc_set_t asn_IOS_RICindication_IEs_1[] = { - { 8, 4, asn_IOS_RICindication_IEs_1_rows } -}; -static const long asn_VAL_33_id_RICrequestID = 29; -static const long asn_VAL_33_reject = 0; -static const long asn_VAL_33_mandatory = 2; -static const long asn_VAL_34_id_RANfunctionID = 5; -static const long asn_VAL_34_reject = 0; -static const long asn_VAL_34_mandatory = 2; -static const long asn_VAL_35_id_RICcallProcessID = 20; -static const long asn_VAL_35_reject = 0; -static const long asn_VAL_35_optional = 0; -static const long asn_VAL_36_id_RICcontrolHeader = 22; -static const long asn_VAL_36_reject = 0; -static const long asn_VAL_36_mandatory = 2; -static const long asn_VAL_37_id_RICcontrolMessage = 23; -static const long asn_VAL_37_reject = 0; -static const long asn_VAL_37_mandatory = 2; -static const long asn_VAL_38_id_RICcontrolAckRequest = 21; -static const long asn_VAL_38_reject = 0; -static const long asn_VAL_38_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICcontrolRequest_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_RICcontrolHeader }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolHeader }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_RICcontrolMessage }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolMessage }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RICcontrolAckRequest }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolAckRequest }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_optional } -}; -static const asn_ioc_set_t asn_IOS_RICcontrolRequest_IEs_1[] = { - { 6, 4, asn_IOS_RICcontrolRequest_IEs_1_rows } -}; -static const long asn_VAL_39_id_RICrequestID = 29; -static const long asn_VAL_39_reject = 0; -static const long asn_VAL_39_mandatory = 2; -static const long asn_VAL_40_id_RANfunctionID = 5; -static const long asn_VAL_40_reject = 0; -static const long asn_VAL_40_mandatory = 2; -static const long asn_VAL_41_id_RICcallProcessID = 20; -static const long asn_VAL_41_reject = 0; -static const long asn_VAL_41_optional = 0; -static const long asn_VAL_42_id_RICcontrolOutcome = 32; -static const long asn_VAL_42_reject = 0; -static const long asn_VAL_42_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICcontrolAcknowledge_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RICcontrolOutcome }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_optional } -}; -static const asn_ioc_set_t asn_IOS_RICcontrolAcknowledge_IEs_1[] = { - { 4, 4, asn_IOS_RICcontrolAcknowledge_IEs_1_rows } -}; -static const long asn_VAL_43_id_RICrequestID = 29; -static const long asn_VAL_43_reject = 0; -static const long asn_VAL_43_mandatory = 2; -static const long asn_VAL_44_id_RANfunctionID = 5; -static const long asn_VAL_44_reject = 0; -static const long asn_VAL_44_mandatory = 2; -static const long asn_VAL_45_id_RICcallProcessID = 20; -static const long asn_VAL_45_reject = 0; -static const long asn_VAL_45_optional = 0; -static const long asn_VAL_46_id_Cause = 1; -static const long asn_VAL_46_ignore = 1; -static const long asn_VAL_46_mandatory = 2; -static const long asn_VAL_47_id_RICcontrolOutcome = 32; -static const long asn_VAL_47_reject = 0; -static const long asn_VAL_47_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICcontrolFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_RICcallProcessID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_reject }, - { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_RICcontrolOutcome }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_reject }, - { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_optional } -}; -static const asn_ioc_set_t asn_IOS_RICcontrolFailure_IEs_1[] = { - { 5, 4, asn_IOS_RICcontrolFailure_IEs_1_rows } -}; -static const long asn_VAL_48_id_TransactionID = 49; -static const long asn_VAL_48_reject = 0; -static const long asn_VAL_48_optional = 0; -static const long asn_VAL_49_id_RICrequestID = 29; -static const long asn_VAL_49_reject = 0; -static const long asn_VAL_49_optional = 0; -static const long asn_VAL_50_id_RANfunctionID = 5; -static const long asn_VAL_50_reject = 0; -static const long asn_VAL_50_optional = 0; -static const long asn_VAL_51_id_Cause = 1; -static const long asn_VAL_51_ignore = 1; -static const long asn_VAL_51_optional = 0; -static const long asn_VAL_52_id_CriticalityDiagnostics = 2; -static const long asn_VAL_52_ignore = 1; -static const long asn_VAL_52_optional = 0; -static const asn_ioc_cell_t asn_IOS_ErrorIndication_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_RICrequestID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_reject }, - { "&Value", aioc__type, &asn_DEF_RICrequestID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_RANfunctionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_optional } -}; -static const asn_ioc_set_t asn_IOS_ErrorIndication_IEs_1[] = { - { 5, 4, asn_IOS_ErrorIndication_IEs_1_rows } -}; -static const long asn_VAL_53_id_TransactionID = 49; -static const long asn_VAL_53_reject = 0; -static const long asn_VAL_53_mandatory = 2; -static const long asn_VAL_54_id_GlobalE2node_ID = 3; -static const long asn_VAL_54_reject = 0; -static const long asn_VAL_54_mandatory = 2; -static const long asn_VAL_55_id_RANfunctionsAdded = 10; -static const long asn_VAL_55_reject = 0; -static const long asn_VAL_55_mandatory = 2; -static const long asn_VAL_56_id_E2nodeComponentConfigAddition = 50; -static const long asn_VAL_56_reject = 0; -static const long asn_VAL_56_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2setupRequestIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_GlobalE2node_ID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_reject }, - { "&Value", aioc__type, &asn_DEF_GlobalE2node_ID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_RANfunctionsAdded }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_E2nodeComponentConfigAddition }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAddition_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2setupRequestIEs_1[] = { - { 4, 4, asn_IOS_E2setupRequestIEs_1_rows } -}; -static const long asn_VAL_57_id_TransactionID = 49; -static const long asn_VAL_57_reject = 0; -static const long asn_VAL_57_mandatory = 2; -static const long asn_VAL_58_id_GlobalRIC_ID = 4; -static const long asn_VAL_58_reject = 0; -static const long asn_VAL_58_mandatory = 2; -static const long asn_VAL_59_id_RANfunctionsAccepted = 9; -static const long asn_VAL_59_reject = 0; -static const long asn_VAL_59_optional = 0; -static const long asn_VAL_60_id_RANfunctionsRejected = 13; -static const long asn_VAL_60_reject = 0; -static const long asn_VAL_60_optional = 0; -static const long asn_VAL_61_id_E2nodeComponentConfigAdditionAck = 52; -static const long asn_VAL_61_reject = 0; -static const long asn_VAL_61_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_E2setupResponseIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_GlobalRIC_ID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_reject }, - { "&Value", aioc__type, &asn_DEF_GlobalRIC_ID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_RANfunctionsAccepted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_RANfunctionsRejected }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_E2nodeComponentConfigAdditionAck }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAdditionAck_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_mandatory } -}; -static const asn_ioc_set_t asn_IOS_E2setupResponseIEs_1[] = { - { 5, 4, asn_IOS_E2setupResponseIEs_1_rows } -}; -static const long asn_VAL_62_id_TransactionID = 49; -static const long asn_VAL_62_reject = 0; -static const long asn_VAL_62_mandatory = 2; -static const long asn_VAL_63_id_Cause = 1; -static const long asn_VAL_63_ignore = 1; -static const long asn_VAL_63_mandatory = 2; -static const long asn_VAL_64_id_TimeToWait = 31; -static const long asn_VAL_64_ignore = 1; -static const long asn_VAL_64_optional = 0; -static const long asn_VAL_65_id_CriticalityDiagnostics = 2; -static const long asn_VAL_65_ignore = 1; -static const long asn_VAL_65_optional = 0; -static const long asn_VAL_66_id_TNLinformation = 48; -static const long asn_VAL_66_ignore = 1; -static const long asn_VAL_66_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2setupFailureIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_TNLinformation }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_ignore }, - { "&Value", aioc__type, &asn_DEF_TNLinformation }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_optional } -}; -static const asn_ioc_set_t asn_IOS_E2setupFailureIEs_1[] = { - { 5, 4, asn_IOS_E2setupFailureIEs_1_rows } -}; -static const long asn_VAL_67_id_TransactionID = 49; -static const long asn_VAL_67_reject = 0; -static const long asn_VAL_67_mandatory = 2; -static const long asn_VAL_68_id_E2connectionUpdateAdd = 44; -static const long asn_VAL_68_reject = 0; -static const long asn_VAL_68_optional = 0; -static const long asn_VAL_69_id_E2connectionUpdateRemove = 46; -static const long asn_VAL_69_reject = 0; -static const long asn_VAL_69_optional = 0; -static const long asn_VAL_70_id_E2connectionUpdateModify = 45; -static const long asn_VAL_70_reject = 0; -static const long asn_VAL_70_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdate_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_E2connectionUpdateAdd }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_E2connectionUpdateRemove }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdateRemove_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_E2connectionUpdateModify }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_optional } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdate_IEs_1[] = { - { 4, 4, asn_IOS_E2connectionUpdate_IEs_1_rows } -}; -static const long asn_VAL_73_id_TransactionID = 49; -static const long asn_VAL_73_reject = 0; -static const long asn_VAL_73_mandatory = 2; -static const long asn_VAL_74_id_E2connectionSetup = 39; -static const long asn_VAL_74_reject = 0; -static const long asn_VAL_74_optional = 0; -static const long asn_VAL_75_id_E2connectionSetupFailed = 40; -static const long asn_VAL_75_reject = 0; -static const long asn_VAL_75_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdateAck_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_73_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_73_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_73_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_74_id_E2connectionSetup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_74_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionUpdate_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_74_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_75_id_E2connectionSetupFailed }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_75_reject }, - { "&Value", aioc__type, &asn_DEF_E2connectionSetupFailed_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_75_optional } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdateAck_IEs_1[] = { - { 3, 4, asn_IOS_E2connectionUpdateAck_IEs_1_rows } -}; -static const long asn_VAL_77_id_TransactionID = 49; -static const long asn_VAL_77_reject = 0; -static const long asn_VAL_77_mandatory = 2; -static const long asn_VAL_78_id_Cause = 1; -static const long asn_VAL_78_reject = 0; -static const long asn_VAL_78_optional = 0; -static const long asn_VAL_79_id_TimeToWait = 31; -static const long asn_VAL_79_ignore = 1; -static const long asn_VAL_79_optional = 0; -static const long asn_VAL_80_id_CriticalityDiagnostics = 2; -static const long asn_VAL_80_ignore = 1; -static const long asn_VAL_80_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2connectionUpdateFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_77_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_77_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_77_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_78_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_78_reject }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_78_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_79_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_79_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_79_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_80_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_80_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_80_optional } -}; -static const asn_ioc_set_t asn_IOS_E2connectionUpdateFailure_IEs_1[] = { - { 4, 4, asn_IOS_E2connectionUpdateFailure_IEs_1_rows } -}; -static const long asn_VAL_81_id_TransactionID = 49; -static const long asn_VAL_81_reject = 0; -static const long asn_VAL_81_mandatory = 2; -static const long asn_VAL_82_id_GlobalE2node_ID = 3; -static const long asn_VAL_82_reject = 0; -static const long asn_VAL_82_optional = 0; -static const long asn_VAL_83_id_E2nodeComponentConfigAddition = 50; -static const long asn_VAL_83_reject = 0; -static const long asn_VAL_83_optional = 0; -static const long asn_VAL_84_id_E2nodeComponentConfigUpdate = 33; -static const long asn_VAL_84_reject = 0; -static const long asn_VAL_84_optional = 0; -static const long asn_VAL_85_id_E2nodeComponentConfigRemoval = 54; -static const long asn_VAL_85_reject = 0; -static const long asn_VAL_85_optional = 0; -static const long asn_VAL_86_id_E2nodeTNLassociationRemoval = 58; -static const long asn_VAL_86_reject = 0; -static const long asn_VAL_86_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2nodeConfigurationUpdate_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_81_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_81_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_81_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_82_id_GlobalE2node_ID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_82_reject }, - { "&Value", aioc__type, &asn_DEF_GlobalE2node_ID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_82_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_83_id_E2nodeComponentConfigAddition }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_83_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAddition_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_83_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_84_id_E2nodeComponentConfigUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_84_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdate_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_84_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_85_id_E2nodeComponentConfigRemoval }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_85_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemoval_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_85_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_86_id_E2nodeTNLassociationRemoval }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_86_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeTNLassociationRemoval_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_86_optional } -}; -static const asn_ioc_set_t asn_IOS_E2nodeConfigurationUpdate_IEs_1[] = { - { 6, 4, asn_IOS_E2nodeConfigurationUpdate_IEs_1_rows } -}; -static const long asn_VAL_91_id_TransactionID = 49; -static const long asn_VAL_91_reject = 0; -static const long asn_VAL_91_mandatory = 2; -static const long asn_VAL_92_id_E2nodeComponentConfigAdditionAck = 52; -static const long asn_VAL_92_reject = 0; -static const long asn_VAL_92_optional = 0; -static const long asn_VAL_93_id_E2nodeComponentConfigUpdateAck = 35; -static const long asn_VAL_93_reject = 0; -static const long asn_VAL_93_optional = 0; -static const long asn_VAL_94_id_E2nodeComponentConfigRemovalAck = 56; -static const long asn_VAL_94_reject = 0; -static const long asn_VAL_94_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_91_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_91_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_91_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_92_id_E2nodeComponentConfigAdditionAck }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_92_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigAdditionAck_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_92_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_93_id_E2nodeComponentConfigUpdateAck }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_93_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigUpdateAck_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_93_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_94_id_E2nodeComponentConfigRemovalAck }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_94_reject }, - { "&Value", aioc__type, &asn_DEF_E2nodeComponentConfigRemovalAck_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_94_optional } -}; -static const asn_ioc_set_t asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1[] = { - { 4, 4, asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1_rows } -}; -static const long asn_VAL_98_id_TransactionID = 49; -static const long asn_VAL_98_reject = 0; -static const long asn_VAL_98_mandatory = 2; -static const long asn_VAL_99_id_Cause = 1; -static const long asn_VAL_99_ignore = 1; -static const long asn_VAL_99_mandatory = 2; -static const long asn_VAL_100_id_TimeToWait = 31; -static const long asn_VAL_100_ignore = 1; -static const long asn_VAL_100_optional = 0; -static const long asn_VAL_101_id_CriticalityDiagnostics = 2; -static const long asn_VAL_101_ignore = 1; -static const long asn_VAL_101_optional = 0; -static const asn_ioc_cell_t asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_98_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_98_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_98_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_99_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_99_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_99_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_100_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_100_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_100_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_101_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_101_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_101_optional } -}; -static const asn_ioc_set_t asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1[] = { - { 4, 4, asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1_rows } -}; -static const long asn_VAL_102_id_TransactionID = 49; -static const long asn_VAL_102_reject = 0; -static const long asn_VAL_102_mandatory = 2; -static const long asn_VAL_103_id_Cause = 1; -static const long asn_VAL_103_ignore = 1; -static const long asn_VAL_103_mandatory = 2; -static const asn_ioc_cell_t asn_IOS_ResetRequestIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_102_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_102_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_102_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_103_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_103_ignore }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_103_mandatory } -}; -static const asn_ioc_set_t asn_IOS_ResetRequestIEs_1[] = { - { 2, 4, asn_IOS_ResetRequestIEs_1_rows } -}; -static const long asn_VAL_104_id_TransactionID = 49; -static const long asn_VAL_104_reject = 0; -static const long asn_VAL_104_mandatory = 2; -static const long asn_VAL_105_id_CriticalityDiagnostics = 2; -static const long asn_VAL_105_ignore = 1; -static const long asn_VAL_105_optional = 0; -static const asn_ioc_cell_t asn_IOS_ResetResponseIEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_104_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_104_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_104_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_105_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_105_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_105_optional } -}; -static const asn_ioc_set_t asn_IOS_ResetResponseIEs_1[] = { - { 2, 4, asn_IOS_ResetResponseIEs_1_rows } -}; -static const long asn_VAL_106_id_TransactionID = 49; -static const long asn_VAL_106_reject = 0; -static const long asn_VAL_106_mandatory = 2; -static const long asn_VAL_107_id_RANfunctionsAdded = 10; -static const long asn_VAL_107_reject = 0; -static const long asn_VAL_107_optional = 0; -static const long asn_VAL_108_id_RANfunctionsModified = 12; -static const long asn_VAL_108_reject = 0; -static const long asn_VAL_108_optional = 0; -static const long asn_VAL_109_id_RANfunctionsDeleted = 11; -static const long asn_VAL_109_reject = 0; -static const long asn_VAL_109_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceUpdate_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_106_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_106_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_106_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_107_id_RANfunctionsAdded }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_107_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_107_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_108_id_RANfunctionsModified }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_108_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_108_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_109_id_RANfunctionsDeleted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_109_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_109_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceUpdate_IEs_1[] = { - { 4, 4, asn_IOS_RICserviceUpdate_IEs_1_rows } -}; -static const long asn_VAL_112_id_TransactionID = 49; -static const long asn_VAL_112_reject = 0; -static const long asn_VAL_112_mandatory = 2; -static const long asn_VAL_113_id_RANfunctionsAccepted = 9; -static const long asn_VAL_113_reject = 0; -static const long asn_VAL_113_mandatory = 2; -static const long asn_VAL_114_id_RANfunctionsRejected = 13; -static const long asn_VAL_114_reject = 0; -static const long asn_VAL_114_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_112_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_112_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_112_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_113_id_RANfunctionsAccepted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_113_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_113_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_114_id_RANfunctionsRejected }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_114_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_114_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1[] = { - { 3, 4, asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows } -}; -static const long asn_VAL_116_id_TransactionID = 49; -static const long asn_VAL_116_reject = 0; -static const long asn_VAL_116_mandatory = 2; -static const long asn_VAL_117_id_Cause = 1; -static const long asn_VAL_117_reject = 0; -static const long asn_VAL_117_mandatory = 2; -static const long asn_VAL_118_id_TimeToWait = 31; -static const long asn_VAL_118_ignore = 1; -static const long asn_VAL_118_optional = 0; -static const long asn_VAL_119_id_CriticalityDiagnostics = 2; -static const long asn_VAL_119_ignore = 1; -static const long asn_VAL_119_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceUpdateFailure_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_116_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_116_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_116_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_117_id_Cause }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_117_reject }, - { "&Value", aioc__type, &asn_DEF_Cause }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_117_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_118_id_TimeToWait }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_118_ignore }, - { "&Value", aioc__type, &asn_DEF_TimeToWait }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_118_optional }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_119_id_CriticalityDiagnostics }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_119_ignore }, - { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_119_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceUpdateFailure_IEs_1[] = { - { 4, 4, asn_IOS_RICserviceUpdateFailure_IEs_1_rows } -}; -static const long asn_VAL_120_id_TransactionID = 49; -static const long asn_VAL_120_reject = 0; -static const long asn_VAL_120_mandatory = 2; -static const long asn_VAL_121_id_RANfunctionsAccepted = 9; -static const long asn_VAL_121_reject = 0; -static const long asn_VAL_121_optional = 0; -static const asn_ioc_cell_t asn_IOS_RICserviceQuery_IEs_1_rows[] = { - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_120_id_TransactionID }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_120_reject }, - { "&Value", aioc__type, &asn_DEF_TransactionID }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_120_mandatory }, - { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_121_id_RANfunctionsAccepted }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_121_reject }, - { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, - { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_121_optional } -}; -static const asn_ioc_set_t asn_IOS_RICserviceQuery_IEs_1[] = { - { 2, 4, asn_IOS_RICserviceQuery_IEs_1_rows } -}; -static int -memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICaction_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICaction_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICaction_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICaction_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICaction_NotAdmitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICaction_NotAdmitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscription_withCause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscription_withCause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscription_withCause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscription_withCause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscription_withCause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscription_withCause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdate_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdate_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdateRemove_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateRemove_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateRemove_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdateRemove_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateRemove_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateRemove_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionSetupFailed_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionSetupFailed_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionSetupFailed_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionSetupFailed_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionSetupFailed_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionSetupFailed_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigAddition_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAddition_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigAddition_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAddition_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAddition_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigUpdate_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigUpdate_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdate_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigRemoval_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigRemoval_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemoval_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeTNLassociationRemoval_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeTNLassociationRemoval_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeTNLassociationRemoval_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigAdditionAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigAdditionAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigAdditionAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigUpdateAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigUpdateAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigUpdateAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigRemovalAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeComponentConfigRemovalAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeComponentConfigRemovalAck_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RANfunction_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RANfunction_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RANfunctionID_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RANfunctionID_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RANfunctionIDcause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RANfunctionIDcause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequired_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequired_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICsubscriptionDeleteRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequired_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequired_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICindication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICindication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICcontrolRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICcontrolRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICcontrolAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICcontrolAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICcontrolFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICcontrolFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_ErrorIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_ErrorIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2setupRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2setupRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2setupResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2setupResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2setupFailureIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2setupFailureIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdate_IEs, id)); - const int indexToPresence[5] = { - E2connectionUpdate_IEs__value_PR_NOTHING, - E2connectionUpdate_IEs__value_PR_TransactionID, - E2connectionUpdate_IEs__value_PR_E2connectionUpdate_List, - E2connectionUpdate_IEs__value_PR_E2connectionUpdateRemove_List, - E2connectionUpdate_IEs__value_PR_E2connectionUpdate_List - }; - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = indexToPresence[presence_index]; - break; - } - } - - return result; -} - -static int -memb_value_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdateAck_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateAck_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateAck_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdateAck_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateAck_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateAck_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2connectionUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2connectionUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2connectionUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2connectionUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_E2nodeConfigurationUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2nodeConfigurationUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2nodeConfigurationUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_ResetRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_ResetRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_ResetResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_ResetResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); - const int indexToPresence[5] = { - RICserviceUpdate_IEs__value_PR_NOTHING, - RICserviceUpdate_IEs__value_PR_TransactionID, - RICserviceUpdate_IEs__value_PR_RANfunctions_List, - RICserviceUpdate_IEs__value_PR_RANfunctions_List, - RICserviceUpdate_IEs__value_PR_RANfunctionsID_List - }; - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = indexToPresence[presence_index]; - break; - } - } - - return result; -} - -static int -memb_value_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static int -memb_id_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_RICserviceQuery_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 1; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_RICserviceQuery_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; - size_t constraining_column = 0; /* &id */ - size_t for_column = 2; /* &Value */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_8 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_12 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_16 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_20 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_24 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_28 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_32 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_36 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_40 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_44 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_48 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_52 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_56 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_60 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_64 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_68 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_72 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_76 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_80 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_84 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_88 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_92 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_96 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_100 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_104 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_106 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_107 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_108 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_110 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_111 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_112 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_114 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_115 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_116 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_118 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_119 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_120 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_122 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_123 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_124 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_126 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_127 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_128 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_130 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_131 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_132 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_134 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_135 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_136 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_138 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_139 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_140 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_142 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_143 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_144 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_146 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_147 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_148 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_150 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_151 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_152 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_154 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_155 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_156 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_158 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_159 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_160 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_162 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_163 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_164 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_166 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_167 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_168 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_170 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_171 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_172 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_id_constr_174 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_175 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_176 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs__value, choice.RICaction_ToBeSetup_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_ToBeSetup_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-ToBeSetup-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeSetup-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct RICaction_ToBeSetup_ItemIEs__value), - offsetof(struct RICaction_ToBeSetup_ItemIEs__value, _asn_ctx), - offsetof(struct RICaction_ToBeSetup_ItemIEs__value, present), - sizeof(((struct RICaction_ToBeSetup_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_4, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 1, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICaction_ToBeSetup_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_RICaction_ToBeSetup_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 = { - sizeof(struct RICaction_ToBeSetup_ItemIEs), - offsetof(struct RICaction_ToBeSetup_ItemIEs, _asn_ctx), - asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs = { - "RICaction-ToBeSetup-ItemIEs", - "RICaction-ToBeSetup-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, - sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ - asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_ToBeSetup_ItemIEs_1, - 3, /* Elements count */ - &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_8[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs__value, choice.RICaction_Admitted_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_Admitted_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-Admitted-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_8[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-Admitted-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_8 = { - sizeof(struct RICaction_Admitted_ItemIEs__value), - offsetof(struct RICaction_Admitted_ItemIEs__value, _asn_ctx), - offsetof(struct RICaction_Admitted_ItemIEs__value, present), - sizeof(((struct RICaction_Admitted_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_8, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_8 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_8, - 1, /* Elements count */ - &asn_SPC_value_specs_8 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_6, memb_id_constraint_5 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICaction_Admitted_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_7, memb_criticality_constraint_5 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_8, - select_RICaction_Admitted_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_8, memb_value_constraint_5 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_ItemIEs_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5 = { - sizeof(struct RICaction_Admitted_ItemIEs), - offsetof(struct RICaction_Admitted_ItemIEs, _asn_ctx), - asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs = { - "RICaction-Admitted-ItemIEs", - "RICaction-Admitted-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_Admitted_ItemIEs_tags_5, - sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) - /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ - asn_DEF_RICaction_Admitted_ItemIEs_tags_5, /* Same as above */ - sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) - /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_Admitted_ItemIEs_5, - 3, /* Elements count */ - &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_12[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs__value, choice.RICaction_NotAdmitted_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_NotAdmitted_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-NotAdmitted-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_12[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-NotAdmitted-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_12 = { - sizeof(struct RICaction_NotAdmitted_ItemIEs__value), - offsetof(struct RICaction_NotAdmitted_ItemIEs__value, _asn_ctx), - offsetof(struct RICaction_NotAdmitted_ItemIEs__value, present), - sizeof(((struct RICaction_NotAdmitted_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_12, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_12 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_12, - 1, /* Elements count */ - &asn_SPC_value_specs_12 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_10, memb_id_constraint_9 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICaction_NotAdmitted_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_11, memb_criticality_constraint_9 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_12, - select_RICaction_NotAdmitted_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_12, memb_value_constraint_9 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 = { - sizeof(struct RICaction_NotAdmitted_ItemIEs), - offsetof(struct RICaction_NotAdmitted_ItemIEs, _asn_ctx), - asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs = { - "RICaction-NotAdmitted-ItemIEs", - "RICaction-NotAdmitted-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, - sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) - /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ - asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, /* Same as above */ - sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) - /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_NotAdmitted_ItemIEs_9, - 3, /* Elements count */ - &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_16[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs__value, choice.RICsubscription_withCause_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscription_withCause_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscription-withCause-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_16[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICsubscription-withCause-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_16 = { - sizeof(struct RICsubscription_withCause_ItemIEs__value), - offsetof(struct RICsubscription_withCause_ItemIEs__value, _asn_ctx), - offsetof(struct RICsubscription_withCause_ItemIEs__value, present), - sizeof(((struct RICsubscription_withCause_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_16, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_16 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_16, - 1, /* Elements count */ - &asn_SPC_value_specs_16 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscription_withCause_ItemIEs_13[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_14, memb_id_constraint_13 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscription_withCause_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_15, memb_criticality_constraint_13 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_16, - select_RICsubscription_withCause_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_16, memb_value_constraint_13 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscription_withCause_ItemIEs_tags_13[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscription_withCause_ItemIEs_tag2el_13[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_ItemIEs_specs_13 = { - sizeof(struct RICsubscription_withCause_ItemIEs), - offsetof(struct RICsubscription_withCause_ItemIEs, _asn_ctx), - asn_MAP_RICsubscription_withCause_ItemIEs_tag2el_13, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_ItemIEs = { - "RICsubscription-withCause-ItemIEs", - "RICsubscription-withCause-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscription_withCause_ItemIEs_tags_13, - sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13) - /sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13[0]), /* 1 */ - asn_DEF_RICsubscription_withCause_ItemIEs_tags_13, /* Same as above */ - sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13) - /sizeof(asn_DEF_RICsubscription_withCause_ItemIEs_tags_13[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscription_withCause_ItemIEs_13, - 3, /* Elements count */ - &asn_SPC_RICsubscription_withCause_ItemIEs_specs_13 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_20[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs__value, choice.E2connectionUpdate_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdate-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_20[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2connectionUpdate-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_20 = { - sizeof(struct E2connectionUpdate_ItemIEs__value), - offsetof(struct E2connectionUpdate_ItemIEs__value, _asn_ctx), - offsetof(struct E2connectionUpdate_ItemIEs__value, present), - sizeof(((struct E2connectionUpdate_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_20, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_20 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_20, - 1, /* Elements count */ - &asn_SPC_value_specs_20 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdate_ItemIEs_17[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_18, memb_id_constraint_17 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdate_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_19, memb_criticality_constraint_17 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_20, - select_E2connectionUpdate_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_20, memb_value_constraint_17 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_ItemIEs_tags_17[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_ItemIEs_tag2el_17[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_ItemIEs_specs_17 = { - sizeof(struct E2connectionUpdate_ItemIEs), - offsetof(struct E2connectionUpdate_ItemIEs, _asn_ctx), - asn_MAP_E2connectionUpdate_ItemIEs_tag2el_17, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_ItemIEs = { - "E2connectionUpdate-ItemIEs", - "E2connectionUpdate-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdate_ItemIEs_tags_17, - sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_17) - /sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_17[0]), /* 1 */ - asn_DEF_E2connectionUpdate_ItemIEs_tags_17, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_17) - /sizeof(asn_DEF_E2connectionUpdate_ItemIEs_tags_17[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_ItemIEs_17, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdate_ItemIEs_specs_17 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_24[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs__value, choice.E2connectionUpdateRemove_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateRemove_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdateRemove-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_24[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2connectionUpdateRemove-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_24 = { - sizeof(struct E2connectionUpdateRemove_ItemIEs__value), - offsetof(struct E2connectionUpdateRemove_ItemIEs__value, _asn_ctx), - offsetof(struct E2connectionUpdateRemove_ItemIEs__value, present), - sizeof(((struct E2connectionUpdateRemove_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_24, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_24 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_24, - 1, /* Elements count */ - &asn_SPC_value_specs_24 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_ItemIEs_21[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_22, memb_id_constraint_21 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdateRemove_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_23, memb_criticality_constraint_21 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateRemove_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_24, - select_E2connectionUpdateRemove_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_24, memb_value_constraint_21 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateRemove_ItemIEs_tag2el_21[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_21 = { - sizeof(struct E2connectionUpdateRemove_ItemIEs), - offsetof(struct E2connectionUpdateRemove_ItemIEs, _asn_ctx), - asn_MAP_E2connectionUpdateRemove_ItemIEs_tag2el_21, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_ItemIEs = { - "E2connectionUpdateRemove-ItemIEs", - "E2connectionUpdateRemove-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21, - sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21) - /sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21[0]), /* 1 */ - asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21) - /sizeof(asn_DEF_E2connectionUpdateRemove_ItemIEs_tags_21[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateRemove_ItemIEs_21, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_21 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_28[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs__value, choice.E2connectionSetupFailed_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionSetupFailed_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionSetupFailed-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_28[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2connectionSetupFailed-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_28 = { - sizeof(struct E2connectionSetupFailed_ItemIEs__value), - offsetof(struct E2connectionSetupFailed_ItemIEs__value, _asn_ctx), - offsetof(struct E2connectionSetupFailed_ItemIEs__value, present), - sizeof(((struct E2connectionSetupFailed_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_28, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_28 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_28, - 1, /* Elements count */ - &asn_SPC_value_specs_28 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_ItemIEs_25[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_26, memb_id_constraint_25 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionSetupFailed_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_27, memb_criticality_constraint_25 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionSetupFailed_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_28, - select_E2connectionSetupFailed_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_28, memb_value_constraint_25 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionSetupFailed_ItemIEs_tag2el_25[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_ItemIEs_specs_25 = { - sizeof(struct E2connectionSetupFailed_ItemIEs), - offsetof(struct E2connectionSetupFailed_ItemIEs, _asn_ctx), - asn_MAP_E2connectionSetupFailed_ItemIEs_tag2el_25, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_ItemIEs = { - "E2connectionSetupFailed-ItemIEs", - "E2connectionSetupFailed-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25, - sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25) - /sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25[0]), /* 1 */ - asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25, /* Same as above */ - sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25) - /sizeof(asn_DEF_E2connectionSetupFailed_ItemIEs_tags_25[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionSetupFailed_ItemIEs_25, - 3, /* Elements count */ - &asn_SPC_E2connectionSetupFailed_ItemIEs_specs_25 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_32[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs__value, choice.E2nodeComponentConfigAddition_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAddition_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAddition-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_32[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigAddition-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_32 = { - sizeof(struct E2nodeComponentConfigAddition_ItemIEs__value), - offsetof(struct E2nodeComponentConfigAddition_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigAddition_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigAddition_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_32, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_32 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_32, - 1, /* Elements count */ - &asn_SPC_value_specs_32 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_ItemIEs_29[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_30, memb_id_constraint_29 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigAddition_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_31, memb_criticality_constraint_29 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAddition_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_32, - select_E2nodeComponentConfigAddition_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_32, memb_value_constraint_29 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAddition_ItemIEs_tag2el_29[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_29 = { - sizeof(struct E2nodeComponentConfigAddition_ItemIEs), - offsetof(struct E2nodeComponentConfigAddition_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigAddition_ItemIEs_tag2el_29, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_ItemIEs = { - "E2nodeComponentConfigAddition-ItemIEs", - "E2nodeComponentConfigAddition-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29, - sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29) - /sizeof(asn_DEF_E2nodeComponentConfigAddition_ItemIEs_tags_29[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAddition_ItemIEs_29, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_29 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_36[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs__value, choice.E2nodeComponentConfigUpdate_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigUpdate_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigUpdate-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_36[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigUpdate-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_36 = { - sizeof(struct E2nodeComponentConfigUpdate_ItemIEs__value), - offsetof(struct E2nodeComponentConfigUpdate_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigUpdate_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigUpdate_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_36, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_36 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_36, - 1, /* Elements count */ - &asn_SPC_value_specs_36 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_33[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_34, memb_id_constraint_33 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigUpdate_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_35, memb_criticality_constraint_33 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_36, - select_E2nodeComponentConfigUpdate_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_36, memb_value_constraint_33 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdate_ItemIEs_tag2el_33[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_33 = { - sizeof(struct E2nodeComponentConfigUpdate_ItemIEs), - offsetof(struct E2nodeComponentConfigUpdate_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigUpdate_ItemIEs_tag2el_33, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_ItemIEs = { - "E2nodeComponentConfigUpdate-ItemIEs", - "E2nodeComponentConfigUpdate-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33, - sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33) - /sizeof(asn_DEF_E2nodeComponentConfigUpdate_ItemIEs_tags_33[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_33, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_33 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_40[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs__value, choice.E2nodeComponentConfigRemoval_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigRemoval_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigRemoval-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_40[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigRemoval-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_40 = { - sizeof(struct E2nodeComponentConfigRemoval_ItemIEs__value), - offsetof(struct E2nodeComponentConfigRemoval_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigRemoval_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigRemoval_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_40, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_40 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_40, - 1, /* Elements count */ - &asn_SPC_value_specs_40 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_37[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_38, memb_id_constraint_37 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigRemoval_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_39, memb_criticality_constraint_37 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_40, - select_E2nodeComponentConfigRemoval_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_40, memb_value_constraint_37 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemoval_ItemIEs_tag2el_37[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_37 = { - sizeof(struct E2nodeComponentConfigRemoval_ItemIEs), - offsetof(struct E2nodeComponentConfigRemoval_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigRemoval_ItemIEs_tag2el_37, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_ItemIEs = { - "E2nodeComponentConfigRemoval-ItemIEs", - "E2nodeComponentConfigRemoval-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37, - sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37) - /sizeof(asn_DEF_E2nodeComponentConfigRemoval_ItemIEs_tags_37[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_37, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_37 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_44[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs__value, choice.E2nodeTNLassociationRemoval_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeTNLassociationRemoval_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeTNLassociationRemoval-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_44[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeTNLassociationRemoval-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_44 = { - sizeof(struct E2nodeTNLassociationRemoval_ItemIEs__value), - offsetof(struct E2nodeTNLassociationRemoval_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeTNLassociationRemoval_ItemIEs__value, present), - sizeof(((struct E2nodeTNLassociationRemoval_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_44, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_44 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_44, - 1, /* Elements count */ - &asn_SPC_value_specs_44 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_41[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_42, memb_id_constraint_41 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeTNLassociationRemoval_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_43, memb_criticality_constraint_41 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_44, - select_E2nodeTNLassociationRemoval_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_44, memb_value_constraint_41 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeTNLassociationRemoval_ItemIEs_tag2el_41[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_41 = { - sizeof(struct E2nodeTNLassociationRemoval_ItemIEs), - offsetof(struct E2nodeTNLassociationRemoval_ItemIEs, _asn_ctx), - asn_MAP_E2nodeTNLassociationRemoval_ItemIEs_tag2el_41, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_ItemIEs = { - "E2nodeTNLassociationRemoval-ItemIEs", - "E2nodeTNLassociationRemoval-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41, - sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41[0]), /* 1 */ - asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41, /* Same as above */ - sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41) - /sizeof(asn_DEF_E2nodeTNLassociationRemoval_ItemIEs_tags_41[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_41, - 3, /* Elements count */ - &asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_41 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_48[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value, choice.E2nodeComponentConfigAdditionAck_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAdditionAck_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAdditionAck-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_48[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigAdditionAck-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_48 = { - sizeof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value), - offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigAdditionAck_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_48, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_48 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_48, - 1, /* Elements count */ - &asn_SPC_value_specs_48 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_45[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_46, memb_id_constraint_45 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigAdditionAck_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_47, memb_criticality_constraint_45 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_48, - select_E2nodeComponentConfigAdditionAck_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_48, memb_value_constraint_45 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigAdditionAck_ItemIEs_tag2el_45[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_45 = { - sizeof(struct E2nodeComponentConfigAdditionAck_ItemIEs), - offsetof(struct E2nodeComponentConfigAdditionAck_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigAdditionAck_ItemIEs_tag2el_45, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs = { - "E2nodeComponentConfigAdditionAck-ItemIEs", - "E2nodeComponentConfigAdditionAck-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45, - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45) - /sizeof(asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs_tags_45[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_45, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_45 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_52[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value, choice.E2nodeComponentConfigUpdateAck_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigUpdateAck_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigUpdateAck-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_52[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigUpdateAck-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_52 = { - sizeof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value), - offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigUpdateAck_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_52, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_52 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_52, - 1, /* Elements count */ - &asn_SPC_value_specs_52 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_49[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_50, memb_id_constraint_49 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigUpdateAck_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_51, memb_criticality_constraint_49 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_52, - select_E2nodeComponentConfigUpdateAck_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_52, memb_value_constraint_49 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigUpdateAck_ItemIEs_tag2el_49[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_49 = { - sizeof(struct E2nodeComponentConfigUpdateAck_ItemIEs), - offsetof(struct E2nodeComponentConfigUpdateAck_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigUpdateAck_ItemIEs_tag2el_49, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs = { - "E2nodeComponentConfigUpdateAck-ItemIEs", - "E2nodeComponentConfigUpdateAck-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49, - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49) - /sizeof(asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs_tags_49[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_49, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_49 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_56[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value, choice.E2nodeComponentConfigRemovalAck_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigRemovalAck_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigRemovalAck-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_56[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E2nodeComponentConfigRemovalAck-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_56 = { - sizeof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value), - offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value, _asn_ctx), - offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs__value, present), - sizeof(((struct E2nodeComponentConfigRemovalAck_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_56, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_56 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_56, - 1, /* Elements count */ - &asn_SPC_value_specs_56 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_53[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_54, memb_id_constraint_53 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeComponentConfigRemovalAck_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_55, memb_criticality_constraint_53 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_56, - select_E2nodeComponentConfigRemovalAck_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_56, memb_value_constraint_53 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeComponentConfigRemovalAck_ItemIEs_tag2el_53[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_53 = { - sizeof(struct E2nodeComponentConfigRemovalAck_ItemIEs), - offsetof(struct E2nodeComponentConfigRemovalAck_ItemIEs, _asn_ctx), - asn_MAP_E2nodeComponentConfigRemovalAck_ItemIEs_tag2el_53, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs = { - "E2nodeComponentConfigRemovalAck-ItemIEs", - "E2nodeComponentConfigRemovalAck-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53, - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53[0]), /* 1 */ - asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53, /* Same as above */ - sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53) - /sizeof(asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs_tags_53[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_53, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_53 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_60[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs__value, choice.RANfunction_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunction_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunction-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_60[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunction-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_60 = { - sizeof(struct RANfunction_ItemIEs__value), - offsetof(struct RANfunction_ItemIEs__value, _asn_ctx), - offsetof(struct RANfunction_ItemIEs__value, present), - sizeof(((struct RANfunction_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_60, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_60 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_60, - 1, /* Elements count */ - &asn_SPC_value_specs_60 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_57[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_58, memb_id_constraint_57 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RANfunction_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_59, memb_criticality_constraint_57 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_60, - select_RANfunction_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_60, memb_value_constraint_57 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunction_ItemIEs_tags_57[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunction_ItemIEs_tag2el_57[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_57 = { - sizeof(struct RANfunction_ItemIEs), - offsetof(struct RANfunction_ItemIEs, _asn_ctx), - asn_MAP_RANfunction_ItemIEs_tag2el_57, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs = { - "RANfunction-ItemIEs", - "RANfunction-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RANfunction_ItemIEs_tags_57, - sizeof(asn_DEF_RANfunction_ItemIEs_tags_57) - /sizeof(asn_DEF_RANfunction_ItemIEs_tags_57[0]), /* 1 */ - asn_DEF_RANfunction_ItemIEs_tags_57, /* Same as above */ - sizeof(asn_DEF_RANfunction_ItemIEs_tags_57) - /sizeof(asn_DEF_RANfunction_ItemIEs_tags_57[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_ItemIEs_57, - 3, /* Elements count */ - &asn_SPC_RANfunction_ItemIEs_specs_57 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_64[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs__value, choice.RANfunctionID_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionID_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_64[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionID-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_64 = { - sizeof(struct RANfunctionID_ItemIEs__value), - offsetof(struct RANfunctionID_ItemIEs__value, _asn_ctx), - offsetof(struct RANfunctionID_ItemIEs__value, present), - sizeof(((struct RANfunctionID_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_64, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_64 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_64, - 1, /* Elements count */ - &asn_SPC_value_specs_64 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_61[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_62, memb_id_constraint_61 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RANfunctionID_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_63, memb_criticality_constraint_61 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_64, - select_RANfunctionID_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_64, memb_value_constraint_61 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionID_ItemIEs_tags_61[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_ItemIEs_tag2el_61[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_61 = { - sizeof(struct RANfunctionID_ItemIEs), - offsetof(struct RANfunctionID_ItemIEs, _asn_ctx), - asn_MAP_RANfunctionID_ItemIEs_tag2el_61, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs = { - "RANfunctionID-ItemIEs", - "RANfunctionID-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionID_ItemIEs_tags_61, - sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_61) - /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_61[0]), /* 1 */ - asn_DEF_RANfunctionID_ItemIEs_tags_61, /* Same as above */ - sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_61) - /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_61[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionID_ItemIEs_61, - 3, /* Elements count */ - &asn_SPC_RANfunctionID_ItemIEs_specs_61 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_68[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs__value, choice.RANfunctionIDcause_Item), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionIDcause_Item, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionIDcause-Item" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_68[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionIDcause-Item */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_68 = { - sizeof(struct RANfunctionIDcause_ItemIEs__value), - offsetof(struct RANfunctionIDcause_ItemIEs__value, _asn_ctx), - offsetof(struct RANfunctionIDcause_ItemIEs__value, present), - sizeof(((struct RANfunctionIDcause_ItemIEs__value *)0)->present), - asn_MAP_value_tag2el_68, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_68 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_68, - 1, /* Elements count */ - &asn_SPC_value_specs_68 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_65[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_66, memb_id_constraint_65 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RANfunctionIDcause_ItemIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_67, memb_criticality_constraint_65 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_68, - select_RANfunctionIDcause_ItemIEs_value_type, - { 0, &asn_PER_memb_value_constr_68, memb_value_constraint_65 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_ItemIEs_tags_65[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_65[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_65 = { - sizeof(struct RANfunctionIDcause_ItemIEs), - offsetof(struct RANfunctionIDcause_ItemIEs, _asn_ctx), - asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_65, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs = { - "RANfunctionIDcause-ItemIEs", - "RANfunctionIDcause-ItemIEs", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionIDcause_ItemIEs_tags_65, - sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_65) - /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_65[0]), /* 1 */ - asn_DEF_RANfunctionIDcause_ItemIEs_tags_65, /* Same as above */ - sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_65) - /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_65[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionIDcause_ItemIEs_65, - 3, /* Elements count */ - &asn_SPC_RANfunctionIDcause_ItemIEs_specs_65 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_72[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscriptionDetails), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDetails, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDetails" - }, -}; -static const unsigned asn_MAP_value_to_canonical_72[] = { 1, 0, 2 }; -static const unsigned asn_MAP_value_from_canonical_72[] = { 1, 0, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_72[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RICsubscriptionDetails */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_72 = { - sizeof(struct RICsubscriptionRequest_IEs__value), - offsetof(struct RICsubscriptionRequest_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionRequest_IEs__value, present), - sizeof(((struct RICsubscriptionRequest_IEs__value *)0)->present), - asn_MAP_value_tag2el_72, - 3, /* Count of tags in the map */ - asn_MAP_value_to_canonical_72, - asn_MAP_value_from_canonical_72, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_72 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_72, - 3, /* Elements count */ - &asn_SPC_value_specs_72 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_69[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_70, memb_id_constraint_69 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionRequest_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_71, memb_criticality_constraint_69 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_72, - select_RICsubscriptionRequest_IEs_value_type, - { 0, &asn_PER_memb_value_constr_72, memb_value_constraint_69 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_IEs_tags_69[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_IEs_tag2el_69[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_69 = { - sizeof(struct RICsubscriptionRequest_IEs), - offsetof(struct RICsubscriptionRequest_IEs, _asn_ctx), - asn_MAP_RICsubscriptionRequest_IEs_tag2el_69, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs = { - "RICsubscriptionRequest-IEs", - "RICsubscriptionRequest-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionRequest_IEs_tags_69, - sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_69) - /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_69[0]), /* 1 */ - asn_DEF_RICsubscriptionRequest_IEs_tags_69, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_69) - /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_69[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionRequest_IEs_69, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionRequest_IEs_specs_69 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_76[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_Admitted_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_Admitted_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-Admitted-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_NotAdmitted_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICaction_NotAdmitted_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICaction-NotAdmitted-List" - }, -}; -static const unsigned asn_MAP_value_to_canonical_76[] = { 1, 0, 2, 3 }; -static const unsigned asn_MAP_value_from_canonical_76[] = { 1, 0, 2, 3 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_76[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-Admitted-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RICaction-NotAdmitted-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_76 = { - sizeof(struct RICsubscriptionResponse_IEs__value), - offsetof(struct RICsubscriptionResponse_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionResponse_IEs__value, present), - sizeof(((struct RICsubscriptionResponse_IEs__value *)0)->present), - asn_MAP_value_tag2el_76, - 4, /* Count of tags in the map */ - asn_MAP_value_to_canonical_76, - asn_MAP_value_from_canonical_76, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_76 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_76, - 4, /* Elements count */ - &asn_SPC_value_specs_76 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_73[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_74, memb_id_constraint_73 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionResponse_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_75, memb_criticality_constraint_73 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_76, - select_RICsubscriptionResponse_IEs_value_type, - { 0, &asn_PER_memb_value_constr_76, memb_value_constraint_73 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_IEs_tags_73[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_IEs_tag2el_73[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_73 = { - sizeof(struct RICsubscriptionResponse_IEs), - offsetof(struct RICsubscriptionResponse_IEs, _asn_ctx), - asn_MAP_RICsubscriptionResponse_IEs_tag2el_73, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs = { - "RICsubscriptionResponse-IEs", - "RICsubscriptionResponse-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionResponse_IEs_tags_73, - sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_73) - /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_73[0]), /* 1 */ - asn_DEF_RICsubscriptionResponse_IEs_tags_73, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_73) - /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_73[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionResponse_IEs_73, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionResponse_IEs_specs_73 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_80[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_80[] = { 1, 0, 3, 2 }; -static const unsigned asn_MAP_value_from_canonical_80[] = { 1, 0, 3, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_80[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_80 = { - sizeof(struct RICsubscriptionFailure_IEs__value), - offsetof(struct RICsubscriptionFailure_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionFailure_IEs__value, present), - sizeof(((struct RICsubscriptionFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_80, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_80, - asn_MAP_value_from_canonical_80, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_80 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_80, - 4, /* Elements count */ - &asn_SPC_value_specs_80 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_77[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_78, memb_id_constraint_77 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_79, memb_criticality_constraint_77 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_80, - select_RICsubscriptionFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_80, memb_value_constraint_77 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_IEs_tags_77[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_IEs_tag2el_77[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_77 = { - sizeof(struct RICsubscriptionFailure_IEs), - offsetof(struct RICsubscriptionFailure_IEs, _asn_ctx), - asn_MAP_RICsubscriptionFailure_IEs_tag2el_77, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs = { - "RICsubscriptionFailure-IEs", - "RICsubscriptionFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionFailure_IEs_tags_77, - sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_77) - /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_77[0]), /* 1 */ - asn_DEF_RICsubscriptionFailure_IEs_tags_77, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_77) - /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_77[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionFailure_IEs_77, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionFailure_IEs_specs_77 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_84[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, -}; -static const unsigned asn_MAP_value_to_canonical_84[] = { 1, 0 }; -static const unsigned asn_MAP_value_from_canonical_84[] = { 1, 0 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_84[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_84 = { - sizeof(struct RICsubscriptionDeleteRequest_IEs__value), - offsetof(struct RICsubscriptionDeleteRequest_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteRequest_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteRequest_IEs__value *)0)->present), - asn_MAP_value_tag2el_84, - 2, /* Count of tags in the map */ - asn_MAP_value_to_canonical_84, - asn_MAP_value_from_canonical_84, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_84 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_84, - 2, /* Elements count */ - &asn_SPC_value_specs_84 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_81[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_82, memb_id_constraint_81 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteRequest_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_83, memb_criticality_constraint_81 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_84, - select_RICsubscriptionDeleteRequest_IEs_value_type, - { 0, &asn_PER_memb_value_constr_84, memb_value_constraint_81 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_81[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_81 = { - sizeof(struct RICsubscriptionDeleteRequest_IEs), - offsetof(struct RICsubscriptionDeleteRequest_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_81, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs = { - "RICsubscriptionDeleteRequest-IEs", - "RICsubscriptionDeleteRequest-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81, - sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_81[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequest_IEs_81, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_81 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_88[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, -}; -static const unsigned asn_MAP_value_to_canonical_88[] = { 1, 0 }; -static const unsigned asn_MAP_value_from_canonical_88[] = { 1, 0 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_88[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_88 = { - sizeof(struct RICsubscriptionDeleteResponse_IEs__value), - offsetof(struct RICsubscriptionDeleteResponse_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteResponse_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteResponse_IEs__value *)0)->present), - asn_MAP_value_tag2el_88, - 2, /* Count of tags in the map */ - asn_MAP_value_to_canonical_88, - asn_MAP_value_from_canonical_88, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_88 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_88, - 2, /* Elements count */ - &asn_SPC_value_specs_88 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_85[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_86, memb_id_constraint_85 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteResponse_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_87, memb_criticality_constraint_85 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_88, - select_RICsubscriptionDeleteResponse_IEs_value_type, - { 0, &asn_PER_memb_value_constr_88, memb_value_constraint_85 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_85[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_85 = { - sizeof(struct RICsubscriptionDeleteResponse_IEs), - offsetof(struct RICsubscriptionDeleteResponse_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_85, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs = { - "RICsubscriptionDeleteResponse-IEs", - "RICsubscriptionDeleteResponse-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85, - sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_85[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteResponse_IEs_85, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_85 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_92[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_92[] = { 1, 0, 3, 2 }; -static const unsigned asn_MAP_value_from_canonical_92[] = { 1, 0, 3, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_92[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_92 = { - sizeof(struct RICsubscriptionDeleteFailure_IEs__value), - offsetof(struct RICsubscriptionDeleteFailure_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteFailure_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_92, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_92, - asn_MAP_value_from_canonical_92, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_92 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_92, - 4, /* Elements count */ - &asn_SPC_value_specs_92 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_89[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_90, memb_id_constraint_89 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_91, memb_criticality_constraint_89 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_92, - select_RICsubscriptionDeleteFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_92, memb_value_constraint_89 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_89[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_89 = { - sizeof(struct RICsubscriptionDeleteFailure_IEs), - offsetof(struct RICsubscriptionDeleteFailure_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_89, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs = { - "RICsubscriptionDeleteFailure-IEs", - "RICsubscriptionDeleteFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89, - sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_89[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteFailure_IEs_89, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_89 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_96[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs__value, choice.RICsubscription_List_withCause), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscription_List_withCause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscription-List-withCause" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_96[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICsubscription-List-withCause */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_96 = { - sizeof(struct RICsubscriptionDeleteRequired_IEs__value), - offsetof(struct RICsubscriptionDeleteRequired_IEs__value, _asn_ctx), - offsetof(struct RICsubscriptionDeleteRequired_IEs__value, present), - sizeof(((struct RICsubscriptionDeleteRequired_IEs__value *)0)->present), - asn_MAP_value_tag2el_96, - 1, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_96 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_96, - 1, /* Elements count */ - &asn_SPC_value_specs_96 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_IEs_93[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_94, memb_id_constraint_93 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICsubscriptionDeleteRequired_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_95, memb_criticality_constraint_93 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_96, - select_RICsubscriptionDeleteRequired_IEs_value_type, - { 0, &asn_PER_memb_value_constr_96, memb_value_constraint_93 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequired_IEs_tag2el_93[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_IEs_specs_93 = { - sizeof(struct RICsubscriptionDeleteRequired_IEs), - offsetof(struct RICsubscriptionDeleteRequired_IEs, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequired_IEs_tag2el_93, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired_IEs = { - "RICsubscriptionDeleteRequired-IEs", - "RICsubscriptionDeleteRequired-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93, - sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93) - /sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93) - /sizeof(asn_DEF_RICsubscriptionDeleteRequired_IEs_tags_93[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequired_IEs_93, - 3, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequired_IEs_specs_93 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_100[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationSN), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RICindicationSN, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationSN" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationType), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_RICindicationType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationType" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationHeader), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICindicationHeader, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationHeader" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationMessage), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICindicationMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICindicationMessage" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, -}; -static const unsigned asn_MAP_value_to_canonical_100[] = { 1, 2, 3, 5, 6, 7, 4, 0 }; -static const unsigned asn_MAP_value_from_canonical_100[] = { 7, 0, 1, 2, 6, 3, 4, 5 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_100[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 2 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* RICactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* RICindicationSN */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 2 }, /* RICindicationHeader */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* RICindicationMessage */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* RICindicationType */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_100 = { - sizeof(struct RICindication_IEs__value), - offsetof(struct RICindication_IEs__value, _asn_ctx), - offsetof(struct RICindication_IEs__value, present), - sizeof(((struct RICindication_IEs__value *)0)->present), - asn_MAP_value_tag2el_100, - 8, /* Count of tags in the map */ - asn_MAP_value_to_canonical_100, - asn_MAP_value_from_canonical_100, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_100 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_100, - 8, /* Elements count */ - &asn_SPC_value_specs_100 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICindication_IEs_97[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_98, memb_id_constraint_97 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICindication_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_99, memb_criticality_constraint_97 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_100, - select_RICindication_IEs_value_type, - { 0, &asn_PER_memb_value_constr_100, memb_value_constraint_97 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICindication_IEs_tags_97[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICindication_IEs_tag2el_97[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_97 = { - sizeof(struct RICindication_IEs), - offsetof(struct RICindication_IEs, _asn_ctx), - asn_MAP_RICindication_IEs_tag2el_97, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICindication_IEs = { - "RICindication-IEs", - "RICindication-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICindication_IEs_tags_97, - sizeof(asn_DEF_RICindication_IEs_tags_97) - /sizeof(asn_DEF_RICindication_IEs_tags_97[0]), /* 1 */ - asn_DEF_RICindication_IEs_tags_97, /* Same as above */ - sizeof(asn_DEF_RICindication_IEs_tags_97) - /sizeof(asn_DEF_RICindication_IEs_tags_97[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICindication_IEs_97, - 3, /* Elements count */ - &asn_SPC_RICindication_IEs_specs_97 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_104[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolHeader), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolHeader, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolHeader" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolMessage), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolMessage, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolMessage" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolAckRequest), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_RICcontrolAckRequest, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolAckRequest" - }, -}; -static const unsigned asn_MAP_value_to_canonical_104[] = { 1, 2, 3, 4, 5, 0 }; -static const unsigned asn_MAP_value_from_canonical_104[] = { 5, 0, 1, 2, 3, 4 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_104[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 2 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 1 }, /* RICcontrolHeader */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -2, 0 }, /* RICcontrolMessage */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* RICcontrolAckRequest */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_104 = { - sizeof(struct RICcontrolRequest_IEs__value), - offsetof(struct RICcontrolRequest_IEs__value, _asn_ctx), - offsetof(struct RICcontrolRequest_IEs__value, present), - sizeof(((struct RICcontrolRequest_IEs__value *)0)->present), - asn_MAP_value_tag2el_104, - 6, /* Count of tags in the map */ - asn_MAP_value_to_canonical_104, - asn_MAP_value_from_canonical_104, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_104 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_104, - 6, /* Elements count */ - &asn_SPC_value_specs_104 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_101[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_102, memb_id_constraint_101 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICcontrolRequest_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_103, memb_criticality_constraint_101 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_104, - select_RICcontrolRequest_IEs_value_type, - { 0, &asn_PER_memb_value_constr_104, memb_value_constraint_101 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_IEs_tags_101[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_IEs_tag2el_101[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_101 = { - sizeof(struct RICcontrolRequest_IEs), - offsetof(struct RICcontrolRequest_IEs, _asn_ctx), - asn_MAP_RICcontrolRequest_IEs_tag2el_101, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs = { - "RICcontrolRequest-IEs", - "RICcontrolRequest-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolRequest_IEs_tags_101, - sizeof(asn_DEF_RICcontrolRequest_IEs_tags_101) - /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_101[0]), /* 1 */ - asn_DEF_RICcontrolRequest_IEs_tags_101, /* Same as above */ - sizeof(asn_DEF_RICcontrolRequest_IEs_tags_101) - /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_101[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolRequest_IEs_101, - 3, /* Elements count */ - &asn_SPC_RICcontrolRequest_IEs_specs_101 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_108[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolOutcome), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolOutcome" - }, -}; -static const unsigned asn_MAP_value_to_canonical_108[] = { 1, 2, 3, 0 }; -static const unsigned asn_MAP_value_from_canonical_108[] = { 3, 0, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_108[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 0 }, /* RICcontrolOutcome */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_108 = { - sizeof(struct RICcontrolAcknowledge_IEs__value), - offsetof(struct RICcontrolAcknowledge_IEs__value, _asn_ctx), - offsetof(struct RICcontrolAcknowledge_IEs__value, present), - sizeof(((struct RICcontrolAcknowledge_IEs__value *)0)->present), - asn_MAP_value_tag2el_108, - 4, /* Count of tags in the map */ - asn_MAP_value_to_canonical_108, - asn_MAP_value_from_canonical_108, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_108 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_108, - 4, /* Elements count */ - &asn_SPC_value_specs_108 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_105[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_106, memb_id_constraint_105 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICcontrolAcknowledge_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_107, memb_criticality_constraint_105 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_108, - select_RICcontrolAcknowledge_IEs_value_type, - { 0, &asn_PER_memb_value_constr_108, memb_value_constraint_105 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_IEs_tags_105[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_IEs_tag2el_105[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_105 = { - sizeof(struct RICcontrolAcknowledge_IEs), - offsetof(struct RICcontrolAcknowledge_IEs, _asn_ctx), - asn_MAP_RICcontrolAcknowledge_IEs_tag2el_105, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs = { - "RICcontrolAcknowledge-IEs", - "RICcontrolAcknowledge-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolAcknowledge_IEs_tags_105, - sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_105) - /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_105[0]), /* 1 */ - asn_DEF_RICcontrolAcknowledge_IEs_tags_105, /* Same as above */ - sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_105) - /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_105[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolAcknowledge_IEs_105, - 3, /* Elements count */ - &asn_SPC_RICcontrolAcknowledge_IEs_specs_105 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_112[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcallProcessID), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcallProcessID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcallProcessID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcontrolOutcome), - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), - 0, - &asn_DEF_RICcontrolOutcome, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolOutcome" - }, -}; -static const unsigned asn_MAP_value_to_canonical_112[] = { 1, 2, 4, 0, 3 }; -static const unsigned asn_MAP_value_from_canonical_112[] = { 3, 0, 1, 4, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_112[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICcontrolOutcome */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* RICrequestID */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 3, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_112 = { - sizeof(struct RICcontrolFailure_IEs__value), - offsetof(struct RICcontrolFailure_IEs__value, _asn_ctx), - offsetof(struct RICcontrolFailure_IEs__value, present), - sizeof(((struct RICcontrolFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_112, - 10, /* Count of tags in the map */ - asn_MAP_value_to_canonical_112, - asn_MAP_value_from_canonical_112, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_112 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_112, - 5, /* Elements count */ - &asn_SPC_value_specs_112 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_109[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_110, memb_id_constraint_109 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICcontrolFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_111, memb_criticality_constraint_109 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_112, - select_RICcontrolFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_112, memb_value_constraint_109 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_IEs_tags_109[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_IEs_tag2el_109[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_109 = { - sizeof(struct RICcontrolFailure_IEs), - offsetof(struct RICcontrolFailure_IEs, _asn_ctx), - asn_MAP_RICcontrolFailure_IEs_tag2el_109, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs = { - "RICcontrolFailure-IEs", - "RICcontrolFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolFailure_IEs_tags_109, - sizeof(asn_DEF_RICcontrolFailure_IEs_tags_109) - /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_109[0]), /* 1 */ - asn_DEF_RICcontrolFailure_IEs_tags_109, /* Same as above */ - sizeof(asn_DEF_RICcontrolFailure_IEs_tags_109) - /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_109[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolFailure_IEs_109, - 3, /* Elements count */ - &asn_SPC_RICcontrolFailure_IEs_specs_109 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_116[] = { - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RICrequestID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICrequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RANfunctionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_116[] = { 0, 2, 1, 4, 3 }; -static const unsigned asn_MAP_value_from_canonical_116[] = { 0, 2, 1, 4, 3 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_116[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* RANfunctionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* RICrequestID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 3, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_116 = { - sizeof(struct ErrorIndication_IEs__value), - offsetof(struct ErrorIndication_IEs__value, _asn_ctx), - offsetof(struct ErrorIndication_IEs__value, present), - sizeof(((struct ErrorIndication_IEs__value *)0)->present), - asn_MAP_value_tag2el_116, - 10, /* Count of tags in the map */ - asn_MAP_value_to_canonical_116, - asn_MAP_value_from_canonical_116, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_116 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_116, - 5, /* Elements count */ - &asn_SPC_value_specs_116 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_113[] = { - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_114, memb_id_constraint_113 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_ErrorIndication_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_115, memb_criticality_constraint_113 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_116, - select_ErrorIndication_IEs_value_type, - { 0, &asn_PER_memb_value_constr_116, memb_value_constraint_113 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_ErrorIndication_IEs_tags_113[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_IEs_tag2el_113[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_113 = { - sizeof(struct ErrorIndication_IEs), - offsetof(struct ErrorIndication_IEs, _asn_ctx), - asn_MAP_ErrorIndication_IEs_tag2el_113, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs = { - "ErrorIndication-IEs", - "ErrorIndication-IEs", - &asn_OP_SEQUENCE, - asn_DEF_ErrorIndication_IEs_tags_113, - sizeof(asn_DEF_ErrorIndication_IEs_tags_113) - /sizeof(asn_DEF_ErrorIndication_IEs_tags_113[0]), /* 1 */ - asn_DEF_ErrorIndication_IEs_tags_113, /* Same as above */ - sizeof(asn_DEF_ErrorIndication_IEs_tags_113) - /sizeof(asn_DEF_ErrorIndication_IEs_tags_113[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ErrorIndication_IEs_113, - 3, /* Elements count */ - &asn_SPC_ErrorIndication_IEs_specs_113 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_120[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.GlobalE2node_ID), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_GlobalE2node_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "GlobalE2node-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.RANfunctions_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctions_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctions-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.E2nodeComponentConfigAddition_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAddition_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAddition-List" - }, -}; -static const unsigned asn_MAP_value_to_canonical_120[] = { 0, 2, 3, 1 }; -static const unsigned asn_MAP_value_from_canonical_120[] = { 0, 3, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_120[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* RANfunctions-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* E2nodeComponentConfigAddition-List */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* eNB */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_120 = { - sizeof(struct E2setupRequestIEs__value), - offsetof(struct E2setupRequestIEs__value, _asn_ctx), - offsetof(struct E2setupRequestIEs__value, present), - sizeof(((struct E2setupRequestIEs__value *)0)->present), - asn_MAP_value_tag2el_120, - 7, /* Count of tags in the map */ - asn_MAP_value_to_canonical_120, - asn_MAP_value_from_canonical_120, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_120 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_120, - 4, /* Elements count */ - &asn_SPC_value_specs_120 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2setupRequestIEs_117[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_118, memb_id_constraint_117 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2setupRequestIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_119, memb_criticality_constraint_117 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_120, - select_E2setupRequestIEs_value_type, - { 0, &asn_PER_memb_value_constr_120, memb_value_constraint_117 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupRequestIEs_tags_117[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupRequestIEs_tag2el_117[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_117 = { - sizeof(struct E2setupRequestIEs), - offsetof(struct E2setupRequestIEs, _asn_ctx), - asn_MAP_E2setupRequestIEs_tag2el_117, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs = { - "E2setupRequestIEs", - "E2setupRequestIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2setupRequestIEs_tags_117, - sizeof(asn_DEF_E2setupRequestIEs_tags_117) - /sizeof(asn_DEF_E2setupRequestIEs_tags_117[0]), /* 1 */ - asn_DEF_E2setupRequestIEs_tags_117, /* Same as above */ - sizeof(asn_DEF_E2setupRequestIEs_tags_117) - /sizeof(asn_DEF_E2setupRequestIEs_tags_117[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupRequestIEs_117, - 3, /* Elements count */ - &asn_SPC_E2setupRequestIEs_specs_117 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_124[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.GlobalRIC_ID), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_GlobalRIC_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "GlobalRIC-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsIDcause_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsIDcause_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsIDcause-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.E2nodeComponentConfigAdditionAck_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAdditionAck_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAdditionAck-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_124[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 3 }, /* GlobalRIC-ID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 2 }, /* RANfunctionsID-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 1 }, /* RANfunctionsIDcause-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 0 } /* E2nodeComponentConfigAdditionAck-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_124 = { - sizeof(struct E2setupResponseIEs__value), - offsetof(struct E2setupResponseIEs__value, _asn_ctx), - offsetof(struct E2setupResponseIEs__value, present), - sizeof(((struct E2setupResponseIEs__value *)0)->present), - asn_MAP_value_tag2el_124, - 5, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_124 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_124, - 5, /* Elements count */ - &asn_SPC_value_specs_124 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2setupResponseIEs_121[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_122, memb_id_constraint_121 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2setupResponseIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_123, memb_criticality_constraint_121 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_124, - select_E2setupResponseIEs_value_type, - { 0, &asn_PER_memb_value_constr_124, memb_value_constraint_121 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupResponseIEs_tags_121[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupResponseIEs_tag2el_121[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_121 = { - sizeof(struct E2setupResponseIEs), - offsetof(struct E2setupResponseIEs, _asn_ctx), - asn_MAP_E2setupResponseIEs_tag2el_121, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs = { - "E2setupResponseIEs", - "E2setupResponseIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2setupResponseIEs_tags_121, - sizeof(asn_DEF_E2setupResponseIEs_tags_121) - /sizeof(asn_DEF_E2setupResponseIEs_tags_121[0]), /* 1 */ - asn_DEF_E2setupResponseIEs_tags_121, /* Same as above */ - sizeof(asn_DEF_E2setupResponseIEs_tags_121) - /sizeof(asn_DEF_E2setupResponseIEs_tags_121[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupResponseIEs_121, - 3, /* Elements count */ - &asn_SPC_E2setupResponseIEs_specs_121 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_128[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TNLinformation), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_TNLinformation, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TNLinformation" - }, -}; -static const unsigned asn_MAP_value_to_canonical_128[] = { 0, 2, 3, 4, 1 }; -static const unsigned asn_MAP_value_from_canonical_128[] = { 0, 4, 1, 2, 3 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_128[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 1 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 }, /* TNLinformation */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_128 = { - sizeof(struct E2setupFailureIEs__value), - offsetof(struct E2setupFailureIEs__value, _asn_ctx), - offsetof(struct E2setupFailureIEs__value, present), - sizeof(((struct E2setupFailureIEs__value *)0)->present), - asn_MAP_value_tag2el_128, - 10, /* Count of tags in the map */ - asn_MAP_value_to_canonical_128, - asn_MAP_value_from_canonical_128, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_128 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_128, - 5, /* Elements count */ - &asn_SPC_value_specs_128 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2setupFailureIEs_125[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_126, memb_id_constraint_125 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2setupFailureIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_127, memb_criticality_constraint_125 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_128, - select_E2setupFailureIEs_value_type, - { 0, &asn_PER_memb_value_constr_128, memb_value_constraint_125 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2setupFailureIEs_tags_125[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2setupFailureIEs_tag2el_125[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_125 = { - sizeof(struct E2setupFailureIEs), - offsetof(struct E2setupFailureIEs, _asn_ctx), - asn_MAP_E2setupFailureIEs_tag2el_125, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs = { - "E2setupFailureIEs", - "E2setupFailureIEs", - &asn_OP_SEQUENCE, - asn_DEF_E2setupFailureIEs_tags_125, - sizeof(asn_DEF_E2setupFailureIEs_tags_125) - /sizeof(asn_DEF_E2setupFailureIEs_tags_125[0]), /* 1 */ - asn_DEF_E2setupFailureIEs_tags_125, /* Same as above */ - sizeof(asn_DEF_E2setupFailureIEs_tags_125) - /sizeof(asn_DEF_E2setupFailureIEs_tags_125[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2setupFailureIEs_125, - 3, /* Elements count */ - &asn_SPC_E2setupFailureIEs_specs_125 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_132[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.E2connectionUpdate_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdate-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs__value, choice.E2connectionUpdateRemove_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateRemove_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdateRemove-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_132[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* E2connectionUpdate-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* E2connectionUpdateRemove-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_132 = { - sizeof(struct E2connectionUpdate_IEs__value), - offsetof(struct E2connectionUpdate_IEs__value, _asn_ctx), - offsetof(struct E2connectionUpdate_IEs__value, present), - sizeof(((struct E2connectionUpdate_IEs__value *)0)->present), - asn_MAP_value_tag2el_132, - 3, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_132 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_132, - 3, /* Elements count */ - &asn_SPC_value_specs_132 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdate_IEs_129[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_130, memb_id_constraint_129 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdate_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_131, memb_criticality_constraint_129 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdate_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_132, - select_E2connectionUpdate_IEs_value_type, - { 0, &asn_PER_memb_value_constr_132, memb_value_constraint_129 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdate_IEs_tags_129[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdate_IEs_tag2el_129[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_IEs_specs_129 = { - sizeof(struct E2connectionUpdate_IEs), - offsetof(struct E2connectionUpdate_IEs, _asn_ctx), - asn_MAP_E2connectionUpdate_IEs_tag2el_129, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_IEs = { - "E2connectionUpdate-IEs", - "E2connectionUpdate-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdate_IEs_tags_129, - sizeof(asn_DEF_E2connectionUpdate_IEs_tags_129) - /sizeof(asn_DEF_E2connectionUpdate_IEs_tags_129[0]), /* 1 */ - asn_DEF_E2connectionUpdate_IEs_tags_129, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdate_IEs_tags_129) - /sizeof(asn_DEF_E2connectionUpdate_IEs_tags_129[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_IEs_129, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdate_IEs_specs_129 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_136[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs__value, choice.E2connectionUpdate_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdate_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdate-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs__value, choice.E2connectionSetupFailed_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionSetupFailed_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionSetupFailed-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_136[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* E2connectionUpdate-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* E2connectionSetupFailed-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_136 = { - sizeof(struct E2connectionUpdateAck_IEs__value), - offsetof(struct E2connectionUpdateAck_IEs__value, _asn_ctx), - offsetof(struct E2connectionUpdateAck_IEs__value, present), - sizeof(((struct E2connectionUpdateAck_IEs__value *)0)->present), - asn_MAP_value_tag2el_136, - 3, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_136 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_136, - 3, /* Elements count */ - &asn_SPC_value_specs_136 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdateAck_IEs_133[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_134, memb_id_constraint_133 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdateAck_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_135, memb_criticality_constraint_133 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateAck_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_136, - select_E2connectionUpdateAck_IEs_value_type, - { 0, &asn_PER_memb_value_constr_136, memb_value_constraint_133 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateAck_IEs_tags_133[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateAck_IEs_tag2el_133[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAck_IEs_specs_133 = { - sizeof(struct E2connectionUpdateAck_IEs), - offsetof(struct E2connectionUpdateAck_IEs, _asn_ctx), - asn_MAP_E2connectionUpdateAck_IEs_tag2el_133, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAck_IEs = { - "E2connectionUpdateAck-IEs", - "E2connectionUpdateAck-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateAck_IEs_tags_133, - sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_133) - /sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_133[0]), /* 1 */ - asn_DEF_E2connectionUpdateAck_IEs_tags_133, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_133) - /sizeof(asn_DEF_E2connectionUpdateAck_IEs_tags_133[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateAck_IEs_133, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdateAck_IEs_specs_133 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_140[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_140[] = { 0, 2, 3, 1 }; -static const unsigned asn_MAP_value_from_canonical_140[] = { 0, 3, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_140[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_140 = { - sizeof(struct E2connectionUpdateFailure_IEs__value), - offsetof(struct E2connectionUpdateFailure_IEs__value, _asn_ctx), - offsetof(struct E2connectionUpdateFailure_IEs__value, present), - sizeof(((struct E2connectionUpdateFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_140, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_140, - asn_MAP_value_from_canonical_140, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_140 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_140, - 4, /* Elements count */ - &asn_SPC_value_specs_140 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_IEs_137[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_138, memb_id_constraint_137 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2connectionUpdateFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_139, memb_criticality_constraint_137 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2connectionUpdateFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_140, - select_E2connectionUpdateFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_140, memb_value_constraint_137 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2connectionUpdateFailure_IEs_tags_137[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2connectionUpdateFailure_IEs_tag2el_137[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_IEs_specs_137 = { - sizeof(struct E2connectionUpdateFailure_IEs), - offsetof(struct E2connectionUpdateFailure_IEs, _asn_ctx), - asn_MAP_E2connectionUpdateFailure_IEs_tag2el_137, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure_IEs = { - "E2connectionUpdateFailure-IEs", - "E2connectionUpdateFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2connectionUpdateFailure_IEs_tags_137, - sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_137) - /sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_137[0]), /* 1 */ - asn_DEF_E2connectionUpdateFailure_IEs_tags_137, /* Same as above */ - sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_137) - /sizeof(asn_DEF_E2connectionUpdateFailure_IEs_tags_137[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateFailure_IEs_137, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdateFailure_IEs_specs_137 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_144[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.GlobalE2node_ID), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_GlobalE2node_ID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "GlobalE2node-ID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeComponentConfigAddition_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAddition_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAddition-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeComponentConfigUpdate_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigUpdate_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigUpdate-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeComponentConfigRemoval_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigRemoval_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigRemoval-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs__value, choice.E2nodeTNLassociationRemoval_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeTNLassociationRemoval_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeTNLassociationRemoval-List" - }, -}; -static const unsigned asn_MAP_value_to_canonical_144[] = { 0, 2, 3, 4, 5, 1 }; -static const unsigned asn_MAP_value_from_canonical_144[] = { 0, 5, 1, 2, 3, 4 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_144[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 3 }, /* E2nodeComponentConfigAddition-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* E2nodeComponentConfigUpdate-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 1 }, /* E2nodeComponentConfigRemoval-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 0 }, /* E2nodeTNLassociationRemoval-List */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* gNB */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* ng-eNB */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* eNB */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_144 = { - sizeof(struct E2nodeConfigurationUpdate_IEs__value), - offsetof(struct E2nodeConfigurationUpdate_IEs__value, _asn_ctx), - offsetof(struct E2nodeConfigurationUpdate_IEs__value, present), - sizeof(((struct E2nodeConfigurationUpdate_IEs__value *)0)->present), - asn_MAP_value_tag2el_144, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_144, - asn_MAP_value_from_canonical_144, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_144 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_144, - 6, /* Elements count */ - &asn_SPC_value_specs_144 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_IEs_141[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_142, memb_id_constraint_141 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeConfigurationUpdate_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_143, memb_criticality_constraint_141 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdate_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_144, - select_E2nodeConfigurationUpdate_IEs_value_type, - { 0, &asn_PER_memb_value_constr_144, memb_value_constraint_141 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdate_IEs_tag2el_141[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_IEs_specs_141 = { - sizeof(struct E2nodeConfigurationUpdate_IEs), - offsetof(struct E2nodeConfigurationUpdate_IEs, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdate_IEs_tag2el_141, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate_IEs = { - "E2nodeConfigurationUpdate-IEs", - "E2nodeConfigurationUpdate-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141, - sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141) - /sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141) - /sizeof(asn_DEF_E2nodeConfigurationUpdate_IEs_tags_141[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdate_IEs_141, - 3, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdate_IEs_specs_141 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_148[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.E2nodeComponentConfigAdditionAck_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigAdditionAck_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigAdditionAck-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.E2nodeComponentConfigUpdateAck_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigUpdateAck_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigUpdateAck-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, choice.E2nodeComponentConfigRemovalAck_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeComponentConfigRemovalAck_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeComponentConfigRemovalAck-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_148[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* E2nodeComponentConfigAdditionAck-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* E2nodeComponentConfigUpdateAck-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* E2nodeComponentConfigRemovalAck-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_148 = { - sizeof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value), - offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, _asn_ctx), - offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs__value, present), - sizeof(((struct E2nodeConfigurationUpdateAcknowledge_IEs__value *)0)->present), - asn_MAP_value_tag2el_148, - 4, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_148 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_148, - 4, /* Elements count */ - &asn_SPC_value_specs_148 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_IEs_145[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_146, memb_id_constraint_145 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeConfigurationUpdateAcknowledge_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_147, memb_criticality_constraint_145 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_148, - select_E2nodeConfigurationUpdateAcknowledge_IEs_value_type, - { 0, &asn_PER_memb_value_constr_148, memb_value_constraint_145 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateAcknowledge_IEs_tag2el_145[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_IEs_specs_145 = { - sizeof(struct E2nodeConfigurationUpdateAcknowledge_IEs), - offsetof(struct E2nodeConfigurationUpdateAcknowledge_IEs, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdateAcknowledge_IEs_tag2el_145, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs = { - "E2nodeConfigurationUpdateAcknowledge-IEs", - "E2nodeConfigurationUpdateAcknowledge-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145, - sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145) - /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145) - /sizeof(asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs_tags_145[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdateAcknowledge_IEs_145, - 3, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdateAcknowledge_IEs_specs_145 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_152[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_152[] = { 0, 2, 3, 1 }; -static const unsigned asn_MAP_value_from_canonical_152[] = { 0, 3, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_152[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_152 = { - sizeof(struct E2nodeConfigurationUpdateFailure_IEs__value), - offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, _asn_ctx), - offsetof(struct E2nodeConfigurationUpdateFailure_IEs__value, present), - sizeof(((struct E2nodeConfigurationUpdateFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_152, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_152, - asn_MAP_value_from_canonical_152, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_152 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_152, - 4, /* Elements count */ - &asn_SPC_value_specs_152 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_IEs_149[] = { - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_150, memb_id_constraint_149 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_E2nodeConfigurationUpdateFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_151, memb_criticality_constraint_149 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2nodeConfigurationUpdateFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_152, - select_E2nodeConfigurationUpdateFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_152, memb_value_constraint_149 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_E2nodeConfigurationUpdateFailure_IEs_tag2el_149[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_IEs_specs_149 = { - sizeof(struct E2nodeConfigurationUpdateFailure_IEs), - offsetof(struct E2nodeConfigurationUpdateFailure_IEs, _asn_ctx), - asn_MAP_E2nodeConfigurationUpdateFailure_IEs_tag2el_149, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure_IEs = { - "E2nodeConfigurationUpdateFailure-IEs", - "E2nodeConfigurationUpdateFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149, - sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149) - /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149[0]), /* 1 */ - asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149, /* Same as above */ - sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149) - /sizeof(asn_DEF_E2nodeConfigurationUpdateFailure_IEs_tags_149[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeConfigurationUpdateFailure_IEs_149, - 3, /* Elements count */ - &asn_SPC_E2nodeConfigurationUpdateFailure_IEs_specs_149 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_156[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_156[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_156 = { - sizeof(struct ResetRequestIEs__value), - offsetof(struct ResetRequestIEs__value, _asn_ctx), - offsetof(struct ResetRequestIEs__value, present), - sizeof(((struct ResetRequestIEs__value *)0)->present), - asn_MAP_value_tag2el_156, - 7, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_156 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_156, - 2, /* Elements count */ - &asn_SPC_value_specs_156 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ResetRequestIEs_153[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_154, memb_id_constraint_153 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_ResetRequestIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_155, memb_criticality_constraint_153 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_156, - select_ResetRequestIEs_value_type, - { 0, &asn_PER_memb_value_constr_156, memb_value_constraint_153 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetRequestIEs_tags_153[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetRequestIEs_tag2el_153[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_153 = { - sizeof(struct ResetRequestIEs), - offsetof(struct ResetRequestIEs, _asn_ctx), - asn_MAP_ResetRequestIEs_tag2el_153, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs = { - "ResetRequestIEs", - "ResetRequestIEs", - &asn_OP_SEQUENCE, - asn_DEF_ResetRequestIEs_tags_153, - sizeof(asn_DEF_ResetRequestIEs_tags_153) - /sizeof(asn_DEF_ResetRequestIEs_tags_153[0]), /* 1 */ - asn_DEF_ResetRequestIEs_tags_153, /* Same as above */ - sizeof(asn_DEF_ResetRequestIEs_tags_153) - /sizeof(asn_DEF_ResetRequestIEs_tags_153[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetRequestIEs_153, - 3, /* Elements count */ - &asn_SPC_ResetRequestIEs_specs_153 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_160[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_160[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* CriticalityDiagnostics */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_160 = { - sizeof(struct ResetResponseIEs__value), - offsetof(struct ResetResponseIEs__value, _asn_ctx), - offsetof(struct ResetResponseIEs__value, present), - sizeof(((struct ResetResponseIEs__value *)0)->present), - asn_MAP_value_tag2el_160, - 2, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_160 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_160, - 2, /* Elements count */ - &asn_SPC_value_specs_160 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_ResetResponseIEs_157[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_158, memb_id_constraint_157 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_ResetResponseIEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_159, memb_criticality_constraint_157 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_160, - select_ResetResponseIEs_value_type, - { 0, &asn_PER_memb_value_constr_160, memb_value_constraint_157 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetResponseIEs_tags_157[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetResponseIEs_tag2el_157[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_157 = { - sizeof(struct ResetResponseIEs), - offsetof(struct ResetResponseIEs, _asn_ctx), - asn_MAP_ResetResponseIEs_tag2el_157, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs = { - "ResetResponseIEs", - "ResetResponseIEs", - &asn_OP_SEQUENCE, - asn_DEF_ResetResponseIEs_tags_157, - sizeof(asn_DEF_ResetResponseIEs_tags_157) - /sizeof(asn_DEF_ResetResponseIEs_tags_157[0]), /* 1 */ - asn_DEF_ResetResponseIEs_tags_157, /* Same as above */ - sizeof(asn_DEF_ResetResponseIEs_tags_157) - /sizeof(asn_DEF_ResetResponseIEs_tags_157[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetResponseIEs_157, - 3, /* Elements count */ - &asn_SPC_ResetResponseIEs_specs_157 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_164[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctions_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctions_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctions-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_164[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* RANfunctions-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RANfunctionsID-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_164 = { - sizeof(struct RICserviceUpdate_IEs__value), - offsetof(struct RICserviceUpdate_IEs__value, _asn_ctx), - offsetof(struct RICserviceUpdate_IEs__value, present), - sizeof(((struct RICserviceUpdate_IEs__value *)0)->present), - asn_MAP_value_tag2el_164, - 3, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_164 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_164, - 3, /* Elements count */ - &asn_SPC_value_specs_164 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_161[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_162, memb_id_constraint_161 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceUpdate_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_163, memb_criticality_constraint_161 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_164, - select_RICserviceUpdate_IEs_value_type, - { 0, &asn_PER_memb_value_constr_164, memb_value_constraint_161 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_IEs_tags_161[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_IEs_tag2el_161[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_161 = { - sizeof(struct RICserviceUpdate_IEs), - offsetof(struct RICserviceUpdate_IEs, _asn_ctx), - asn_MAP_RICserviceUpdate_IEs_tag2el_161, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs = { - "RICserviceUpdate-IEs", - "RICserviceUpdate-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdate_IEs_tags_161, - sizeof(asn_DEF_RICserviceUpdate_IEs_tags_161) - /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_161[0]), /* 1 */ - asn_DEF_RICserviceUpdate_IEs_tags_161, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdate_IEs_tags_161) - /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_161[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdate_IEs_161, - 3, /* Elements count */ - &asn_SPC_RICserviceUpdate_IEs_specs_161 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_168[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsIDcause_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsIDcause_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsIDcause-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_168[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* RANfunctionsID-List */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RANfunctionsIDcause-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_168 = { - sizeof(struct RICserviceUpdateAcknowledge_IEs__value), - offsetof(struct RICserviceUpdateAcknowledge_IEs__value, _asn_ctx), - offsetof(struct RICserviceUpdateAcknowledge_IEs__value, present), - sizeof(((struct RICserviceUpdateAcknowledge_IEs__value *)0)->present), - asn_MAP_value_tag2el_168, - 3, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_168 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_168, - 3, /* Elements count */ - &asn_SPC_value_specs_168 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_165[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_166, memb_id_constraint_165 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceUpdateAcknowledge_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_167, memb_criticality_constraint_165 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_168, - select_RICserviceUpdateAcknowledge_IEs_value_type, - { 0, &asn_PER_memb_value_constr_168, memb_value_constraint_165 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_165[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_165 = { - sizeof(struct RICserviceUpdateAcknowledge_IEs), - offsetof(struct RICserviceUpdateAcknowledge_IEs, _asn_ctx), - asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_165, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs = { - "RICserviceUpdateAcknowledge-IEs", - "RICserviceUpdateAcknowledge-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165, - sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165[0]), /* 1 */ - asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_165[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateAcknowledge_IEs_165, - 3, /* Elements count */ - &asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_165 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_172[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.Cause), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "Cause" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TimeToWait), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_TimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TimeToWait" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.CriticalityDiagnostics), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_CriticalityDiagnostics, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "CriticalityDiagnostics" - }, -}; -static const unsigned asn_MAP_value_to_canonical_172[] = { 0, 2, 3, 1 }; -static const unsigned asn_MAP_value_from_canonical_172[] = { 0, 3, 1, 2 }; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_172[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* ricRequest */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* e2Node */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* transport */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* protocol */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 1, 0, 0 } /* misc */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_172 = { - sizeof(struct RICserviceUpdateFailure_IEs__value), - offsetof(struct RICserviceUpdateFailure_IEs__value, _asn_ctx), - offsetof(struct RICserviceUpdateFailure_IEs__value, present), - sizeof(((struct RICserviceUpdateFailure_IEs__value *)0)->present), - asn_MAP_value_tag2el_172, - 9, /* Count of tags in the map */ - asn_MAP_value_to_canonical_172, - asn_MAP_value_from_canonical_172, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_172 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_172, - 4, /* Elements count */ - &asn_SPC_value_specs_172 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_169[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_170, memb_id_constraint_169 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceUpdateFailure_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_171, memb_criticality_constraint_169 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_172, - select_RICserviceUpdateFailure_IEs_value_type, - { 0, &asn_PER_memb_value_constr_172, memb_value_constraint_169 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_IEs_tags_169[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_IEs_tag2el_169[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_169 = { - sizeof(struct RICserviceUpdateFailure_IEs), - offsetof(struct RICserviceUpdateFailure_IEs, _asn_ctx), - asn_MAP_RICserviceUpdateFailure_IEs_tag2el_169, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs = { - "RICserviceUpdateFailure-IEs", - "RICserviceUpdateFailure-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateFailure_IEs_tags_169, - sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_169) - /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_169[0]), /* 1 */ - asn_DEF_RICserviceUpdateFailure_IEs_tags_169, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_169) - /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_169[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateFailure_IEs_169, - 3, /* Elements count */ - &asn_SPC_RICserviceUpdateFailure_IEs_specs_169 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_value_176[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.TransactionID), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_TransactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "TransactionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.RANfunctionsID_List), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RANfunctionsID_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RANfunctionsID-List" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_176[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* TransactionID */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* RANfunctionsID-List */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_176 = { - sizeof(struct RICserviceQuery_IEs__value), - offsetof(struct RICserviceQuery_IEs__value, _asn_ctx), - offsetof(struct RICserviceQuery_IEs__value, present), - sizeof(((struct RICserviceQuery_IEs__value *)0)->present), - asn_MAP_value_tag2el_176, - 2, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_176 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_176, - 2, /* Elements count */ - &asn_SPC_value_specs_176 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_173[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, id), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_ID, - 0, - { 0, &asn_PER_memb_id_constr_174, memb_id_constraint_173 }, - 0, 0, /* No default value */ - "id" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_RICserviceQuery_IEs_criticality_type, - { 0, &asn_PER_memb_criticality_constr_175, memb_criticality_constraint_173 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_176, - select_RICserviceQuery_IEs_value_type, - { 0, &asn_PER_memb_value_constr_176, memb_value_constraint_173 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceQuery_IEs_tags_173[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_IEs_tag2el_173[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_173 = { - sizeof(struct RICserviceQuery_IEs), - offsetof(struct RICserviceQuery_IEs, _asn_ctx), - asn_MAP_RICserviceQuery_IEs_tag2el_173, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs = { - "RICserviceQuery-IEs", - "RICserviceQuery-IEs", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceQuery_IEs_tags_173, - sizeof(asn_DEF_RICserviceQuery_IEs_tags_173) - /sizeof(asn_DEF_RICserviceQuery_IEs_tags_173[0]), /* 1 */ - asn_DEF_RICserviceQuery_IEs_tags_173, /* Same as above */ - sizeof(asn_DEF_RICserviceQuery_IEs_tags_173) - /sizeof(asn_DEF_RICserviceQuery_IEs_tags_173[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceQuery_IEs_173, - 3, /* Elements count */ - &asn_SPC_RICserviceQuery_IEs_specs_173 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/ProtocolIE-Field.h b/e2sim/src/ASN1c/ProtocolIE-Field.h deleted file mode 100644 index 1efc9c1..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-Field.h +++ /dev/null @@ -1,1254 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ProtocolIE_Field_H_ -#define _ProtocolIE_Field_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-ID.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICaction-ToBeSetup-Item.h" -#include "Presence.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" -#include "RICaction-Admitted-Item.h" -#include "RICaction-NotAdmitted-Item.h" -#include "RICsubscription-withCause-Item.h" -#include "E2connectionUpdate-Item.h" -#include "E2connectionUpdateRemove-Item.h" -#include "E2connectionSetupFailed-Item.h" -#include "E2nodeComponentConfigAddition-Item.h" -#include "E2nodeComponentConfigUpdate-Item.h" -#include "E2nodeComponentConfigRemoval-Item.h" -#include "E2nodeTNLassociationRemoval-Item.h" -#include "E2nodeComponentConfigAdditionAck-Item.h" -#include "E2nodeComponentConfigUpdateAck-Item.h" -#include "E2nodeComponentConfigRemovalAck-Item.h" -#include "RANfunction-Item.h" -#include "RANfunctionID-Item.h" -#include "RANfunctionIDcause-Item.h" -#include "RICrequestID.h" -#include "RANfunctionID.h" -#include "RICsubscriptionDetails.h" -#include "RICaction-Admitted-List.h" -#include "RICaction-NotAdmitted-List.h" -#include "Cause.h" -#include "CriticalityDiagnostics.h" -#include "RICsubscription-List-withCause.h" -#include "RICactionID.h" -#include "RICindicationSN.h" -#include "RICindicationType.h" -#include "RICindicationHeader.h" -#include "RICindicationMessage.h" -#include "RICcallProcessID.h" -#include "RICcontrolHeader.h" -#include "RICcontrolMessage.h" -#include "RICcontrolAckRequest.h" -#include "RICcontrolOutcome.h" -#include "TransactionID.h" -#include "GlobalE2node-ID.h" -#include "RANfunctions-List.h" -#include "E2nodeComponentConfigAddition-List.h" -#include "GlobalRIC-ID.h" -#include "RANfunctionsID-List.h" -#include "RANfunctionsIDcause-List.h" -#include "E2nodeComponentConfigAdditionAck-List.h" -#include "TimeToWait.h" -#include "TNLinformation.h" -#include "E2connectionUpdate-List.h" -#include "E2connectionUpdateRemove-List.h" -#include "E2connectionSetupFailed-List.h" -#include "E2nodeComponentConfigUpdate-List.h" -#include "E2nodeComponentConfigRemoval-List.h" -#include "E2nodeTNLassociationRemoval-List.h" -#include "E2nodeComponentConfigUpdateAck-List.h" -#include "E2nodeComponentConfigRemovalAck-List.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICaction_ToBeSetup_ItemIEs__value_PR { - RICaction_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ - RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item -} RICaction_ToBeSetup_ItemIEs__value_PR; -typedef enum RICaction_Admitted_ItemIEs__value_PR { - RICaction_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ - RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item -} RICaction_Admitted_ItemIEs__value_PR; -typedef enum RICaction_NotAdmitted_ItemIEs__value_PR { - RICaction_NotAdmitted_ItemIEs__value_PR_NOTHING, /* No components present */ - RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item -} RICaction_NotAdmitted_ItemIEs__value_PR; -typedef enum RICsubscription_withCause_ItemIEs__value_PR { - RICsubscription_withCause_ItemIEs__value_PR_NOTHING, /* No components present */ - RICsubscription_withCause_ItemIEs__value_PR_RICsubscription_withCause_Item -} RICsubscription_withCause_ItemIEs__value_PR; -typedef enum E2connectionUpdate_ItemIEs__value_PR { - E2connectionUpdate_ItemIEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdate_ItemIEs__value_PR_E2connectionUpdate_Item -} E2connectionUpdate_ItemIEs__value_PR; -typedef enum E2connectionUpdateRemove_ItemIEs__value_PR { - E2connectionUpdateRemove_ItemIEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdateRemove_ItemIEs__value_PR_E2connectionUpdateRemove_Item -} E2connectionUpdateRemove_ItemIEs__value_PR; -typedef enum E2connectionSetupFailed_ItemIEs__value_PR { - E2connectionSetupFailed_ItemIEs__value_PR_NOTHING, /* No components present */ - E2connectionSetupFailed_ItemIEs__value_PR_E2connectionSetupFailed_Item -} E2connectionSetupFailed_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigAddition_ItemIEs__value_PR { - E2nodeComponentConfigAddition_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigAddition_ItemIEs__value_PR_E2nodeComponentConfigAddition_Item -} E2nodeComponentConfigAddition_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigUpdate_ItemIEs__value_PR { - E2nodeComponentConfigUpdate_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigUpdate_ItemIEs__value_PR_E2nodeComponentConfigUpdate_Item -} E2nodeComponentConfigUpdate_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigRemoval_ItemIEs__value_PR { - E2nodeComponentConfigRemoval_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigRemoval_ItemIEs__value_PR_E2nodeComponentConfigRemoval_Item -} E2nodeComponentConfigRemoval_ItemIEs__value_PR; -typedef enum E2nodeTNLassociationRemoval_ItemIEs__value_PR { - E2nodeTNLassociationRemoval_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeTNLassociationRemoval_ItemIEs__value_PR_E2nodeTNLassociationRemoval_Item -} E2nodeTNLassociationRemoval_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigAdditionAck_ItemIEs__value_PR { - E2nodeComponentConfigAdditionAck_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigAdditionAck_ItemIEs__value_PR_E2nodeComponentConfigAdditionAck_Item -} E2nodeComponentConfigAdditionAck_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigUpdateAck_ItemIEs__value_PR { - E2nodeComponentConfigUpdateAck_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigUpdateAck_ItemIEs__value_PR_E2nodeComponentConfigUpdateAck_Item -} E2nodeComponentConfigUpdateAck_ItemIEs__value_PR; -typedef enum E2nodeComponentConfigRemovalAck_ItemIEs__value_PR { - E2nodeComponentConfigRemovalAck_ItemIEs__value_PR_NOTHING, /* No components present */ - E2nodeComponentConfigRemovalAck_ItemIEs__value_PR_E2nodeComponentConfigRemovalAck_Item -} E2nodeComponentConfigRemovalAck_ItemIEs__value_PR; -typedef enum RANfunction_ItemIEs__value_PR { - RANfunction_ItemIEs__value_PR_NOTHING, /* No components present */ - RANfunction_ItemIEs__value_PR_RANfunction_Item -} RANfunction_ItemIEs__value_PR; -typedef enum RANfunctionID_ItemIEs__value_PR { - RANfunctionID_ItemIEs__value_PR_NOTHING, /* No components present */ - RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item -} RANfunctionID_ItemIEs__value_PR; -typedef enum RANfunctionIDcause_ItemIEs__value_PR { - RANfunctionIDcause_ItemIEs__value_PR_NOTHING, /* No components present */ - RANfunctionIDcause_ItemIEs__value_PR_RANfunctionIDcause_Item -} RANfunctionIDcause_ItemIEs__value_PR; -typedef enum RICsubscriptionRequest_IEs__value_PR { - RICsubscriptionRequest_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionRequest_IEs__value_PR_RICrequestID, - RICsubscriptionRequest_IEs__value_PR_RANfunctionID, - RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails -} RICsubscriptionRequest_IEs__value_PR; -typedef enum RICsubscriptionResponse_IEs__value_PR { - RICsubscriptionResponse_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionResponse_IEs__value_PR_RICrequestID, - RICsubscriptionResponse_IEs__value_PR_RANfunctionID, - RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List, - RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List -} RICsubscriptionResponse_IEs__value_PR; -typedef enum RICsubscriptionFailure_IEs__value_PR { - RICsubscriptionFailure_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionFailure_IEs__value_PR_RICrequestID, - RICsubscriptionFailure_IEs__value_PR_RANfunctionID, - RICsubscriptionFailure_IEs__value_PR_Cause, - RICsubscriptionFailure_IEs__value_PR_CriticalityDiagnostics -} RICsubscriptionFailure_IEs__value_PR; -typedef enum RICsubscriptionDeleteRequest_IEs__value_PR { - RICsubscriptionDeleteRequest_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID, - RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID -} RICsubscriptionDeleteRequest_IEs__value_PR; -typedef enum RICsubscriptionDeleteResponse_IEs__value_PR { - RICsubscriptionDeleteResponse_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID, - RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID -} RICsubscriptionDeleteResponse_IEs__value_PR; -typedef enum RICsubscriptionDeleteFailure_IEs__value_PR { - RICsubscriptionDeleteFailure_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID, - RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID, - RICsubscriptionDeleteFailure_IEs__value_PR_Cause, - RICsubscriptionDeleteFailure_IEs__value_PR_CriticalityDiagnostics -} RICsubscriptionDeleteFailure_IEs__value_PR; -typedef enum RICsubscriptionDeleteRequired_IEs__value_PR { - RICsubscriptionDeleteRequired_IEs__value_PR_NOTHING, /* No components present */ - RICsubscriptionDeleteRequired_IEs__value_PR_RICsubscription_List_withCause -} RICsubscriptionDeleteRequired_IEs__value_PR; -typedef enum RICindication_IEs__value_PR { - RICindication_IEs__value_PR_NOTHING, /* No components present */ - RICindication_IEs__value_PR_RICrequestID, - RICindication_IEs__value_PR_RANfunctionID, - RICindication_IEs__value_PR_RICactionID, - RICindication_IEs__value_PR_RICindicationSN, - RICindication_IEs__value_PR_RICindicationType, - RICindication_IEs__value_PR_RICindicationHeader, - RICindication_IEs__value_PR_RICindicationMessage, - RICindication_IEs__value_PR_RICcallProcessID -} RICindication_IEs__value_PR; -typedef enum RICcontrolRequest_IEs__value_PR { - RICcontrolRequest_IEs__value_PR_NOTHING, /* No components present */ - RICcontrolRequest_IEs__value_PR_RICrequestID, - RICcontrolRequest_IEs__value_PR_RANfunctionID, - RICcontrolRequest_IEs__value_PR_RICcallProcessID, - RICcontrolRequest_IEs__value_PR_RICcontrolHeader, - RICcontrolRequest_IEs__value_PR_RICcontrolMessage, - RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest -} RICcontrolRequest_IEs__value_PR; -typedef enum RICcontrolAcknowledge_IEs__value_PR { - RICcontrolAcknowledge_IEs__value_PR_NOTHING, /* No components present */ - RICcontrolAcknowledge_IEs__value_PR_RICrequestID, - RICcontrolAcknowledge_IEs__value_PR_RANfunctionID, - RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID, - RICcontrolAcknowledge_IEs__value_PR_RICcontrolOutcome -} RICcontrolAcknowledge_IEs__value_PR; -typedef enum RICcontrolFailure_IEs__value_PR { - RICcontrolFailure_IEs__value_PR_NOTHING, /* No components present */ - RICcontrolFailure_IEs__value_PR_RICrequestID, - RICcontrolFailure_IEs__value_PR_RANfunctionID, - RICcontrolFailure_IEs__value_PR_RICcallProcessID, - RICcontrolFailure_IEs__value_PR_Cause, - RICcontrolFailure_IEs__value_PR_RICcontrolOutcome -} RICcontrolFailure_IEs__value_PR; -typedef enum ErrorIndication_IEs__value_PR { - ErrorIndication_IEs__value_PR_NOTHING, /* No components present */ - ErrorIndication_IEs__value_PR_TransactionID, - ErrorIndication_IEs__value_PR_RICrequestID, - ErrorIndication_IEs__value_PR_RANfunctionID, - ErrorIndication_IEs__value_PR_Cause, - ErrorIndication_IEs__value_PR_CriticalityDiagnostics -} ErrorIndication_IEs__value_PR; -typedef enum E2setupRequestIEs__value_PR { - E2setupRequestIEs__value_PR_NOTHING, /* No components present */ - E2setupRequestIEs__value_PR_TransactionID, - E2setupRequestIEs__value_PR_GlobalE2node_ID, - E2setupRequestIEs__value_PR_RANfunctions_List, - E2setupRequestIEs__value_PR_E2nodeComponentConfigAddition_List -} E2setupRequestIEs__value_PR; -typedef enum E2setupResponseIEs__value_PR { - E2setupResponseIEs__value_PR_NOTHING, /* No components present */ - E2setupResponseIEs__value_PR_TransactionID, - E2setupResponseIEs__value_PR_GlobalRIC_ID, - E2setupResponseIEs__value_PR_RANfunctionsID_List, - E2setupResponseIEs__value_PR_RANfunctionsIDcause_List, - E2setupResponseIEs__value_PR_E2nodeComponentConfigAdditionAck_List -} E2setupResponseIEs__value_PR; -typedef enum E2setupFailureIEs__value_PR { - E2setupFailureIEs__value_PR_NOTHING, /* No components present */ - E2setupFailureIEs__value_PR_TransactionID, - E2setupFailureIEs__value_PR_Cause, - E2setupFailureIEs__value_PR_TimeToWait, - E2setupFailureIEs__value_PR_CriticalityDiagnostics, - E2setupFailureIEs__value_PR_TNLinformation -} E2setupFailureIEs__value_PR; -typedef enum E2connectionUpdate_IEs__value_PR { - E2connectionUpdate_IEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdate_IEs__value_PR_TransactionID, - E2connectionUpdate_IEs__value_PR_E2connectionUpdate_List, - E2connectionUpdate_IEs__value_PR_E2connectionUpdateRemove_List -} E2connectionUpdate_IEs__value_PR; -typedef enum E2connectionUpdateAck_IEs__value_PR { - E2connectionUpdateAck_IEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdateAck_IEs__value_PR_TransactionID, - E2connectionUpdateAck_IEs__value_PR_E2connectionUpdate_List, - E2connectionUpdateAck_IEs__value_PR_E2connectionSetupFailed_List -} E2connectionUpdateAck_IEs__value_PR; -typedef enum E2connectionUpdateFailure_IEs__value_PR { - E2connectionUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ - E2connectionUpdateFailure_IEs__value_PR_TransactionID, - E2connectionUpdateFailure_IEs__value_PR_Cause, - E2connectionUpdateFailure_IEs__value_PR_TimeToWait, - E2connectionUpdateFailure_IEs__value_PR_CriticalityDiagnostics -} E2connectionUpdateFailure_IEs__value_PR; -typedef enum E2nodeConfigurationUpdate_IEs__value_PR { - E2nodeConfigurationUpdate_IEs__value_PR_NOTHING, /* No components present */ - E2nodeConfigurationUpdate_IEs__value_PR_TransactionID, - E2nodeConfigurationUpdate_IEs__value_PR_GlobalE2node_ID, - E2nodeConfigurationUpdate_IEs__value_PR_E2nodeComponentConfigAddition_List, - E2nodeConfigurationUpdate_IEs__value_PR_E2nodeComponentConfigUpdate_List, - E2nodeConfigurationUpdate_IEs__value_PR_E2nodeComponentConfigRemoval_List, - E2nodeConfigurationUpdate_IEs__value_PR_E2nodeTNLassociationRemoval_List -} E2nodeConfigurationUpdate_IEs__value_PR; -typedef enum E2nodeConfigurationUpdateAcknowledge_IEs__value_PR { - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_TransactionID, - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_E2nodeComponentConfigAdditionAck_List, - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_E2nodeComponentConfigUpdateAck_List, - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR_E2nodeComponentConfigRemovalAck_List -} E2nodeConfigurationUpdateAcknowledge_IEs__value_PR; -typedef enum E2nodeConfigurationUpdateFailure_IEs__value_PR { - E2nodeConfigurationUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ - E2nodeConfigurationUpdateFailure_IEs__value_PR_TransactionID, - E2nodeConfigurationUpdateFailure_IEs__value_PR_Cause, - E2nodeConfigurationUpdateFailure_IEs__value_PR_TimeToWait, - E2nodeConfigurationUpdateFailure_IEs__value_PR_CriticalityDiagnostics -} E2nodeConfigurationUpdateFailure_IEs__value_PR; -typedef enum ResetRequestIEs__value_PR { - ResetRequestIEs__value_PR_NOTHING, /* No components present */ - ResetRequestIEs__value_PR_TransactionID, - ResetRequestIEs__value_PR_Cause -} ResetRequestIEs__value_PR; -typedef enum ResetResponseIEs__value_PR { - ResetResponseIEs__value_PR_NOTHING, /* No components present */ - ResetResponseIEs__value_PR_TransactionID, - ResetResponseIEs__value_PR_CriticalityDiagnostics -} ResetResponseIEs__value_PR; -typedef enum RICserviceUpdate_IEs__value_PR { - RICserviceUpdate_IEs__value_PR_NOTHING, /* No components present */ - RICserviceUpdate_IEs__value_PR_TransactionID, - RICserviceUpdate_IEs__value_PR_RANfunctions_List, - RICserviceUpdate_IEs__value_PR_RANfunctionsID_List -} RICserviceUpdate_IEs__value_PR; -typedef enum RICserviceUpdateAcknowledge_IEs__value_PR { - RICserviceUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ - RICserviceUpdateAcknowledge_IEs__value_PR_TransactionID, - RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsID_List, - RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsIDcause_List -} RICserviceUpdateAcknowledge_IEs__value_PR; -typedef enum RICserviceUpdateFailure_IEs__value_PR { - RICserviceUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ - RICserviceUpdateFailure_IEs__value_PR_TransactionID, - RICserviceUpdateFailure_IEs__value_PR_Cause, - RICserviceUpdateFailure_IEs__value_PR_TimeToWait, - RICserviceUpdateFailure_IEs__value_PR_CriticalityDiagnostics -} RICserviceUpdateFailure_IEs__value_PR; -typedef enum RICserviceQuery_IEs__value_PR { - RICserviceQuery_IEs__value_PR_NOTHING, /* No components present */ - RICserviceQuery_IEs__value_PR_TransactionID, - RICserviceQuery_IEs__value_PR_RANfunctionsID_List -} RICserviceQuery_IEs__value_PR; - -/* ProtocolIE-Field */ -typedef struct RICaction_ToBeSetup_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICaction_ToBeSetup_ItemIEs__value { - RICaction_ToBeSetup_ItemIEs__value_PR present; - union RICaction_ToBeSetup_ItemIEs__value_u { - RICaction_ToBeSetup_Item_t RICaction_ToBeSetup_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_ToBeSetup_ItemIEs_t; -typedef struct RICaction_Admitted_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICaction_Admitted_ItemIEs__value { - RICaction_Admitted_ItemIEs__value_PR present; - union RICaction_Admitted_ItemIEs__value_u { - RICaction_Admitted_Item_t RICaction_Admitted_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_Admitted_ItemIEs_t; -typedef struct RICaction_NotAdmitted_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICaction_NotAdmitted_ItemIEs__value { - RICaction_NotAdmitted_ItemIEs__value_PR present; - union RICaction_NotAdmitted_ItemIEs__value_u { - RICaction_NotAdmitted_Item_t RICaction_NotAdmitted_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_NotAdmitted_ItemIEs_t; -typedef struct RICsubscription_withCause_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscription_withCause_ItemIEs__value { - RICsubscription_withCause_ItemIEs__value_PR present; - union RICsubscription_withCause_ItemIEs__value_u { - RICsubscription_withCause_Item_t RICsubscription_withCause_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscription_withCause_ItemIEs_t; -typedef struct E2connectionUpdate_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdate_ItemIEs__value { - E2connectionUpdate_ItemIEs__value_PR present; - union E2connectionUpdate_ItemIEs__value_u { - E2connectionUpdate_Item_t E2connectionUpdate_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_ItemIEs_t; -typedef struct E2connectionUpdateRemove_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdateRemove_ItemIEs__value { - E2connectionUpdateRemove_ItemIEs__value_PR present; - union E2connectionUpdateRemove_ItemIEs__value_u { - E2connectionUpdateRemove_Item_t E2connectionUpdateRemove_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateRemove_ItemIEs_t; -typedef struct E2connectionSetupFailed_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionSetupFailed_ItemIEs__value { - E2connectionSetupFailed_ItemIEs__value_PR present; - union E2connectionSetupFailed_ItemIEs__value_u { - E2connectionSetupFailed_Item_t E2connectionSetupFailed_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionSetupFailed_ItemIEs_t; -typedef struct E2nodeComponentConfigAddition_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigAddition_ItemIEs__value { - E2nodeComponentConfigAddition_ItemIEs__value_PR present; - union E2nodeComponentConfigAddition_ItemIEs__value_u { - E2nodeComponentConfigAddition_Item_t E2nodeComponentConfigAddition_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAddition_ItemIEs_t; -typedef struct E2nodeComponentConfigUpdate_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigUpdate_ItemIEs__value { - E2nodeComponentConfigUpdate_ItemIEs__value_PR present; - union E2nodeComponentConfigUpdate_ItemIEs__value_u { - E2nodeComponentConfigUpdate_Item_t E2nodeComponentConfigUpdate_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdate_ItemIEs_t; -typedef struct E2nodeComponentConfigRemoval_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigRemoval_ItemIEs__value { - E2nodeComponentConfigRemoval_ItemIEs__value_PR present; - union E2nodeComponentConfigRemoval_ItemIEs__value_u { - E2nodeComponentConfigRemoval_Item_t E2nodeComponentConfigRemoval_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemoval_ItemIEs_t; -typedef struct E2nodeTNLassociationRemoval_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeTNLassociationRemoval_ItemIEs__value { - E2nodeTNLassociationRemoval_ItemIEs__value_PR present; - union E2nodeTNLassociationRemoval_ItemIEs__value_u { - E2nodeTNLassociationRemoval_Item_t E2nodeTNLassociationRemoval_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeTNLassociationRemoval_ItemIEs_t; -typedef struct E2nodeComponentConfigAdditionAck_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigAdditionAck_ItemIEs__value { - E2nodeComponentConfigAdditionAck_ItemIEs__value_PR present; - union E2nodeComponentConfigAdditionAck_ItemIEs__value_u { - E2nodeComponentConfigAdditionAck_Item_t E2nodeComponentConfigAdditionAck_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigAdditionAck_ItemIEs_t; -typedef struct E2nodeComponentConfigUpdateAck_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigUpdateAck_ItemIEs__value { - E2nodeComponentConfigUpdateAck_ItemIEs__value_PR present; - union E2nodeComponentConfigUpdateAck_ItemIEs__value_u { - E2nodeComponentConfigUpdateAck_Item_t E2nodeComponentConfigUpdateAck_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigUpdateAck_ItemIEs_t; -typedef struct E2nodeComponentConfigRemovalAck_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeComponentConfigRemovalAck_ItemIEs__value { - E2nodeComponentConfigRemovalAck_ItemIEs__value_PR present; - union E2nodeComponentConfigRemovalAck_ItemIEs__value_u { - E2nodeComponentConfigRemovalAck_Item_t E2nodeComponentConfigRemovalAck_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeComponentConfigRemovalAck_ItemIEs_t; -typedef struct RANfunction_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RANfunction_ItemIEs__value { - RANfunction_ItemIEs__value_PR present; - union RANfunction_ItemIEs__value_u { - RANfunction_Item_t RANfunction_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunction_ItemIEs_t; -typedef struct RANfunctionID_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RANfunctionID_ItemIEs__value { - RANfunctionID_ItemIEs__value_PR present; - union RANfunctionID_ItemIEs__value_u { - RANfunctionID_Item_t RANfunctionID_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionID_ItemIEs_t; -typedef struct RANfunctionIDcause_ItemIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RANfunctionIDcause_ItemIEs__value { - RANfunctionIDcause_ItemIEs__value_PR present; - union RANfunctionIDcause_ItemIEs__value_u { - RANfunctionIDcause_Item_t RANfunctionIDcause_Item; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionIDcause_ItemIEs_t; -typedef struct RICsubscriptionRequest_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionRequest_IEs__value { - RICsubscriptionRequest_IEs__value_PR present; - union RICsubscriptionRequest_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICsubscriptionDetails_t RICsubscriptionDetails; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionRequest_IEs_t; -typedef struct RICsubscriptionResponse_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionResponse_IEs__value { - RICsubscriptionResponse_IEs__value_PR present; - union RICsubscriptionResponse_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICaction_Admitted_List_t RICaction_Admitted_List; - RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionResponse_IEs_t; -typedef struct RICsubscriptionFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionFailure_IEs__value { - RICsubscriptionFailure_IEs__value_PR present; - union RICsubscriptionFailure_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - Cause_t Cause; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionFailure_IEs_t; -typedef struct RICsubscriptionDeleteRequest_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteRequest_IEs__value { - RICsubscriptionDeleteRequest_IEs__value_PR present; - union RICsubscriptionDeleteRequest_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequest_IEs_t; -typedef struct RICsubscriptionDeleteResponse_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteResponse_IEs__value { - RICsubscriptionDeleteResponse_IEs__value_PR present; - union RICsubscriptionDeleteResponse_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteResponse_IEs_t; -typedef struct RICsubscriptionDeleteFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteFailure_IEs__value { - RICsubscriptionDeleteFailure_IEs__value_PR present; - union RICsubscriptionDeleteFailure_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - Cause_t Cause; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteFailure_IEs_t; -typedef struct RICsubscriptionDeleteRequired_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICsubscriptionDeleteRequired_IEs__value { - RICsubscriptionDeleteRequired_IEs__value_PR present; - union RICsubscriptionDeleteRequired_IEs__value_u { - RICsubscription_List_withCause_t RICsubscription_List_withCause; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequired_IEs_t; -typedef struct RICindication_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICindication_IEs__value { - RICindication_IEs__value_PR present; - union RICindication_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICactionID_t RICactionID; - RICindicationSN_t RICindicationSN; - RICindicationType_t RICindicationType; - RICindicationHeader_t RICindicationHeader; - RICindicationMessage_t RICindicationMessage; - RICcallProcessID_t RICcallProcessID; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICindication_IEs_t; -typedef struct RICcontrolRequest_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICcontrolRequest_IEs__value { - RICcontrolRequest_IEs__value_PR present; - union RICcontrolRequest_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICcallProcessID_t RICcallProcessID; - RICcontrolHeader_t RICcontrolHeader; - RICcontrolMessage_t RICcontrolMessage; - RICcontrolAckRequest_t RICcontrolAckRequest; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolRequest_IEs_t; -typedef struct RICcontrolAcknowledge_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICcontrolAcknowledge_IEs__value { - RICcontrolAcknowledge_IEs__value_PR present; - union RICcontrolAcknowledge_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICcallProcessID_t RICcallProcessID; - RICcontrolOutcome_t RICcontrolOutcome; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolAcknowledge_IEs_t; -typedef struct RICcontrolFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICcontrolFailure_IEs__value { - RICcontrolFailure_IEs__value_PR present; - union RICcontrolFailure_IEs__value_u { - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - RICcallProcessID_t RICcallProcessID; - Cause_t Cause; - RICcontrolOutcome_t RICcontrolOutcome; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolFailure_IEs_t; -typedef struct ErrorIndication_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct ErrorIndication_IEs__value { - ErrorIndication_IEs__value_PR present; - union ErrorIndication_IEs__value_u { - TransactionID_t TransactionID; - RICrequestID_t RICrequestID; - RANfunctionID_t RANfunctionID; - Cause_t Cause; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ErrorIndication_IEs_t; -typedef struct E2setupRequestIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2setupRequestIEs__value { - E2setupRequestIEs__value_PR present; - union E2setupRequestIEs__value_u { - TransactionID_t TransactionID; - GlobalE2node_ID_t GlobalE2node_ID; - RANfunctions_List_t RANfunctions_List; - E2nodeComponentConfigAddition_List_t E2nodeComponentConfigAddition_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupRequestIEs_t; -typedef struct E2setupResponseIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2setupResponseIEs__value { - E2setupResponseIEs__value_PR present; - union E2setupResponseIEs__value_u { - TransactionID_t TransactionID; - GlobalRIC_ID_t GlobalRIC_ID; - RANfunctionsID_List_t RANfunctionsID_List; - RANfunctionsIDcause_List_t RANfunctionsIDcause_List; - E2nodeComponentConfigAdditionAck_List_t E2nodeComponentConfigAdditionAck_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupResponseIEs_t; -typedef struct E2setupFailureIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2setupFailureIEs__value { - E2setupFailureIEs__value_PR present; - union E2setupFailureIEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - TNLinformation_t TNLinformation; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2setupFailureIEs_t; -typedef struct E2connectionUpdate_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdate_IEs__value { - E2connectionUpdate_IEs__value_PR present; - union E2connectionUpdate_IEs__value_u { - TransactionID_t TransactionID; - E2connectionUpdate_List_t E2connectionUpdate_List; - E2connectionUpdateRemove_List_t E2connectionUpdateRemove_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdate_IEs_t; -typedef struct E2connectionUpdateAck_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdateAck_IEs__value { - E2connectionUpdateAck_IEs__value_PR present; - union E2connectionUpdateAck_IEs__value_u { - TransactionID_t TransactionID; - E2connectionUpdate_List_t E2connectionUpdate_List; - E2connectionSetupFailed_List_t E2connectionSetupFailed_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateAck_IEs_t; -typedef struct E2connectionUpdateFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2connectionUpdateFailure_IEs__value { - E2connectionUpdateFailure_IEs__value_PR present; - union E2connectionUpdateFailure_IEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2connectionUpdateFailure_IEs_t; -typedef struct E2nodeConfigurationUpdate_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeConfigurationUpdate_IEs__value { - E2nodeConfigurationUpdate_IEs__value_PR present; - union E2nodeConfigurationUpdate_IEs__value_u { - TransactionID_t TransactionID; - GlobalE2node_ID_t GlobalE2node_ID; - E2nodeComponentConfigAddition_List_t E2nodeComponentConfigAddition_List; - E2nodeComponentConfigUpdate_List_t E2nodeComponentConfigUpdate_List; - E2nodeComponentConfigRemoval_List_t E2nodeComponentConfigRemoval_List; - E2nodeTNLassociationRemoval_List_t E2nodeTNLassociationRemoval_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdate_IEs_t; -typedef struct E2nodeConfigurationUpdateAcknowledge_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeConfigurationUpdateAcknowledge_IEs__value { - E2nodeConfigurationUpdateAcknowledge_IEs__value_PR present; - union E2nodeConfigurationUpdateAcknowledge_IEs__value_u { - TransactionID_t TransactionID; - E2nodeComponentConfigAdditionAck_List_t E2nodeComponentConfigAdditionAck_List; - E2nodeComponentConfigUpdateAck_List_t E2nodeComponentConfigUpdateAck_List; - E2nodeComponentConfigRemovalAck_List_t E2nodeComponentConfigRemovalAck_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdateAcknowledge_IEs_t; -typedef struct E2nodeConfigurationUpdateFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct E2nodeConfigurationUpdateFailure_IEs__value { - E2nodeConfigurationUpdateFailure_IEs__value_PR present; - union E2nodeConfigurationUpdateFailure_IEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} E2nodeConfigurationUpdateFailure_IEs_t; -typedef struct ResetRequestIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct ResetRequestIEs__value { - ResetRequestIEs__value_PR present; - union ResetRequestIEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetRequestIEs_t; -typedef struct ResetResponseIEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct ResetResponseIEs__value { - ResetResponseIEs__value_PR present; - union ResetResponseIEs__value_u { - TransactionID_t TransactionID; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetResponseIEs_t; -typedef struct RICserviceUpdate_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceUpdate_IEs__value { - RICserviceUpdate_IEs__value_PR present; - union RICserviceUpdate_IEs__value_u { - TransactionID_t TransactionID; - RANfunctions_List_t RANfunctions_List; - RANfunctionsID_List_t RANfunctionsID_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdate_IEs_t; -typedef struct RICserviceUpdateAcknowledge_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceUpdateAcknowledge_IEs__value { - RICserviceUpdateAcknowledge_IEs__value_PR present; - union RICserviceUpdateAcknowledge_IEs__value_u { - TransactionID_t TransactionID; - RANfunctionsID_List_t RANfunctionsID_List; - RANfunctionsIDcause_List_t RANfunctionsIDcause_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateAcknowledge_IEs_t; -typedef struct RICserviceUpdateFailure_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceUpdateFailure_IEs__value { - RICserviceUpdateFailure_IEs__value_PR present; - union RICserviceUpdateFailure_IEs__value_u { - TransactionID_t TransactionID; - Cause_t Cause; - TimeToWait_t TimeToWait; - CriticalityDiagnostics_t CriticalityDiagnostics; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateFailure_IEs_t; -typedef struct RICserviceQuery_IEs { - ProtocolIE_ID_t id; - Criticality_t criticality; - struct RICserviceQuery_IEs__value { - RICserviceQuery_IEs__value_PR present; - union RICserviceQuery_IEs__value_u { - TransactionID_t TransactionID; - RANfunctionsID_List_t RANfunctionsID_List; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceQuery_IEs_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1; -extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5; -extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9; -extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_ItemIEs_specs_13; -extern asn_TYPE_member_t asn_MBR_RICsubscription_withCause_ItemIEs_13[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_ItemIEs_specs_17; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_ItemIEs_17[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateRemove_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_21; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateRemove_ItemIEs_21[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionSetupFailed_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionSetupFailed_ItemIEs_specs_25; -extern asn_TYPE_member_t asn_MBR_E2connectionSetupFailed_ItemIEs_25[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAddition_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_29; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAddition_ItemIEs_29[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdate_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_33; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_33[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemoval_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_37; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_37[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeTNLassociationRemoval_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_41; -extern asn_TYPE_member_t asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_41[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigAdditionAck_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_45; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_45[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigUpdateAck_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_49; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_49[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeComponentConfigRemovalAck_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_53; -extern asn_TYPE_member_t asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_53[3]; -extern asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_57; -extern asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_57[3]; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_61; -extern asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_61[3]; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_65; -extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_65[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_69; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_69[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_73; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_73[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_77; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_77[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_81; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_81[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_85; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_85[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_89; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_89[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_IEs_specs_93; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_IEs_93[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICindication_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_97; -extern asn_TYPE_member_t asn_MBR_RICindication_IEs_97[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_101; -extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_101[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_105; -extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_105[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_109; -extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_109[3]; -extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_113; -extern asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_113[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_117; -extern asn_TYPE_member_t asn_MBR_E2setupRequestIEs_117[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_121; -extern asn_TYPE_member_t asn_MBR_E2setupResponseIEs_121[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_125; -extern asn_TYPE_member_t asn_MBR_E2setupFailureIEs_125[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdate_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdate_IEs_specs_129; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdate_IEs_129[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateAck_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateAck_IEs_specs_133; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateAck_IEs_133[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2connectionUpdateFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2connectionUpdateFailure_IEs_specs_137; -extern asn_TYPE_member_t asn_MBR_E2connectionUpdateFailure_IEs_137[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdate_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdate_IEs_specs_141; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdate_IEs_141[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateAcknowledge_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateAcknowledge_IEs_specs_145; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateAcknowledge_IEs_145[3]; -extern asn_TYPE_descriptor_t asn_DEF_E2nodeConfigurationUpdateFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_E2nodeConfigurationUpdateFailure_IEs_specs_149; -extern asn_TYPE_member_t asn_MBR_E2nodeConfigurationUpdateFailure_IEs_149[3]; -extern asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_153; -extern asn_TYPE_member_t asn_MBR_ResetRequestIEs_153[3]; -extern asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_157; -extern asn_TYPE_member_t asn_MBR_ResetResponseIEs_157[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_161; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_161[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_165; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_165[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_169; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_169[3]; -extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_173; -extern asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_173[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_Field_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ProtocolIE-FieldPair.c b/e2sim/src/ASN1c/ProtocolIE-FieldPair.c deleted file mode 100644 index 78bc305..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-FieldPair.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ProtocolIE-FieldPair.h" - diff --git a/e2sim/src/ASN1c/ProtocolIE-FieldPair.h b/e2sim/src/ASN1c/ProtocolIE-FieldPair.h deleted file mode 100644 index 843a218..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-FieldPair.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ProtocolIE_FieldPair_H_ -#define _ProtocolIE_FieldPair_H_ - - -#include "asn_application.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_FieldPair_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ProtocolIE-ID.c b/e2sim/src/ASN1c/ProtocolIE-ID.c deleted file mode 100644 index c859d4e..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-ID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ProtocolIE-ID.h" - -int -ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = { - "ProtocolIE-ID", - "ProtocolIE-ID", - &asn_OP_NativeInteger, - asn_DEF_ProtocolIE_ID_tags_1, - sizeof(asn_DEF_ProtocolIE_ID_tags_1) - /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ - asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_ID_tags_1) - /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_ProtocolIE_ID_constr_1, ProtocolIE_ID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/ProtocolIE-ID.h b/e2sim/src/ASN1c/ProtocolIE-ID.h deleted file mode 100644 index 697ebe3..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-ID.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ProtocolIE_ID_H_ -#define _ProtocolIE_ID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ProtocolIE-ID */ -typedef long ProtocolIE_ID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID; -asn_struct_free_f ProtocolIE_ID_free; -asn_struct_print_f ProtocolIE_ID_print; -asn_constr_check_f ProtocolIE_ID_constraint; -ber_type_decoder_f ProtocolIE_ID_decode_ber; -der_type_encoder_f ProtocolIE_ID_encode_der; -xer_type_decoder_f ProtocolIE_ID_decode_xer; -xer_type_encoder_f ProtocolIE_ID_encode_xer; -per_type_decoder_f ProtocolIE_ID_decode_uper; -per_type_encoder_f ProtocolIE_ID_encode_uper; -per_type_decoder_f ProtocolIE_ID_decode_aper; -per_type_encoder_f ProtocolIE_ID_encode_aper; -#define ProtocolIE_ID_id_Cause ((ProtocolIE_ID_t)1) -#define ProtocolIE_ID_id_CriticalityDiagnostics ((ProtocolIE_ID_t)2) -#define ProtocolIE_ID_id_GlobalE2node_ID ((ProtocolIE_ID_t)3) -#define ProtocolIE_ID_id_GlobalRIC_ID ((ProtocolIE_ID_t)4) -#define ProtocolIE_ID_id_RANfunctionID ((ProtocolIE_ID_t)5) -#define ProtocolIE_ID_id_RANfunctionID_Item ((ProtocolIE_ID_t)6) -#define ProtocolIE_ID_id_RANfunctionIEcause_Item ((ProtocolIE_ID_t)7) -#define ProtocolIE_ID_id_RANfunction_Item ((ProtocolIE_ID_t)8) -#define ProtocolIE_ID_id_RANfunctionsAccepted ((ProtocolIE_ID_t)9) -#define ProtocolIE_ID_id_RANfunctionsAdded ((ProtocolIE_ID_t)10) -#define ProtocolIE_ID_id_RANfunctionsDeleted ((ProtocolIE_ID_t)11) -#define ProtocolIE_ID_id_RANfunctionsModified ((ProtocolIE_ID_t)12) -#define ProtocolIE_ID_id_RANfunctionsRejected ((ProtocolIE_ID_t)13) -#define ProtocolIE_ID_id_RICaction_Admitted_Item ((ProtocolIE_ID_t)14) -#define ProtocolIE_ID_id_RICactionID ((ProtocolIE_ID_t)15) -#define ProtocolIE_ID_id_RICaction_NotAdmitted_Item ((ProtocolIE_ID_t)16) -#define ProtocolIE_ID_id_RICactions_Admitted ((ProtocolIE_ID_t)17) -#define ProtocolIE_ID_id_RICactions_NotAdmitted ((ProtocolIE_ID_t)18) -#define ProtocolIE_ID_id_RICaction_ToBeSetup_Item ((ProtocolIE_ID_t)19) -#define ProtocolIE_ID_id_RICcallProcessID ((ProtocolIE_ID_t)20) -#define ProtocolIE_ID_id_RICcontrolAckRequest ((ProtocolIE_ID_t)21) -#define ProtocolIE_ID_id_RICcontrolHeader ((ProtocolIE_ID_t)22) -#define ProtocolIE_ID_id_RICcontrolMessage ((ProtocolIE_ID_t)23) -#define ProtocolIE_ID_id_RICcontrolStatus ((ProtocolIE_ID_t)24) -#define ProtocolIE_ID_id_RICindicationHeader ((ProtocolIE_ID_t)25) -#define ProtocolIE_ID_id_RICindicationMessage ((ProtocolIE_ID_t)26) -#define ProtocolIE_ID_id_RICindicationSN ((ProtocolIE_ID_t)27) -#define ProtocolIE_ID_id_RICindicationType ((ProtocolIE_ID_t)28) -#define ProtocolIE_ID_id_RICrequestID ((ProtocolIE_ID_t)29) -#define ProtocolIE_ID_id_RICsubscriptionDetails ((ProtocolIE_ID_t)30) -#define ProtocolIE_ID_id_TimeToWait ((ProtocolIE_ID_t)31) -#define ProtocolIE_ID_id_RICcontrolOutcome ((ProtocolIE_ID_t)32) -#define ProtocolIE_ID_id_E2nodeComponentConfigUpdate ((ProtocolIE_ID_t)33) -#define ProtocolIE_ID_id_E2nodeComponentConfigUpdate_Item ((ProtocolIE_ID_t)34) -#define ProtocolIE_ID_id_E2nodeComponentConfigUpdateAck ((ProtocolIE_ID_t)35) -#define ProtocolIE_ID_id_E2nodeComponentConfigUpdateAck_Item ((ProtocolIE_ID_t)36) -#define ProtocolIE_ID_id_E2connectionSetup ((ProtocolIE_ID_t)39) -#define ProtocolIE_ID_id_E2connectionSetupFailed ((ProtocolIE_ID_t)40) -#define ProtocolIE_ID_id_E2connectionSetupFailed_Item ((ProtocolIE_ID_t)41) -#define ProtocolIE_ID_id_E2connectionFailed_Item ((ProtocolIE_ID_t)42) -#define ProtocolIE_ID_id_E2connectionUpdate_Item ((ProtocolIE_ID_t)43) -#define ProtocolIE_ID_id_E2connectionUpdateAdd ((ProtocolIE_ID_t)44) -#define ProtocolIE_ID_id_E2connectionUpdateModify ((ProtocolIE_ID_t)45) -#define ProtocolIE_ID_id_E2connectionUpdateRemove ((ProtocolIE_ID_t)46) -#define ProtocolIE_ID_id_E2connectionUpdateRemove_Item ((ProtocolIE_ID_t)47) -#define ProtocolIE_ID_id_TNLinformation ((ProtocolIE_ID_t)48) -#define ProtocolIE_ID_id_TransactionID ((ProtocolIE_ID_t)49) -#define ProtocolIE_ID_id_E2nodeComponentConfigAddition ((ProtocolIE_ID_t)50) -#define ProtocolIE_ID_id_E2nodeComponentConfigAddition_Item ((ProtocolIE_ID_t)51) -#define ProtocolIE_ID_id_E2nodeComponentConfigAdditionAck ((ProtocolIE_ID_t)52) -#define ProtocolIE_ID_id_E2nodeComponentConfigAdditionAck_Item ((ProtocolIE_ID_t)53) -#define ProtocolIE_ID_id_E2nodeComponentConfigRemoval ((ProtocolIE_ID_t)54) -#define ProtocolIE_ID_id_E2nodeComponentConfigRemoval_Item ((ProtocolIE_ID_t)55) -#define ProtocolIE_ID_id_E2nodeComponentConfigRemovalAck ((ProtocolIE_ID_t)56) -#define ProtocolIE_ID_id_E2nodeComponentConfigRemovalAck_Item ((ProtocolIE_ID_t)57) -#define ProtocolIE_ID_id_E2nodeTNLassociationRemoval ((ProtocolIE_ID_t)58) -#define ProtocolIE_ID_id_E2nodeTNLassociationRemoval_Item ((ProtocolIE_ID_t)59) -#define ProtocolIE_ID_id_RICsubscriptionToBeRemoved ((ProtocolIE_ID_t)50) -#define ProtocolIE_ID_id_RICsubscription_withCause_Item ((ProtocolIE_ID_t)51) - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_ID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ProtocolIE-SingleContainer.c b/e2sim/src/ASN1c/ProtocolIE-SingleContainer.c deleted file mode 100644 index c9581cf..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-SingleContainer.c +++ /dev/null @@ -1,400 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ProtocolIE-SingleContainer.h" - -/* - * This type is implemented using RICaction_ToBeSetup_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RICaction_Admitted_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RICaction_NotAdmitted_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RICsubscription_withCause_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2connectionUpdate_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2connectionUpdateRemove_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2connectionSetupFailed_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigAddition_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigUpdate_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigRemoval_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeTNLassociationRemoval_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigAdditionAck_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigUpdateAck_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using E2nodeComponentConfigRemovalAck_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RANfunction_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RANfunctionID_ItemIEs, - * so here we adjust the DEF accordingly. - */ -/* - * This type is implemented using RANfunctionIDcause_ItemIEs, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P0 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P0_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_ToBeSetup_ItemIEs_1, - 3, /* Elements count */ - &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P1 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P1_tags_2[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_Admitted_ItemIEs_5, - 3, /* Elements count */ - &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P2 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P2_tags_3[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_NotAdmitted_ItemIEs_9, - 3, /* Elements count */ - &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P3 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P3_tags_4[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscription_withCause_ItemIEs_13, - 3, /* Elements count */ - &asn_SPC_RICsubscription_withCause_ItemIEs_specs_13 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P4 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P4_tags_5[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdate_ItemIEs_17, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdate_ItemIEs_specs_17 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P5 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P5_tags_6[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionUpdateRemove_ItemIEs_21, - 3, /* Elements count */ - &asn_SPC_E2connectionUpdateRemove_ItemIEs_specs_21 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P6 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P6_tags_7[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2connectionSetupFailed_ItemIEs_25, - 3, /* Elements count */ - &asn_SPC_E2connectionSetupFailed_ItemIEs_specs_25 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P7 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P7_tags_8[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAddition_ItemIEs_29, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAddition_ItemIEs_specs_29 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P8 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P8_tags_9[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdate_ItemIEs_33, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdate_ItemIEs_specs_33 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P9 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P9_tags_10[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemoval_ItemIEs_37, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemoval_ItemIEs_specs_37 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P10 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P10_tags_11[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeTNLassociationRemoval_ItemIEs_41, - 3, /* Elements count */ - &asn_SPC_E2nodeTNLassociationRemoval_ItemIEs_specs_41 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P11 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P11_tags_12[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigAdditionAck_ItemIEs_45, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigAdditionAck_ItemIEs_specs_45 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P12 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P12_tags_13[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigUpdateAck_ItemIEs_49, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigUpdateAck_ItemIEs_specs_49 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P13 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P13_tags_14[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_E2nodeComponentConfigRemovalAck_ItemIEs_53, - 3, /* Elements count */ - &asn_SPC_E2nodeComponentConfigRemovalAck_ItemIEs_specs_53 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P14 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P14_tags_15[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_ItemIEs_57, - 3, /* Elements count */ - &asn_SPC_RANfunction_ItemIEs_specs_57 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P15 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P15_tags_16[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionID_ItemIEs_61, - 3, /* Elements count */ - &asn_SPC_RANfunctionID_ItemIEs_specs_61 /* Additional specs */ -}; - -static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P16 = { - "ProtocolIE-SingleContainer", - "ProtocolIE-SingleContainer", - &asn_OP_SEQUENCE, - asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17, - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17[0]), /* 1 */ - asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17, /* Same as above */ - sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17) - /sizeof(asn_DEF_ProtocolIE_SingleContainer_1920P16_tags_17[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionIDcause_ItemIEs_65, - 3, /* Elements count */ - &asn_SPC_RANfunctionIDcause_ItemIEs_specs_65 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/ProtocolIE-SingleContainer.h b/e2sim/src/ASN1c/ProtocolIE-SingleContainer.h deleted file mode 100644 index 99dd596..0000000 --- a/e2sim/src/ASN1c/ProtocolIE-SingleContainer.h +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-Containers" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ProtocolIE_SingleContainer_H_ -#define _ProtocolIE_SingleContainer_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Field.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ProtocolIE-SingleContainer */ -typedef RICaction_ToBeSetup_ItemIEs_t ProtocolIE_SingleContainer_1920P0_t; -typedef RICaction_Admitted_ItemIEs_t ProtocolIE_SingleContainer_1920P1_t; -typedef RICaction_NotAdmitted_ItemIEs_t ProtocolIE_SingleContainer_1920P2_t; -typedef RICsubscription_withCause_ItemIEs_t ProtocolIE_SingleContainer_1920P3_t; -typedef E2connectionUpdate_ItemIEs_t ProtocolIE_SingleContainer_1920P4_t; -typedef E2connectionUpdateRemove_ItemIEs_t ProtocolIE_SingleContainer_1920P5_t; -typedef E2connectionSetupFailed_ItemIEs_t ProtocolIE_SingleContainer_1920P6_t; -typedef E2nodeComponentConfigAddition_ItemIEs_t ProtocolIE_SingleContainer_1920P7_t; -typedef E2nodeComponentConfigUpdate_ItemIEs_t ProtocolIE_SingleContainer_1920P8_t; -typedef E2nodeComponentConfigRemoval_ItemIEs_t ProtocolIE_SingleContainer_1920P9_t; -typedef E2nodeTNLassociationRemoval_ItemIEs_t ProtocolIE_SingleContainer_1920P10_t; -typedef E2nodeComponentConfigAdditionAck_ItemIEs_t ProtocolIE_SingleContainer_1920P11_t; -typedef E2nodeComponentConfigUpdateAck_ItemIEs_t ProtocolIE_SingleContainer_1920P12_t; -typedef E2nodeComponentConfigRemovalAck_ItemIEs_t ProtocolIE_SingleContainer_1920P13_t; -typedef RANfunction_ItemIEs_t ProtocolIE_SingleContainer_1920P14_t; -typedef RANfunctionID_ItemIEs_t ProtocolIE_SingleContainer_1920P15_t; -typedef RANfunctionIDcause_ItemIEs_t ProtocolIE_SingleContainer_1920P16_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P0; -asn_struct_free_f ProtocolIE_SingleContainer_1920P0_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P0_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P0_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P0_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P0_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P0_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P0_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P0_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P0_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P0_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P0_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P1; -asn_struct_free_f ProtocolIE_SingleContainer_1920P1_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P1_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P1_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P1_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P1_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P1_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P1_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P1_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P1_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P1_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P1_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P2; -asn_struct_free_f ProtocolIE_SingleContainer_1920P2_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P2_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P2_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P2_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P2_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P2_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P2_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P2_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P2_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P2_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P2_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P3; -asn_struct_free_f ProtocolIE_SingleContainer_1920P3_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P3_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P3_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P3_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P3_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P3_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P3_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P3_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P3_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P3_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P3_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P4; -asn_struct_free_f ProtocolIE_SingleContainer_1920P4_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P4_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P4_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P4_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P4_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P4_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P4_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P4_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P4_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P4_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P4_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P5; -asn_struct_free_f ProtocolIE_SingleContainer_1920P5_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P5_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P5_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P5_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P5_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P5_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P5_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P5_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P5_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P5_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P5_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P6; -asn_struct_free_f ProtocolIE_SingleContainer_1920P6_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P6_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P6_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P6_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P6_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P6_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P6_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P6_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P6_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P6_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P6_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P7; -asn_struct_free_f ProtocolIE_SingleContainer_1920P7_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P7_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P7_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P7_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P7_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P7_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P7_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P7_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P7_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P7_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P7_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P8; -asn_struct_free_f ProtocolIE_SingleContainer_1920P8_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P8_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P8_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P8_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P8_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P8_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P8_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P8_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P8_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P8_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P8_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P9; -asn_struct_free_f ProtocolIE_SingleContainer_1920P9_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P9_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P9_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P9_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P9_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P9_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P9_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P9_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P9_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P9_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P9_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P10; -asn_struct_free_f ProtocolIE_SingleContainer_1920P10_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P10_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P10_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P10_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P10_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P10_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P10_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P10_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P10_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P10_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P10_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P11; -asn_struct_free_f ProtocolIE_SingleContainer_1920P11_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P11_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P11_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P11_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P11_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P11_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P11_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P11_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P11_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P11_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P11_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P12; -asn_struct_free_f ProtocolIE_SingleContainer_1920P12_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P12_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P12_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P12_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P12_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P12_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P12_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P12_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P12_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P12_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P12_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P13; -asn_struct_free_f ProtocolIE_SingleContainer_1920P13_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P13_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P13_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P13_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P13_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P13_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P13_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P13_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P13_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P13_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P13_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P14; -asn_struct_free_f ProtocolIE_SingleContainer_1920P14_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P14_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P14_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P14_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P14_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P14_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P14_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P14_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P14_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P14_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P14_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P15; -asn_struct_free_f ProtocolIE_SingleContainer_1920P15_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P15_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P15_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P15_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P15_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P15_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P15_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P15_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P15_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P15_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P15_encode_aper; -extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1920P16; -asn_struct_free_f ProtocolIE_SingleContainer_1920P16_free; -asn_struct_print_f ProtocolIE_SingleContainer_1920P16_print; -asn_constr_check_f ProtocolIE_SingleContainer_1920P16_constraint; -ber_type_decoder_f ProtocolIE_SingleContainer_1920P16_decode_ber; -der_type_encoder_f ProtocolIE_SingleContainer_1920P16_encode_der; -xer_type_decoder_f ProtocolIE_SingleContainer_1920P16_decode_xer; -xer_type_encoder_f ProtocolIE_SingleContainer_1920P16_encode_xer; -per_type_decoder_f ProtocolIE_SingleContainer_1920P16_decode_uper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P16_encode_uper; -per_type_decoder_f ProtocolIE_SingleContainer_1920P16_decode_aper; -per_type_encoder_f ProtocolIE_SingleContainer_1920P16_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _ProtocolIE_SingleContainer_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunction-Item.c b/e2sim/src/ASN1c/RANfunction-Item.c deleted file mode 100644 index 9b52991..0000000 --- a/e2sim/src/ASN1c/RANfunction-Item.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunction-Item.h" - -static asn_TYPE_member_t asn_MBR_RANfunction_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionDefinition), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionDefinition" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionRevision), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionRevision, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionRevision" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionOID), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionOID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionOID" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunction_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunctionRevision */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunctionOID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Item_specs_1 = { - sizeof(struct RANfunction_Item), - offsetof(struct RANfunction_Item, _asn_ctx), - asn_MAP_RANfunction_Item_tag2el_1, - 4, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunction_Item = { - "RANfunction-Item", - "RANfunction-Item", - &asn_OP_SEQUENCE, - asn_DEF_RANfunction_Item_tags_1, - sizeof(asn_DEF_RANfunction_Item_tags_1) - /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ - asn_DEF_RANfunction_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunction_Item_tags_1) - /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunction_Item_1, - 4, /* Elements count */ - &asn_SPC_RANfunction_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RANfunction-Item.h b/e2sim/src/ASN1c/RANfunction-Item.h deleted file mode 100644 index 172e34f..0000000 --- a/e2sim/src/ASN1c/RANfunction-Item.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunction_Item_H_ -#define _RANfunction_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RANfunctionID.h" -#include "RANfunctionDefinition.h" -#include "RANfunctionRevision.h" -#include "RANfunctionOID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunction-Item */ -typedef struct RANfunction_Item { - RANfunctionID_t ranFunctionID; - RANfunctionDefinition_t ranFunctionDefinition; - RANfunctionRevision_t ranFunctionRevision; - RANfunctionOID_t ranFunctionOID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunction_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunction_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunctionDefinition.c b/e2sim/src/ASN1c/RANfunctionDefinition.c deleted file mode 100644 index 0243686..0000000 --- a/e2sim/src/ASN1c/RANfunctionDefinition.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunctionDefinition.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RANfunctionDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition = { - "RANfunctionDefinition", - "RANfunctionDefinition", - &asn_OP_OCTET_STRING, - asn_DEF_RANfunctionDefinition_tags_1, - sizeof(asn_DEF_RANfunctionDefinition_tags_1) - /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionDefinition_tags_1) - /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RANfunctionDefinition.h b/e2sim/src/ASN1c/RANfunctionDefinition.h deleted file mode 100644 index c10ca55..0000000 --- a/e2sim/src/ASN1c/RANfunctionDefinition.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunctionDefinition_H_ -#define _RANfunctionDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionDefinition */ -typedef OCTET_STRING_t RANfunctionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition; -asn_struct_free_f RANfunctionDefinition_free; -asn_struct_print_f RANfunctionDefinition_print; -asn_constr_check_f RANfunctionDefinition_constraint; -ber_type_decoder_f RANfunctionDefinition_decode_ber; -der_type_encoder_f RANfunctionDefinition_encode_der; -xer_type_decoder_f RANfunctionDefinition_decode_xer; -xer_type_encoder_f RANfunctionDefinition_encode_xer; -per_type_decoder_f RANfunctionDefinition_decode_uper; -per_type_encoder_f RANfunctionDefinition_encode_uper; -per_type_decoder_f RANfunctionDefinition_decode_aper; -per_type_encoder_f RANfunctionDefinition_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionDefinition_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunctionID-Item.c b/e2sim/src/ASN1c/RANfunctionID-Item.c deleted file mode 100644 index 9b88717..0000000 --- a/e2sim/src/ASN1c/RANfunctionID-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunctionID-Item.h" - -static asn_TYPE_member_t asn_MBR_RANfunctionID_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionRevision), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionRevision, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionRevision" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionID_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranFunctionRevision */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_Item_specs_1 = { - sizeof(struct RANfunctionID_Item), - offsetof(struct RANfunctionID_Item, _asn_ctx), - asn_MAP_RANfunctionID_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item = { - "RANfunctionID-Item", - "RANfunctionID-Item", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionID_Item_tags_1, - sizeof(asn_DEF_RANfunctionID_Item_tags_1) - /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionID_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionID_Item_tags_1) - /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionID_Item_1, - 2, /* Elements count */ - &asn_SPC_RANfunctionID_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RANfunctionID-Item.h b/e2sim/src/ASN1c/RANfunctionID-Item.h deleted file mode 100644 index e73fc37..0000000 --- a/e2sim/src/ASN1c/RANfunctionID-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunctionID_Item_H_ -#define _RANfunctionID_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RANfunctionID.h" -#include "RANfunctionRevision.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionID-Item */ -typedef struct RANfunctionID_Item { - RANfunctionID_t ranFunctionID; - RANfunctionRevision_t ranFunctionRevision; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionID_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionID_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunctionID.c b/e2sim/src/ASN1c/RANfunctionID.c deleted file mode 100644 index 21e1cb9..0000000 --- a/e2sim/src/ASN1c/RANfunctionID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunctionID.h" - -int -RANfunctionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 4095)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionID = { - "RANfunctionID", - "RANfunctionID", - &asn_OP_NativeInteger, - asn_DEF_RANfunctionID_tags_1, - sizeof(asn_DEF_RANfunctionID_tags_1) - /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionID_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionID_tags_1) - /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctionID_constr_1, RANfunctionID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/RANfunctionID.h b/e2sim/src/ASN1c/RANfunctionID.h deleted file mode 100644 index 840a432..0000000 --- a/e2sim/src/ASN1c/RANfunctionID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunctionID_H_ -#define _RANfunctionID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionID */ -typedef long RANfunctionID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID; -asn_struct_free_f RANfunctionID_free; -asn_struct_print_f RANfunctionID_print; -asn_constr_check_f RANfunctionID_constraint; -ber_type_decoder_f RANfunctionID_decode_ber; -der_type_encoder_f RANfunctionID_encode_der; -xer_type_decoder_f RANfunctionID_decode_xer; -xer_type_encoder_f RANfunctionID_encode_xer; -per_type_decoder_f RANfunctionID_decode_uper; -per_type_encoder_f RANfunctionID_encode_uper; -per_type_decoder_f RANfunctionID_decode_aper; -per_type_encoder_f RANfunctionID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunctionIDcause-Item.c b/e2sim/src/ASN1c/RANfunctionIDcause-Item.c deleted file mode 100644 index c35e8b6..0000000 --- a/e2sim/src/ASN1c/RANfunctionIDcause-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunctionIDcause-Item.h" - -static asn_TYPE_member_t asn_MBR_RANfunctionIDcause_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_Item_specs_1 = { - sizeof(struct RANfunctionIDcause_Item), - offsetof(struct RANfunctionIDcause_Item, _asn_ctx), - asn_MAP_RANfunctionIDcause_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item = { - "RANfunctionIDcause-Item", - "RANfunctionIDcause-Item", - &asn_OP_SEQUENCE, - asn_DEF_RANfunctionIDcause_Item_tags_1, - sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) - /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionIDcause_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) - /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RANfunctionIDcause_Item_1, - 2, /* Elements count */ - &asn_SPC_RANfunctionIDcause_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RANfunctionIDcause-Item.h b/e2sim/src/ASN1c/RANfunctionIDcause-Item.h deleted file mode 100644 index e1a6da2..0000000 --- a/e2sim/src/ASN1c/RANfunctionIDcause-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunctionIDcause_Item_H_ -#define _RANfunctionIDcause_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RANfunctionID.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionIDcause-Item */ -typedef struct RANfunctionIDcause_Item { - RANfunctionID_t ranFunctionID; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionIDcause_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionIDcause_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunctionOID.c b/e2sim/src/ASN1c/RANfunctionOID.c deleted file mode 100644 index 160e518..0000000 --- a/e2sim/src/ASN1c/RANfunctionOID.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunctionOID.h" - -static const int permitted_alphabet_table_1[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ - 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ -10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ - 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ -38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ - 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ -64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ -}; -static const int permitted_alphabet_code2value_1[74] = { -32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, -55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, -75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, -97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, -113,114,115,116,117,118,119,120,121,122,}; - - -static int check_permitted_alphabet_1(const void *sptr) { - const int *table = permitted_alphabet_table_1; - /* The underlying type is PrintableString */ - const PrintableString_t *st = (const PrintableString_t *)sptr; - const uint8_t *ch = st->buf; - const uint8_t *end = ch + st->size; - - for(; ch < end; ch++) { - uint8_t cv = *ch; - if(!table[cv]) return -1; - } - return 0; -} - -int -RANfunctionOID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const PrintableString_t *st = (const PrintableString_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = st->size; - - if((size >= 1 && size <= 1000) - && !check_permitted_alphabet_1(st)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int asn_PER_MAP_RANfunctionOID_1_v2c(unsigned int value) { - if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) - return -1; - return permitted_alphabet_table_1[value] - 1; -} -static int asn_PER_MAP_RANfunctionOID_1_c2v(unsigned int code) { - if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) - return -1; - return permitted_alphabet_code2value_1[code]; -} -/* - * This type is implemented using PrintableString, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RANfunctionOID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, - { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */, - asn_PER_MAP_RANfunctionOID_1_v2c, /* Value to PER code map */ - asn_PER_MAP_RANfunctionOID_1_c2v /* PER code to value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionOID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionOID = { - "RANfunctionOID", - "RANfunctionOID", - &asn_OP_PrintableString, - asn_DEF_RANfunctionOID_tags_1, - sizeof(asn_DEF_RANfunctionOID_tags_1) - /sizeof(asn_DEF_RANfunctionOID_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionOID_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionOID_tags_1) - /sizeof(asn_DEF_RANfunctionOID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctionOID_constr_1, RANfunctionOID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/RANfunctionOID.h b/e2sim/src/ASN1c/RANfunctionOID.h deleted file mode 100644 index ccf407e..0000000 --- a/e2sim/src/ASN1c/RANfunctionOID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunctionOID_H_ -#define _RANfunctionOID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "PrintableString.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionOID */ -typedef PrintableString_t RANfunctionOID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RANfunctionOID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionOID; -asn_struct_free_f RANfunctionOID_free; -asn_struct_print_f RANfunctionOID_print; -asn_constr_check_f RANfunctionOID_constraint; -ber_type_decoder_f RANfunctionOID_decode_ber; -der_type_encoder_f RANfunctionOID_encode_der; -xer_type_decoder_f RANfunctionOID_decode_xer; -xer_type_encoder_f RANfunctionOID_encode_xer; -per_type_decoder_f RANfunctionOID_decode_uper; -per_type_encoder_f RANfunctionOID_encode_uper; -per_type_decoder_f RANfunctionOID_decode_aper; -per_type_encoder_f RANfunctionOID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionOID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunctionRevision.c b/e2sim/src/ASN1c/RANfunctionRevision.c deleted file mode 100644 index c10b205..0000000 --- a/e2sim/src/ASN1c/RANfunctionRevision.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunctionRevision.h" - -int -RANfunctionRevision_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 4095)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionRevision_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision = { - "RANfunctionRevision", - "RANfunctionRevision", - &asn_OP_NativeInteger, - asn_DEF_RANfunctionRevision_tags_1, - sizeof(asn_DEF_RANfunctionRevision_tags_1) - /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionRevision_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionRevision_tags_1) - /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctionRevision_constr_1, RANfunctionRevision_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/RANfunctionRevision.h b/e2sim/src/ASN1c/RANfunctionRevision.h deleted file mode 100644 index bfc2129..0000000 --- a/e2sim/src/ASN1c/RANfunctionRevision.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunctionRevision_H_ -#define _RANfunctionRevision_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RANfunctionRevision */ -typedef long RANfunctionRevision_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision; -asn_struct_free_f RANfunctionRevision_free; -asn_struct_print_f RANfunctionRevision_print; -asn_constr_check_f RANfunctionRevision_constraint; -ber_type_decoder_f RANfunctionRevision_decode_ber; -der_type_encoder_f RANfunctionRevision_encode_der; -xer_type_decoder_f RANfunctionRevision_decode_xer; -xer_type_encoder_f RANfunctionRevision_encode_xer; -per_type_decoder_f RANfunctionRevision_decode_uper; -per_type_encoder_f RANfunctionRevision_encode_uper; -per_type_decoder_f RANfunctionRevision_decode_aper; -per_type_encoder_f RANfunctionRevision_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionRevision_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunctions-List.c b/e2sim/src/ASN1c/RANfunctions-List.c deleted file mode 100644 index 4c0806b..0000000 --- a/e2sim/src/ASN1c/RANfunctions-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunctions-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RANfunctions_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RANfunctions_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P14, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctions_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RANfunctions_List_specs_1 = { - sizeof(struct RANfunctions_List), - offsetof(struct RANfunctions_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctions_List = { - "RANfunctions-List", - "RANfunctions-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RANfunctions_List_tags_1, - sizeof(asn_DEF_RANfunctions_List_tags_1) - /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ - asn_DEF_RANfunctions_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctions_List_tags_1) - /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctions_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RANfunctions_List_1, - 1, /* Single element */ - &asn_SPC_RANfunctions_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RANfunctions-List.h b/e2sim/src/ASN1c/RANfunctions-List.h deleted file mode 100644 index d517ed5..0000000 --- a/e2sim/src/ASN1c/RANfunctions-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunctions_List_H_ -#define _RANfunctions_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RANfunctions-List */ -typedef struct RANfunctions_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctions_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctions_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctions_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunctionsID-List.c b/e2sim/src/ASN1c/RANfunctionsID-List.c deleted file mode 100644 index 4e10ee4..0000000 --- a/e2sim/src/ASN1c/RANfunctionsID-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunctionsID-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RANfunctionsID_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RANfunctionsID_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P15, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionsID_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RANfunctionsID_List_specs_1 = { - sizeof(struct RANfunctionsID_List), - offsetof(struct RANfunctionsID_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List = { - "RANfunctionsID-List", - "RANfunctionsID-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RANfunctionsID_List_tags_1, - sizeof(asn_DEF_RANfunctionsID_List_tags_1) - /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionsID_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionsID_List_tags_1) - /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctionsID_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RANfunctionsID_List_1, - 1, /* Single element */ - &asn_SPC_RANfunctionsID_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RANfunctionsID-List.h b/e2sim/src/ASN1c/RANfunctionsID-List.h deleted file mode 100644 index a4b9ed3..0000000 --- a/e2sim/src/ASN1c/RANfunctionsID-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunctionsID_List_H_ -#define _RANfunctionsID_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RANfunctionsID-List */ -typedef struct RANfunctionsID_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionsID_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionsID_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RANfunctionsIDcause-List.c b/e2sim/src/ASN1c/RANfunctionsIDcause-List.c deleted file mode 100644 index 4a19b69..0000000 --- a/e2sim/src/ASN1c/RANfunctionsIDcause-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RANfunctionsIDcause-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RANfunctionsIDcause_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RANfunctionsIDcause_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P16, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RANfunctionsIDcause_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RANfunctionsIDcause_List_specs_1 = { - sizeof(struct RANfunctionsIDcause_List), - offsetof(struct RANfunctionsIDcause_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List = { - "RANfunctionsIDcause-List", - "RANfunctionsIDcause-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RANfunctionsIDcause_List_tags_1, - sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) - /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ - asn_DEF_RANfunctionsIDcause_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) - /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RANfunctionsIDcause_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RANfunctionsIDcause_List_1, - 1, /* Single element */ - &asn_SPC_RANfunctionsIDcause_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RANfunctionsIDcause-List.h b/e2sim/src/ASN1c/RANfunctionsIDcause-List.h deleted file mode 100644 index c960ffb..0000000 --- a/e2sim/src/ASN1c/RANfunctionsIDcause-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RANfunctionsIDcause_List_H_ -#define _RANfunctionsIDcause_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RANfunctionsIDcause-List */ -typedef struct RANfunctionsIDcause_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RANfunctionsIDcause_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RANfunctionsIDcause_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICaction-Admitted-Item.c b/e2sim/src/ASN1c/RICaction-Admitted-Item.c deleted file mode 100644 index dbedb03..0000000 --- a/e2sim/src/ASN1c/RICaction-Admitted-Item.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICaction-Admitted-Item.h" - -static asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_Item, ricActionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionID" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1 = { - sizeof(struct RICaction_Admitted_Item), - offsetof(struct RICaction_Admitted_Item, _asn_ctx), - asn_MAP_RICaction_Admitted_Item_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item = { - "RICaction-Admitted-Item", - "RICaction-Admitted-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_Admitted_Item_tags_1, - sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ - asn_DEF_RICaction_Admitted_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_Admitted_Item_1, - 1, /* Elements count */ - &asn_SPC_RICaction_Admitted_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICaction-Admitted-Item.h b/e2sim/src/ASN1c/RICaction-Admitted-Item.h deleted file mode 100644 index c2d204c..0000000 --- a/e2sim/src/ASN1c/RICaction-Admitted-Item.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICaction_Admitted_Item_H_ -#define _RICaction_Admitted_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICactionID.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICaction-Admitted-Item */ -typedef struct RICaction_Admitted_Item { - RICactionID_t ricActionID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_Admitted_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_Admitted_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICaction-Admitted-List.c b/e2sim/src/ASN1c/RICaction-Admitted-List.c deleted file mode 100644 index de86657..0000000 --- a/e2sim/src/ASN1c/RICaction-Admitted-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICaction-Admitted-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RICaction_Admitted_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RICaction_Admitted_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RICaction_Admitted_List_specs_1 = { - sizeof(struct RICaction_Admitted_List), - offsetof(struct RICaction_Admitted_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List = { - "RICaction-Admitted-List", - "RICaction-Admitted-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICaction_Admitted_List_tags_1, - sizeof(asn_DEF_RICaction_Admitted_List_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ - asn_DEF_RICaction_Admitted_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_Admitted_List_tags_1) - /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICaction_Admitted_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICaction_Admitted_List_1, - 1, /* Single element */ - &asn_SPC_RICaction_Admitted_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICaction-Admitted-List.h b/e2sim/src/ASN1c/RICaction-Admitted-List.h deleted file mode 100644 index a497f03..0000000 --- a/e2sim/src/ASN1c/RICaction-Admitted-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICaction_Admitted_List_H_ -#define _RICaction_Admitted_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICaction-Admitted-List */ -typedef struct RICaction_Admitted_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_Admitted_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_Admitted_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICaction-NotAdmitted-Item.c b/e2sim/src/ASN1c/RICaction-NotAdmitted-Item.c deleted file mode 100644 index d015993..0000000 --- a/e2sim/src/ASN1c/RICaction-NotAdmitted-Item.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICaction-NotAdmitted-Item.h" - -static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricActionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_Item_specs_1 = { - sizeof(struct RICaction_NotAdmitted_Item), - offsetof(struct RICaction_NotAdmitted_Item, _asn_ctx), - asn_MAP_RICaction_NotAdmitted_Item_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item = { - "RICaction-NotAdmitted-Item", - "RICaction-NotAdmitted-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_NotAdmitted_Item_tags_1, - sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ - asn_DEF_RICaction_NotAdmitted_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_NotAdmitted_Item_1, - 2, /* Elements count */ - &asn_SPC_RICaction_NotAdmitted_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICaction-NotAdmitted-Item.h b/e2sim/src/ASN1c/RICaction-NotAdmitted-Item.h deleted file mode 100644 index 57dcd06..0000000 --- a/e2sim/src/ASN1c/RICaction-NotAdmitted-Item.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICaction_NotAdmitted_Item_H_ -#define _RICaction_NotAdmitted_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICactionID.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICaction-NotAdmitted-Item */ -typedef struct RICaction_NotAdmitted_Item { - RICactionID_t ricActionID; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_NotAdmitted_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_NotAdmitted_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICaction-NotAdmitted-List.c b/e2sim/src/ASN1c/RICaction-NotAdmitted-List.c deleted file mode 100644 index c2a44b2..0000000 --- a/e2sim/src/ASN1c/RICaction-NotAdmitted-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICaction-NotAdmitted-List.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RICaction_NotAdmitted_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RICaction_NotAdmitted_List_specs_1 = { - sizeof(struct RICaction_NotAdmitted_List), - offsetof(struct RICaction_NotAdmitted_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List = { - "RICaction-NotAdmitted-List", - "RICaction-NotAdmitted-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICaction_NotAdmitted_List_tags_1, - sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ - asn_DEF_RICaction_NotAdmitted_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) - /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICaction_NotAdmitted_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICaction_NotAdmitted_List_1, - 1, /* Single element */ - &asn_SPC_RICaction_NotAdmitted_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICaction-NotAdmitted-List.h b/e2sim/src/ASN1c/RICaction-NotAdmitted-List.h deleted file mode 100644 index 3510867..0000000 --- a/e2sim/src/ASN1c/RICaction-NotAdmitted-List.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICaction_NotAdmitted_List_H_ -#define _RICaction_NotAdmitted_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICaction-NotAdmitted-List */ -typedef struct RICaction_NotAdmitted_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_NotAdmitted_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_NotAdmitted_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICaction-ToBeSetup-Item.c b/e2sim/src/ASN1c/RICaction-ToBeSetup-Item.c deleted file mode 100644 index 2ac74a8..0000000 --- a/e2sim/src/ASN1c/RICaction-ToBeSetup-Item.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICaction-ToBeSetup-Item.h" - -#include "RICsubsequentAction.h" -static asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionType), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionType" - }, - { ATF_POINTER, 2, offsetof(struct RICaction_ToBeSetup_Item, ricActionDefinition), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactionDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricActionDefinition" - }, - { ATF_POINTER, 1, offsetof(struct RICaction_ToBeSetup_Item, ricSubsequentAction), - (ASN_TAG_CLASS_CONTEXT | (3 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICsubsequentAction, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricSubsequentAction" - }, -}; -static const int asn_MAP_RICaction_ToBeSetup_Item_oms_1[] = { 2, 3 }; -static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionType */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ricSubsequentAction */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_Item_specs_1 = { - sizeof(struct RICaction_ToBeSetup_Item), - offsetof(struct RICaction_ToBeSetup_Item, _asn_ctx), - asn_MAP_RICaction_ToBeSetup_Item_tag2el_1, - 4, /* Count of tags in the map */ - asn_MAP_RICaction_ToBeSetup_Item_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 4, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item = { - "RICaction-ToBeSetup-Item", - "RICaction-ToBeSetup-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICaction_ToBeSetup_Item_tags_1, - sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ - asn_DEF_RICaction_ToBeSetup_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) - /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICaction_ToBeSetup_Item_1, - 4, /* Elements count */ - &asn_SPC_RICaction_ToBeSetup_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICaction-ToBeSetup-Item.h b/e2sim/src/ASN1c/RICaction-ToBeSetup-Item.h deleted file mode 100644 index 3ae5ed4..0000000 --- a/e2sim/src/ASN1c/RICaction-ToBeSetup-Item.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICaction_ToBeSetup_Item_H_ -#define _RICaction_ToBeSetup_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICactionID.h" -#include "RICactionType.h" -#include "RICactionDefinition.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct RICsubsequentAction; - -/* RICaction-ToBeSetup-Item */ -typedef struct RICaction_ToBeSetup_Item { - RICactionID_t ricActionID; - RICactionType_t ricActionType; - RICactionDefinition_t *ricActionDefinition; /* OPTIONAL */ - struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICaction_ToBeSetup_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICaction_ToBeSetup_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICactionDefinition.c b/e2sim/src/ASN1c/RICactionDefinition.c deleted file mode 100644 index 008ef4c..0000000 --- a/e2sim/src/ASN1c/RICactionDefinition.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICactionDefinition.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICactionDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICactionDefinition = { - "RICactionDefinition", - "RICactionDefinition", - &asn_OP_OCTET_STRING, - asn_DEF_RICactionDefinition_tags_1, - sizeof(asn_DEF_RICactionDefinition_tags_1) - /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ - asn_DEF_RICactionDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactionDefinition_tags_1) - /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICactionDefinition.h b/e2sim/src/ASN1c/RICactionDefinition.h deleted file mode 100644 index 091bb27..0000000 --- a/e2sim/src/ASN1c/RICactionDefinition.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICactionDefinition_H_ -#define _RICactionDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICactionDefinition */ -typedef OCTET_STRING_t RICactionDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICactionDefinition; -asn_struct_free_f RICactionDefinition_free; -asn_struct_print_f RICactionDefinition_print; -asn_constr_check_f RICactionDefinition_constraint; -ber_type_decoder_f RICactionDefinition_decode_ber; -der_type_encoder_f RICactionDefinition_encode_der; -xer_type_decoder_f RICactionDefinition_decode_xer; -xer_type_encoder_f RICactionDefinition_encode_xer; -per_type_decoder_f RICactionDefinition_decode_uper; -per_type_encoder_f RICactionDefinition_encode_uper; -per_type_decoder_f RICactionDefinition_decode_aper; -per_type_encoder_f RICactionDefinition_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactionDefinition_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICactionID.c b/e2sim/src/ASN1c/RICactionID.c deleted file mode 100644 index fcf3b01..0000000 --- a/e2sim/src/ASN1c/RICactionID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICactionID.h" - -int -RICactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RICactionID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RICactionID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICactionID = { - "RICactionID", - "RICactionID", - &asn_OP_NativeInteger, - asn_DEF_RICactionID_tags_1, - sizeof(asn_DEF_RICactionID_tags_1) - /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ - asn_DEF_RICactionID_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactionID_tags_1) - /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICactionID_constr_1, RICactionID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/RICactionID.h b/e2sim/src/ASN1c/RICactionID.h deleted file mode 100644 index 9c74319..0000000 --- a/e2sim/src/ASN1c/RICactionID.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICactionID_H_ -#define _RICactionID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICactionID */ -typedef long RICactionID_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICactionID_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICactionID; -asn_struct_free_f RICactionID_free; -asn_struct_print_f RICactionID_print; -asn_constr_check_f RICactionID_constraint; -ber_type_decoder_f RICactionID_decode_ber; -der_type_encoder_f RICactionID_encode_der; -xer_type_decoder_f RICactionID_decode_xer; -xer_type_encoder_f RICactionID_encode_xer; -per_type_decoder_f RICactionID_decode_uper; -per_type_encoder_f RICactionID_encode_uper; -per_type_decoder_f RICactionID_decode_aper; -per_type_encoder_f RICactionID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactionID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICactionType.c b/e2sim/src/ASN1c/RICactionType.c deleted file mode 100644 index 9ce9bd3..0000000 --- a/e2sim/src/ASN1c/RICactionType.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICactionType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RICactionType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICactionType_value2enum_1[] = { - { 0, 6, "report" }, - { 1, 6, "insert" }, - { 2, 6, "policy" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICactionType_enum2value_1[] = { - 1, /* insert(1) */ - 2, /* policy(2) */ - 0 /* report(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1 = { - asn_MAP_RICactionType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICactionType_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICactionType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICactionType = { - "RICactionType", - "RICactionType", - &asn_OP_NativeEnumerated, - asn_DEF_RICactionType_tags_1, - sizeof(asn_DEF_RICactionType_tags_1) - /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ - asn_DEF_RICactionType_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactionType_tags_1) - /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICactionType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICactionType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICactionType.h b/e2sim/src/ASN1c/RICactionType.h deleted file mode 100644 index 10d4694..0000000 --- a/e2sim/src/ASN1c/RICactionType.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICactionType_H_ -#define _RICactionType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICactionType { - RICactionType_report = 0, - RICactionType_insert = 1, - RICactionType_policy = 2 - /* - * Enumeration is extensible - */ -} e_RICactionType; - -/* RICactionType */ -typedef long RICactionType_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICactionType_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICactionType; -extern const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1; -asn_struct_free_f RICactionType_free; -asn_struct_print_f RICactionType_print; -asn_constr_check_f RICactionType_constraint; -ber_type_decoder_f RICactionType_decode_ber; -der_type_encoder_f RICactionType_encode_der; -xer_type_decoder_f RICactionType_decode_xer; -xer_type_encoder_f RICactionType_encode_xer; -per_type_decoder_f RICactionType_decode_uper; -per_type_encoder_f RICactionType_encode_uper; -per_type_decoder_f RICactionType_decode_aper; -per_type_encoder_f RICactionType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactionType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICactions-ToBeSetup-List.c b/e2sim/src/ASN1c/RICactions-ToBeSetup-List.c deleted file mode 100644 index d79b763..0000000 --- a/e2sim/src/ASN1c/RICactions-ToBeSetup-List.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICactions-ToBeSetup-List.h" - -#include "ProtocolIE-SingleContainer.h" -asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P0, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICactions_ToBeSetup_List_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1 = { - sizeof(struct RICactions_ToBeSetup_List), - offsetof(struct RICactions_ToBeSetup_List, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List = { - "RICactions-ToBeSetup-List", - "RICactions-ToBeSetup-List", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICactions_ToBeSetup_List_tags_1, - sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) - /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ - asn_DEF_RICactions_ToBeSetup_List_tags_1, /* Same as above */ - sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) - /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICactions_ToBeSetup_List_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICactions_ToBeSetup_List_1, - 1, /* Single element */ - &asn_SPC_RICactions_ToBeSetup_List_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICactions-ToBeSetup-List.h b/e2sim/src/ASN1c/RICactions-ToBeSetup-List.h deleted file mode 100644 index 031e11f..0000000 --- a/e2sim/src/ASN1c/RICactions-ToBeSetup-List.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICactions_ToBeSetup_List_H_ -#define _RICactions_ToBeSetup_List_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICactions-ToBeSetup-List */ -typedef struct RICactions_ToBeSetup_List { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICactions_ToBeSetup_List_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List; -extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1; -extern asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[1]; -extern asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICactions_ToBeSetup_List_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICcallProcessID.c b/e2sim/src/ASN1c/RICcallProcessID.c deleted file mode 100644 index 9d655c5..0000000 --- a/e2sim/src/ASN1c/RICcallProcessID.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICcallProcessID.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcallProcessID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcallProcessID = { - "RICcallProcessID", - "RICcallProcessID", - &asn_OP_OCTET_STRING, - asn_DEF_RICcallProcessID_tags_1, - sizeof(asn_DEF_RICcallProcessID_tags_1) - /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ - asn_DEF_RICcallProcessID_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcallProcessID_tags_1) - /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICcallProcessID.h b/e2sim/src/ASN1c/RICcallProcessID.h deleted file mode 100644 index e50ac0e..0000000 --- a/e2sim/src/ASN1c/RICcallProcessID.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICcallProcessID_H_ -#define _RICcallProcessID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcallProcessID */ -typedef OCTET_STRING_t RICcallProcessID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcallProcessID; -asn_struct_free_f RICcallProcessID_free; -asn_struct_print_f RICcallProcessID_print; -asn_constr_check_f RICcallProcessID_constraint; -ber_type_decoder_f RICcallProcessID_decode_ber; -der_type_encoder_f RICcallProcessID_encode_der; -xer_type_decoder_f RICcallProcessID_decode_xer; -xer_type_encoder_f RICcallProcessID_encode_xer; -per_type_decoder_f RICcallProcessID_decode_uper; -per_type_encoder_f RICcallProcessID_encode_uper; -per_type_decoder_f RICcallProcessID_decode_aper; -per_type_encoder_f RICcallProcessID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcallProcessID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICcontrolAckRequest.c b/e2sim/src/ASN1c/RICcontrolAckRequest.c deleted file mode 100644 index 702c61c..0000000 --- a/e2sim/src/ASN1c/RICcontrolAckRequest.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICcontrolAckRequest.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_RICcontrolAckRequest_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolAckRequest_value2enum_1[] = { - { 0, 5, "noAck" }, - { 1, 3, "ack" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICcontrolAckRequest_enum2value_1[] = { - 1, /* ack(1) */ - 0 /* noAck(0) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_RICcontrolAckRequest_specs_1 = { - asn_MAP_RICcontrolAckRequest_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICcontrolAckRequest_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolAckRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest = { - "RICcontrolAckRequest", - "RICcontrolAckRequest", - &asn_OP_NativeEnumerated, - asn_DEF_RICcontrolAckRequest_tags_1, - sizeof(asn_DEF_RICcontrolAckRequest_tags_1) - /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolAckRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolAckRequest_tags_1) - /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICcontrolAckRequest_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICcontrolAckRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICcontrolAckRequest.h b/e2sim/src/ASN1c/RICcontrolAckRequest.h deleted file mode 100644 index f416db3..0000000 --- a/e2sim/src/ASN1c/RICcontrolAckRequest.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICcontrolAckRequest_H_ -#define _RICcontrolAckRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICcontrolAckRequest { - RICcontrolAckRequest_noAck = 0, - RICcontrolAckRequest_ack = 1 - /* - * Enumeration is extensible - */ -} e_RICcontrolAckRequest; - -/* RICcontrolAckRequest */ -typedef long RICcontrolAckRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest; -asn_struct_free_f RICcontrolAckRequest_free; -asn_struct_print_f RICcontrolAckRequest_print; -asn_constr_check_f RICcontrolAckRequest_constraint; -ber_type_decoder_f RICcontrolAckRequest_decode_ber; -der_type_encoder_f RICcontrolAckRequest_encode_der; -xer_type_decoder_f RICcontrolAckRequest_decode_xer; -xer_type_encoder_f RICcontrolAckRequest_encode_xer; -per_type_decoder_f RICcontrolAckRequest_decode_uper; -per_type_encoder_f RICcontrolAckRequest_encode_uper; -per_type_decoder_f RICcontrolAckRequest_decode_aper; -per_type_encoder_f RICcontrolAckRequest_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolAckRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICcontrolAcknowledge.c b/e2sim/src/ASN1c/RICcontrolAcknowledge.c deleted file mode 100644 index ef7e25f..0000000 --- a/e2sim/src/ASN1c/RICcontrolAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICcontrolAcknowledge.h" - -asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P9, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1 = { - sizeof(struct RICcontrolAcknowledge), - offsetof(struct RICcontrolAcknowledge, _asn_ctx), - asn_MAP_RICcontrolAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge = { - "RICcontrolAcknowledge", - "RICcontrolAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolAcknowledge_tags_1, - sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) - /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) - /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_RICcontrolAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICcontrolAcknowledge.h b/e2sim/src/ASN1c/RICcontrolAcknowledge.h deleted file mode 100644 index 6cb8034..0000000 --- a/e2sim/src/ASN1c/RICcontrolAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICcontrolAcknowledge_H_ -#define _RICcontrolAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolAcknowledge */ -typedef struct RICcontrolAcknowledge { - ProtocolIE_Container_1917P9_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICcontrolFailure.c b/e2sim/src/ASN1c/RICcontrolFailure.c deleted file mode 100644 index 48b48f7..0000000 --- a/e2sim/src/ASN1c/RICcontrolFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICcontrolFailure.h" - -asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P10, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1 = { - sizeof(struct RICcontrolFailure), - offsetof(struct RICcontrolFailure, _asn_ctx), - asn_MAP_RICcontrolFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure = { - "RICcontrolFailure", - "RICcontrolFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolFailure_tags_1, - sizeof(asn_DEF_RICcontrolFailure_tags_1) - /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolFailure_tags_1) - /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolFailure_1, - 1, /* Elements count */ - &asn_SPC_RICcontrolFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICcontrolFailure.h b/e2sim/src/ASN1c/RICcontrolFailure.h deleted file mode 100644 index 6302148..0000000 --- a/e2sim/src/ASN1c/RICcontrolFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICcontrolFailure_H_ -#define _RICcontrolFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolFailure */ -typedef struct RICcontrolFailure { - ProtocolIE_Container_1917P10_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICcontrolHeader.c b/e2sim/src/ASN1c/RICcontrolHeader.c deleted file mode 100644 index 68acc95..0000000 --- a/e2sim/src/ASN1c/RICcontrolHeader.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICcontrolHeader.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcontrolHeader_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader = { - "RICcontrolHeader", - "RICcontrolHeader", - &asn_OP_OCTET_STRING, - asn_DEF_RICcontrolHeader_tags_1, - sizeof(asn_DEF_RICcontrolHeader_tags_1) - /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolHeader_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolHeader_tags_1) - /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICcontrolHeader.h b/e2sim/src/ASN1c/RICcontrolHeader.h deleted file mode 100644 index a9f1f25..0000000 --- a/e2sim/src/ASN1c/RICcontrolHeader.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICcontrolHeader_H_ -#define _RICcontrolHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolHeader */ -typedef OCTET_STRING_t RICcontrolHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader; -asn_struct_free_f RICcontrolHeader_free; -asn_struct_print_f RICcontrolHeader_print; -asn_constr_check_f RICcontrolHeader_constraint; -ber_type_decoder_f RICcontrolHeader_decode_ber; -der_type_encoder_f RICcontrolHeader_encode_der; -xer_type_decoder_f RICcontrolHeader_decode_xer; -xer_type_encoder_f RICcontrolHeader_encode_xer; -per_type_decoder_f RICcontrolHeader_decode_uper; -per_type_encoder_f RICcontrolHeader_encode_uper; -per_type_decoder_f RICcontrolHeader_decode_aper; -per_type_encoder_f RICcontrolHeader_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolHeader_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICcontrolMessage.c b/e2sim/src/ASN1c/RICcontrolMessage.c deleted file mode 100644 index 05a8a81..0000000 --- a/e2sim/src/ASN1c/RICcontrolMessage.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICcontrolMessage.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcontrolMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage = { - "RICcontrolMessage", - "RICcontrolMessage", - &asn_OP_OCTET_STRING, - asn_DEF_RICcontrolMessage_tags_1, - sizeof(asn_DEF_RICcontrolMessage_tags_1) - /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolMessage_tags_1) - /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICcontrolMessage.h b/e2sim/src/ASN1c/RICcontrolMessage.h deleted file mode 100644 index 9190f91..0000000 --- a/e2sim/src/ASN1c/RICcontrolMessage.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICcontrolMessage_H_ -#define _RICcontrolMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolMessage */ -typedef OCTET_STRING_t RICcontrolMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage; -asn_struct_free_f RICcontrolMessage_free; -asn_struct_print_f RICcontrolMessage_print; -asn_constr_check_f RICcontrolMessage_constraint; -ber_type_decoder_f RICcontrolMessage_decode_ber; -der_type_encoder_f RICcontrolMessage_encode_der; -xer_type_decoder_f RICcontrolMessage_decode_xer; -xer_type_encoder_f RICcontrolMessage_encode_xer; -per_type_decoder_f RICcontrolMessage_decode_uper; -per_type_encoder_f RICcontrolMessage_encode_uper; -per_type_decoder_f RICcontrolMessage_decode_aper; -per_type_encoder_f RICcontrolMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICcontrolOutcome.c b/e2sim/src/ASN1c/RICcontrolOutcome.c deleted file mode 100644 index 54f9a8f..0000000 --- a/e2sim/src/ASN1c/RICcontrolOutcome.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICcontrolOutcome.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICcontrolOutcome_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome = { - "RICcontrolOutcome", - "RICcontrolOutcome", - &asn_OP_OCTET_STRING, - asn_DEF_RICcontrolOutcome_tags_1, - sizeof(asn_DEF_RICcontrolOutcome_tags_1) - /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolOutcome_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolOutcome_tags_1) - /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICcontrolOutcome.h b/e2sim/src/ASN1c/RICcontrolOutcome.h deleted file mode 100644 index acd1916..0000000 --- a/e2sim/src/ASN1c/RICcontrolOutcome.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICcontrolOutcome_H_ -#define _RICcontrolOutcome_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolOutcome */ -typedef OCTET_STRING_t RICcontrolOutcome_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome; -asn_struct_free_f RICcontrolOutcome_free; -asn_struct_print_f RICcontrolOutcome_print; -asn_constr_check_f RICcontrolOutcome_constraint; -ber_type_decoder_f RICcontrolOutcome_decode_ber; -der_type_encoder_f RICcontrolOutcome_encode_der; -xer_type_decoder_f RICcontrolOutcome_decode_xer; -xer_type_encoder_f RICcontrolOutcome_encode_xer; -per_type_decoder_f RICcontrolOutcome_decode_uper; -per_type_encoder_f RICcontrolOutcome_encode_uper; -per_type_decoder_f RICcontrolOutcome_decode_aper; -per_type_encoder_f RICcontrolOutcome_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolOutcome_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICcontrolRequest.c b/e2sim/src/ASN1c/RICcontrolRequest.c deleted file mode 100644 index f75b29c..0000000 --- a/e2sim/src/ASN1c/RICcontrolRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICcontrolRequest.h" - -asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P8, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1 = { - sizeof(struct RICcontrolRequest), - offsetof(struct RICcontrolRequest, _asn_ctx), - asn_MAP_RICcontrolRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest = { - "RICcontrolRequest", - "RICcontrolRequest", - &asn_OP_SEQUENCE, - asn_DEF_RICcontrolRequest_tags_1, - sizeof(asn_DEF_RICcontrolRequest_tags_1) - /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ - asn_DEF_RICcontrolRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICcontrolRequest_tags_1) - /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICcontrolRequest_1, - 1, /* Elements count */ - &asn_SPC_RICcontrolRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICcontrolRequest.h b/e2sim/src/ASN1c/RICcontrolRequest.h deleted file mode 100644 index 5596246..0000000 --- a/e2sim/src/ASN1c/RICcontrolRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICcontrolRequest_H_ -#define _RICcontrolRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICcontrolRequest */ -typedef struct RICcontrolRequest { - ProtocolIE_Container_1917P8_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICcontrolRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICcontrolRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICeventTriggerDefinition.c b/e2sim/src/ASN1c/RICeventTriggerDefinition.c deleted file mode 100644 index 610cd92..0000000 --- a/e2sim/src/ASN1c/RICeventTriggerDefinition.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICeventTriggerDefinition.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICeventTriggerDefinition_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition = { - "RICeventTriggerDefinition", - "RICeventTriggerDefinition", - &asn_OP_OCTET_STRING, - asn_DEF_RICeventTriggerDefinition_tags_1, - sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) - /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ - asn_DEF_RICeventTriggerDefinition_tags_1, /* Same as above */ - sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) - /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICeventTriggerDefinition.h b/e2sim/src/ASN1c/RICeventTriggerDefinition.h deleted file mode 100644 index 542a307..0000000 --- a/e2sim/src/ASN1c/RICeventTriggerDefinition.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICeventTriggerDefinition_H_ -#define _RICeventTriggerDefinition_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICeventTriggerDefinition */ -typedef OCTET_STRING_t RICeventTriggerDefinition_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition; -asn_struct_free_f RICeventTriggerDefinition_free; -asn_struct_print_f RICeventTriggerDefinition_print; -asn_constr_check_f RICeventTriggerDefinition_constraint; -ber_type_decoder_f RICeventTriggerDefinition_decode_ber; -der_type_encoder_f RICeventTriggerDefinition_encode_der; -xer_type_decoder_f RICeventTriggerDefinition_decode_xer; -xer_type_encoder_f RICeventTriggerDefinition_encode_xer; -per_type_decoder_f RICeventTriggerDefinition_decode_uper; -per_type_encoder_f RICeventTriggerDefinition_encode_uper; -per_type_decoder_f RICeventTriggerDefinition_decode_aper; -per_type_encoder_f RICeventTriggerDefinition_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICeventTriggerDefinition_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICindication.c b/e2sim/src/ASN1c/RICindication.c deleted file mode 100644 index 214a690..0000000 --- a/e2sim/src/ASN1c/RICindication.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICindication.h" - -asn_TYPE_member_t asn_MBR_RICindication_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICindication, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P7, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICindication_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICindication_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1 = { - sizeof(struct RICindication), - offsetof(struct RICindication, _asn_ctx), - asn_MAP_RICindication_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICindication = { - "RICindication", - "RICindication", - &asn_OP_SEQUENCE, - asn_DEF_RICindication_tags_1, - sizeof(asn_DEF_RICindication_tags_1) - /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ - asn_DEF_RICindication_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindication_tags_1) - /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICindication_1, - 1, /* Elements count */ - &asn_SPC_RICindication_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICindication.h b/e2sim/src/ASN1c/RICindication.h deleted file mode 100644 index 68799c3..0000000 --- a/e2sim/src/ASN1c/RICindication.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICindication_H_ -#define _RICindication_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindication */ -typedef struct RICindication { - ProtocolIE_Container_1917P7_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICindication_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindication; -extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1; -extern asn_TYPE_member_t asn_MBR_RICindication_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindication_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICindicationHeader.c b/e2sim/src/ASN1c/RICindicationHeader.c deleted file mode 100644 index 294772a..0000000 --- a/e2sim/src/ASN1c/RICindicationHeader.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICindicationHeader.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICindicationHeader_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationHeader = { - "RICindicationHeader", - "RICindicationHeader", - &asn_OP_OCTET_STRING, - asn_DEF_RICindicationHeader_tags_1, - sizeof(asn_DEF_RICindicationHeader_tags_1) - /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ - asn_DEF_RICindicationHeader_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationHeader_tags_1) - /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICindicationHeader.h b/e2sim/src/ASN1c/RICindicationHeader.h deleted file mode 100644 index f7f85e6..0000000 --- a/e2sim/src/ASN1c/RICindicationHeader.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICindicationHeader_H_ -#define _RICindicationHeader_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindicationHeader */ -typedef OCTET_STRING_t RICindicationHeader_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationHeader; -asn_struct_free_f RICindicationHeader_free; -asn_struct_print_f RICindicationHeader_print; -asn_constr_check_f RICindicationHeader_constraint; -ber_type_decoder_f RICindicationHeader_decode_ber; -der_type_encoder_f RICindicationHeader_encode_der; -xer_type_decoder_f RICindicationHeader_decode_xer; -xer_type_encoder_f RICindicationHeader_encode_xer; -per_type_decoder_f RICindicationHeader_decode_uper; -per_type_encoder_f RICindicationHeader_encode_uper; -per_type_decoder_f RICindicationHeader_decode_aper; -per_type_encoder_f RICindicationHeader_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationHeader_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICindicationMessage.c b/e2sim/src/ASN1c/RICindicationMessage.c deleted file mode 100644 index 70cc01e..0000000 --- a/e2sim/src/ASN1c/RICindicationMessage.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICindicationMessage.h" - -/* - * This type is implemented using OCTET_STRING, - * so here we adjust the DEF accordingly. - */ -static const ber_tlv_tag_t asn_DEF_RICindicationMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationMessage = { - "RICindicationMessage", - "RICindicationMessage", - &asn_OP_OCTET_STRING, - asn_DEF_RICindicationMessage_tags_1, - sizeof(asn_DEF_RICindicationMessage_tags_1) - /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ - asn_DEF_RICindicationMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationMessage_tags_1) - /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ - { 0, 0, OCTET_STRING_constraint }, - 0, 0, /* No members */ - &asn_SPC_OCTET_STRING_specs /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICindicationMessage.h b/e2sim/src/ASN1c/RICindicationMessage.h deleted file mode 100644 index dd77c49..0000000 --- a/e2sim/src/ASN1c/RICindicationMessage.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICindicationMessage_H_ -#define _RICindicationMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "OCTET_STRING.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindicationMessage */ -typedef OCTET_STRING_t RICindicationMessage_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationMessage; -asn_struct_free_f RICindicationMessage_free; -asn_struct_print_f RICindicationMessage_print; -asn_constr_check_f RICindicationMessage_constraint; -ber_type_decoder_f RICindicationMessage_decode_ber; -der_type_encoder_f RICindicationMessage_encode_der; -xer_type_decoder_f RICindicationMessage_decode_xer; -xer_type_encoder_f RICindicationMessage_encode_xer; -per_type_decoder_f RICindicationMessage_decode_uper; -per_type_encoder_f RICindicationMessage_encode_uper; -per_type_decoder_f RICindicationMessage_decode_aper; -per_type_encoder_f RICindicationMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICindicationSN.c b/e2sim/src/ASN1c/RICindicationSN.c deleted file mode 100644 index cf59f76..0000000 --- a/e2sim/src/ASN1c/RICindicationSN.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICindicationSN.h" - -int -RICindicationSN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_RICindicationSN_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_RICindicationSN_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationSN = { - "RICindicationSN", - "RICindicationSN", - &asn_OP_NativeInteger, - asn_DEF_RICindicationSN_tags_1, - sizeof(asn_DEF_RICindicationSN_tags_1) - /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ - asn_DEF_RICindicationSN_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationSN_tags_1) - /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICindicationSN_constr_1, RICindicationSN_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/RICindicationSN.h b/e2sim/src/ASN1c/RICindicationSN.h deleted file mode 100644 index 9765c1c..0000000 --- a/e2sim/src/ASN1c/RICindicationSN.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICindicationSN_H_ -#define _RICindicationSN_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICindicationSN */ -typedef long RICindicationSN_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationSN; -asn_struct_free_f RICindicationSN_free; -asn_struct_print_f RICindicationSN_print; -asn_constr_check_f RICindicationSN_constraint; -ber_type_decoder_f RICindicationSN_decode_ber; -der_type_encoder_f RICindicationSN_encode_der; -xer_type_decoder_f RICindicationSN_decode_xer; -xer_type_encoder_f RICindicationSN_encode_xer; -per_type_decoder_f RICindicationSN_decode_uper; -per_type_encoder_f RICindicationSN_encode_uper; -per_type_decoder_f RICindicationSN_decode_aper; -per_type_encoder_f RICindicationSN_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationSN_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICindicationType.c b/e2sim/src/ASN1c/RICindicationType.c deleted file mode 100644 index cb424f6..0000000 --- a/e2sim/src/ASN1c/RICindicationType.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICindicationType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_RICindicationType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICindicationType_value2enum_1[] = { - { 0, 6, "report" }, - { 1, 6, "insert" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICindicationType_enum2value_1[] = { - 1, /* insert(1) */ - 0 /* report(0) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_RICindicationType_specs_1 = { - asn_MAP_RICindicationType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICindicationType_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICindicationType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICindicationType = { - "RICindicationType", - "RICindicationType", - &asn_OP_NativeEnumerated, - asn_DEF_RICindicationType_tags_1, - sizeof(asn_DEF_RICindicationType_tags_1) - /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ - asn_DEF_RICindicationType_tags_1, /* Same as above */ - sizeof(asn_DEF_RICindicationType_tags_1) - /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICindicationType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICindicationType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICindicationType.h b/e2sim/src/ASN1c/RICindicationType.h deleted file mode 100644 index 911f405..0000000 --- a/e2sim/src/ASN1c/RICindicationType.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICindicationType_H_ -#define _RICindicationType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICindicationType { - RICindicationType_report = 0, - RICindicationType_insert = 1 - /* - * Enumeration is extensible - */ -} e_RICindicationType; - -/* RICindicationType */ -typedef long RICindicationType_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICindicationType; -asn_struct_free_f RICindicationType_free; -asn_struct_print_f RICindicationType_print; -asn_constr_check_f RICindicationType_constraint; -ber_type_decoder_f RICindicationType_decode_ber; -der_type_encoder_f RICindicationType_encode_der; -xer_type_decoder_f RICindicationType_decode_xer; -xer_type_encoder_f RICindicationType_encode_xer; -per_type_decoder_f RICindicationType_decode_uper; -per_type_encoder_f RICindicationType_encode_uper; -per_type_decoder_f RICindicationType_decode_aper; -per_type_encoder_f RICindicationType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICindicationType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICrequestID.c b/e2sim/src/ASN1c/RICrequestID.c deleted file mode 100644 index ec4178d..0000000 --- a/e2sim/src/ASN1c/RICrequestID.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICrequestID.h" - -static int -memb_ricRequestorID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_ricInstanceID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_ricRequestorID_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_ricInstanceID_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_RICrequestID_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestorID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, &asn_PER_memb_ricRequestorID_constr_2, memb_ricRequestorID_constraint_1 }, - 0, 0, /* No default value */ - "ricRequestorID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricInstanceID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, - 0, - { 0, &asn_PER_memb_ricInstanceID_constr_3, memb_ricInstanceID_constraint_1 }, - 0, 0, /* No default value */ - "ricInstanceID" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICrequestID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICrequestID_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestorID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricInstanceID */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1 = { - sizeof(struct RICrequestID), - offsetof(struct RICrequestID, _asn_ctx), - asn_MAP_RICrequestID_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICrequestID = { - "RICrequestID", - "RICrequestID", - &asn_OP_SEQUENCE, - asn_DEF_RICrequestID_tags_1, - sizeof(asn_DEF_RICrequestID_tags_1) - /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ - asn_DEF_RICrequestID_tags_1, /* Same as above */ - sizeof(asn_DEF_RICrequestID_tags_1) - /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICrequestID_1, - 2, /* Elements count */ - &asn_SPC_RICrequestID_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICrequestID.h b/e2sim/src/ASN1c/RICrequestID.h deleted file mode 100644 index 57032d7..0000000 --- a/e2sim/src/ASN1c/RICrequestID.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICrequestID_H_ -#define _RICrequestID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICrequestID */ -typedef struct RICrequestID { - long ricRequestorID; - long ricInstanceID; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICrequestID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICrequestID; -extern asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1; -extern asn_TYPE_member_t asn_MBR_RICrequestID_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICrequestID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICserviceQuery.c b/e2sim/src/ASN1c/RICserviceQuery.c deleted file mode 100644 index 3d5e6c4..0000000 --- a/e2sim/src/ASN1c/RICserviceQuery.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICserviceQuery.h" - -asn_TYPE_member_t asn_MBR_RICserviceQuery_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P26, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceQuery_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1 = { - sizeof(struct RICserviceQuery), - offsetof(struct RICserviceQuery, _asn_ctx), - asn_MAP_RICserviceQuery_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceQuery = { - "RICserviceQuery", - "RICserviceQuery", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceQuery_tags_1, - sizeof(asn_DEF_RICserviceQuery_tags_1) - /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ - asn_DEF_RICserviceQuery_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceQuery_tags_1) - /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceQuery_1, - 1, /* Elements count */ - &asn_SPC_RICserviceQuery_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICserviceQuery.h b/e2sim/src/ASN1c/RICserviceQuery.h deleted file mode 100644 index 3ccba64..0000000 --- a/e2sim/src/ASN1c/RICserviceQuery.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICserviceQuery_H_ -#define _RICserviceQuery_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceQuery */ -typedef struct RICserviceQuery { - ProtocolIE_Container_1917P26_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceQuery_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceQuery_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceQuery_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICserviceUpdate.c b/e2sim/src/ASN1c/RICserviceUpdate.c deleted file mode 100644 index e3e58cb..0000000 --- a/e2sim/src/ASN1c/RICserviceUpdate.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICserviceUpdate.h" - -asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P23, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1 = { - sizeof(struct RICserviceUpdate), - offsetof(struct RICserviceUpdate, _asn_ctx), - asn_MAP_RICserviceUpdate_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate = { - "RICserviceUpdate", - "RICserviceUpdate", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdate_tags_1, - sizeof(asn_DEF_RICserviceUpdate_tags_1) - /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ - asn_DEF_RICserviceUpdate_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdate_tags_1) - /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdate_1, - 1, /* Elements count */ - &asn_SPC_RICserviceUpdate_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICserviceUpdate.h b/e2sim/src/ASN1c/RICserviceUpdate.h deleted file mode 100644 index 685230b..0000000 --- a/e2sim/src/ASN1c/RICserviceUpdate.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICserviceUpdate_H_ -#define _RICserviceUpdate_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceUpdate */ -typedef struct RICserviceUpdate { - ProtocolIE_Container_1917P23_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdate_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceUpdate_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICserviceUpdateAcknowledge.c b/e2sim/src/ASN1c/RICserviceUpdateAcknowledge.c deleted file mode 100644 index 7f72da6..0000000 --- a/e2sim/src/ASN1c/RICserviceUpdateAcknowledge.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICserviceUpdateAcknowledge.h" - -asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P24, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1 = { - sizeof(struct RICserviceUpdateAcknowledge), - offsetof(struct RICserviceUpdateAcknowledge, _asn_ctx), - asn_MAP_RICserviceUpdateAcknowledge_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge = { - "RICserviceUpdateAcknowledge", - "RICserviceUpdateAcknowledge", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateAcknowledge_tags_1, - sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ - asn_DEF_RICserviceUpdateAcknowledge_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) - /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateAcknowledge_1, - 1, /* Elements count */ - &asn_SPC_RICserviceUpdateAcknowledge_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICserviceUpdateAcknowledge.h b/e2sim/src/ASN1c/RICserviceUpdateAcknowledge.h deleted file mode 100644 index 1403549..0000000 --- a/e2sim/src/ASN1c/RICserviceUpdateAcknowledge.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICserviceUpdateAcknowledge_H_ -#define _RICserviceUpdateAcknowledge_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceUpdateAcknowledge */ -typedef struct RICserviceUpdateAcknowledge { - ProtocolIE_Container_1917P24_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateAcknowledge_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceUpdateAcknowledge_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICserviceUpdateFailure.c b/e2sim/src/ASN1c/RICserviceUpdateFailure.c deleted file mode 100644 index 109fa30..0000000 --- a/e2sim/src/ASN1c/RICserviceUpdateFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICserviceUpdateFailure.h" - -asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P25, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1 = { - sizeof(struct RICserviceUpdateFailure), - offsetof(struct RICserviceUpdateFailure, _asn_ctx), - asn_MAP_RICserviceUpdateFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure = { - "RICserviceUpdateFailure", - "RICserviceUpdateFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICserviceUpdateFailure_tags_1, - sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) - /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ - asn_DEF_RICserviceUpdateFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) - /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICserviceUpdateFailure_1, - 1, /* Elements count */ - &asn_SPC_RICserviceUpdateFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICserviceUpdateFailure.h b/e2sim/src/ASN1c/RICserviceUpdateFailure.h deleted file mode 100644 index 457e91b..0000000 --- a/e2sim/src/ASN1c/RICserviceUpdateFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICserviceUpdateFailure_H_ -#define _RICserviceUpdateFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICserviceUpdateFailure */ -typedef struct RICserviceUpdateFailure { - ProtocolIE_Container_1917P25_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICserviceUpdateFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICserviceUpdateFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscription-List-withCause.c b/e2sim/src/ASN1c/RICsubscription-List-withCause.c deleted file mode 100644 index b811b88..0000000 --- a/e2sim/src/ASN1c/RICsubscription-List-withCause.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscription-List-withCause.h" - -#include "ProtocolIE-SingleContainer.h" -static asn_per_constraints_t asn_PER_type_RICsubscription_List_withCause_constr_1 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 32, -1, 1, 4294967295 } /* (SIZE(1..4294967295)) */, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_RICsubscription_List_withCause_1[] = { - { ATF_POINTER, 0, 0, - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ProtocolIE_SingleContainer_1920P3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscription_List_withCause_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SET_OF_specifics_t asn_SPC_RICsubscription_List_withCause_specs_1 = { - sizeof(struct RICsubscription_List_withCause), - offsetof(struct RICsubscription_List_withCause, _asn_ctx), - 0, /* XER encoding is XMLDelimitedItemList */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscription_List_withCause = { - "RICsubscription-List-withCause", - "RICsubscription-List-withCause", - &asn_OP_SEQUENCE_OF, - asn_DEF_RICsubscription_List_withCause_tags_1, - sizeof(asn_DEF_RICsubscription_List_withCause_tags_1) - /sizeof(asn_DEF_RICsubscription_List_withCause_tags_1[0]), /* 1 */ - asn_DEF_RICsubscription_List_withCause_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscription_List_withCause_tags_1) - /sizeof(asn_DEF_RICsubscription_List_withCause_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICsubscription_List_withCause_constr_1, SEQUENCE_OF_constraint }, - asn_MBR_RICsubscription_List_withCause_1, - 1, /* Single element */ - &asn_SPC_RICsubscription_List_withCause_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscription-List-withCause.h b/e2sim/src/ASN1c/RICsubscription-List-withCause.h deleted file mode 100644 index a5a49fe..0000000 --- a/e2sim/src/ASN1c/RICsubscription-List-withCause.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscription_List_withCause_H_ -#define _RICsubscription_List_withCause_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "asn_SEQUENCE_OF.h" -#include "constr_SEQUENCE_OF.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Forward declarations */ -struct ProtocolIE_SingleContainer; - -/* RICsubscription-List-withCause */ -typedef struct RICsubscription_List_withCause { - A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscription_List_withCause_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscription_List_withCause; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscription_List_withCause_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscription-withCause-Item.c b/e2sim/src/ASN1c/RICsubscription-withCause-Item.c deleted file mode 100644 index 70ad981..0000000 --- a/e2sim/src/ASN1c/RICsubscription-withCause-Item.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscription-withCause-Item.h" - -static asn_TYPE_member_t asn_MBR_RICsubscription_withCause_Item_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_Item, ricRequestID), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICrequestID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricRequestID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_Item, ranFunctionID), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RANfunctionID, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ranFunctionID" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscription_withCause_Item, cause), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_Cause, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "cause" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscription_withCause_Item_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscription_withCause_Item_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestID */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionID */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cause */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_withCause_Item_specs_1 = { - sizeof(struct RICsubscription_withCause_Item), - offsetof(struct RICsubscription_withCause_Item, _asn_ctx), - asn_MAP_RICsubscription_withCause_Item_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 3, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_Item = { - "RICsubscription-withCause-Item", - "RICsubscription-withCause-Item", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscription_withCause_Item_tags_1, - sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1) - /sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1[0]), /* 1 */ - asn_DEF_RICsubscription_withCause_Item_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1) - /sizeof(asn_DEF_RICsubscription_withCause_Item_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscription_withCause_Item_1, - 3, /* Elements count */ - &asn_SPC_RICsubscription_withCause_Item_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscription-withCause-Item.h b/e2sim/src/ASN1c/RICsubscription-withCause-Item.h deleted file mode 100644 index dd07834..0000000 --- a/e2sim/src/ASN1c/RICsubscription-withCause-Item.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscription_withCause_Item_H_ -#define _RICsubscription_withCause_Item_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICrequestID.h" -#include "RANfunctionID.h" -#include "Cause.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscription-withCause-Item */ -typedef struct RICsubscription_withCause_Item { - RICrequestID_t ricRequestID; - RANfunctionID_t ranFunctionID; - Cause_t cause; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscription_withCause_Item_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscription_withCause_Item; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscription_withCause_Item_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscriptionDeleteFailure.c b/e2sim/src/ASN1c/RICsubscriptionDeleteFailure.c deleted file mode 100644 index 2c5d10a..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDeleteFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscriptionDeleteFailure.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P5, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1 = { - sizeof(struct RICsubscriptionDeleteFailure), - offsetof(struct RICsubscriptionDeleteFailure, _asn_ctx), - asn_MAP_RICsubscriptionDeleteFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure = { - "RICsubscriptionDeleteFailure", - "RICsubscriptionDeleteFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteFailure_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteFailure_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscriptionDeleteFailure.h b/e2sim/src/ASN1c/RICsubscriptionDeleteFailure.h deleted file mode 100644 index ad346e9..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDeleteFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscriptionDeleteFailure_H_ -#define _RICsubscriptionDeleteFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteFailure */ -typedef struct RICsubscriptionDeleteFailure { - ProtocolIE_Container_1917P5_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscriptionDeleteRequest.c b/e2sim/src/ASN1c/RICsubscriptionDeleteRequest.c deleted file mode 100644 index 1197a03..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDeleteRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscriptionDeleteRequest.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P3, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1 = { - sizeof(struct RICsubscriptionDeleteRequest), - offsetof(struct RICsubscriptionDeleteRequest, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest = { - "RICsubscriptionDeleteRequest", - "RICsubscriptionDeleteRequest", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequest_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequest_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscriptionDeleteRequest.h b/e2sim/src/ASN1c/RICsubscriptionDeleteRequest.h deleted file mode 100644 index ca20aa0..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDeleteRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscriptionDeleteRequest_H_ -#define _RICsubscriptionDeleteRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteRequest */ -typedef struct RICsubscriptionDeleteRequest { - ProtocolIE_Container_1917P3_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscriptionDeleteRequired.c b/e2sim/src/ASN1c/RICsubscriptionDeleteRequired.c deleted file mode 100644 index 0ff50e2..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDeleteRequired.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscriptionDeleteRequired.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequired, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P6, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequired_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequired_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_specs_1 = { - sizeof(struct RICsubscriptionDeleteRequired), - offsetof(struct RICsubscriptionDeleteRequired, _asn_ctx), - asn_MAP_RICsubscriptionDeleteRequired_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired = { - "RICsubscriptionDeleteRequired", - "RICsubscriptionDeleteRequired", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteRequired_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteRequired_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteRequired_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteRequired_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteRequired_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscriptionDeleteRequired.h b/e2sim/src/ASN1c/RICsubscriptionDeleteRequired.h deleted file mode 100644 index 9c2acac..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDeleteRequired.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscriptionDeleteRequired_H_ -#define _RICsubscriptionDeleteRequired_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteRequired */ -typedef struct RICsubscriptionDeleteRequired { - ProtocolIE_Container_1917P6_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteRequired_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequired; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequired_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequired_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteRequired_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscriptionDeleteResponse.c b/e2sim/src/ASN1c/RICsubscriptionDeleteResponse.c deleted file mode 100644 index 52810b9..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDeleteResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscriptionDeleteResponse.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P4, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1 = { - sizeof(struct RICsubscriptionDeleteResponse), - offsetof(struct RICsubscriptionDeleteResponse, _asn_ctx), - asn_MAP_RICsubscriptionDeleteResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse = { - "RICsubscriptionDeleteResponse", - "RICsubscriptionDeleteResponse", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDeleteResponse_tags_1, - sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDeleteResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDeleteResponse_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionDeleteResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscriptionDeleteResponse.h b/e2sim/src/ASN1c/RICsubscriptionDeleteResponse.h deleted file mode 100644 index 912c37e..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDeleteResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscriptionDeleteResponse_H_ -#define _RICsubscriptionDeleteResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDeleteResponse */ -typedef struct RICsubscriptionDeleteResponse { - ProtocolIE_Container_1917P4_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDeleteResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDeleteResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscriptionDetails.c b/e2sim/src/ASN1c/RICsubscriptionDetails.c deleted file mode 100644 index 9b2f4c9..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDetails.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscriptionDetails.h" - -static asn_TYPE_member_t asn_MBR_RICsubscriptionDetails_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricEventTriggerDefinition), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICeventTriggerDefinition, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricEventTriggerDefinition" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricAction_ToBeSetup_List), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICactions_ToBeSetup_List, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricAction-ToBeSetup-List" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionDetails_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDetails_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricEventTriggerDefinition */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricAction-ToBeSetup-List */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDetails_specs_1 = { - sizeof(struct RICsubscriptionDetails), - offsetof(struct RICsubscriptionDetails, _asn_ctx), - asn_MAP_RICsubscriptionDetails_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails = { - "RICsubscriptionDetails", - "RICsubscriptionDetails", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionDetails_tags_1, - sizeof(asn_DEF_RICsubscriptionDetails_tags_1) - /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionDetails_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionDetails_tags_1) - /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionDetails_1, - 2, /* Elements count */ - &asn_SPC_RICsubscriptionDetails_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscriptionDetails.h b/e2sim/src/ASN1c/RICsubscriptionDetails.h deleted file mode 100644 index d1aad64..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionDetails.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscriptionDetails_H_ -#define _RICsubscriptionDetails_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICeventTriggerDefinition.h" -#include "RICactions-ToBeSetup-List.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionDetails */ -typedef struct RICsubscriptionDetails { - RICeventTriggerDefinition_t ricEventTriggerDefinition; - RICactions_ToBeSetup_List_t ricAction_ToBeSetup_List; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionDetails_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionDetails_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscriptionFailure.c b/e2sim/src/ASN1c/RICsubscriptionFailure.c deleted file mode 100644 index 29069a3..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionFailure.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscriptionFailure.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P2, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1 = { - sizeof(struct RICsubscriptionFailure), - offsetof(struct RICsubscriptionFailure, _asn_ctx), - asn_MAP_RICsubscriptionFailure_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure = { - "RICsubscriptionFailure", - "RICsubscriptionFailure", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionFailure_tags_1, - sizeof(asn_DEF_RICsubscriptionFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionFailure_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionFailure_tags_1) - /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionFailure_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionFailure_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscriptionFailure.h b/e2sim/src/ASN1c/RICsubscriptionFailure.h deleted file mode 100644 index 4a7e356..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionFailure.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscriptionFailure_H_ -#define _RICsubscriptionFailure_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionFailure */ -typedef struct RICsubscriptionFailure { - ProtocolIE_Container_1917P2_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionFailure_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionFailure_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscriptionRequest.c b/e2sim/src/ASN1c/RICsubscriptionRequest.c deleted file mode 100644 index dc71412..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscriptionRequest.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P0, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1 = { - sizeof(struct RICsubscriptionRequest), - offsetof(struct RICsubscriptionRequest, _asn_ctx), - asn_MAP_RICsubscriptionRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest = { - "RICsubscriptionRequest", - "RICsubscriptionRequest", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionRequest_tags_1, - sizeof(asn_DEF_RICsubscriptionRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionRequest_tags_1) - /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionRequest_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscriptionRequest.h b/e2sim/src/ASN1c/RICsubscriptionRequest.h deleted file mode 100644 index 8cded13..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscriptionRequest_H_ -#define _RICsubscriptionRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionRequest */ -typedef struct RICsubscriptionRequest { - ProtocolIE_Container_1917P0_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubscriptionResponse.c b/e2sim/src/ASN1c/RICsubscriptionResponse.c deleted file mode 100644 index 6274c4e..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubscriptionResponse.h" - -asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P1, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1 = { - sizeof(struct RICsubscriptionResponse), - offsetof(struct RICsubscriptionResponse, _asn_ctx), - asn_MAP_RICsubscriptionResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse = { - "RICsubscriptionResponse", - "RICsubscriptionResponse", - &asn_OP_SEQUENCE, - asn_DEF_RICsubscriptionResponse_tags_1, - sizeof(asn_DEF_RICsubscriptionResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ - asn_DEF_RICsubscriptionResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubscriptionResponse_tags_1) - /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubscriptionResponse_1, - 1, /* Elements count */ - &asn_SPC_RICsubscriptionResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubscriptionResponse.h b/e2sim/src/ASN1c/RICsubscriptionResponse.h deleted file mode 100644 index ad549bc..0000000 --- a/e2sim/src/ASN1c/RICsubscriptionResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubscriptionResponse_H_ -#define _RICsubscriptionResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubscriptionResponse */ -typedef struct RICsubscriptionResponse { - ProtocolIE_Container_1917P1_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubscriptionResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubscriptionResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubsequentAction.c b/e2sim/src/ASN1c/RICsubsequentAction.c deleted file mode 100644 index bd5abb8..0000000 --- a/e2sim/src/ASN1c/RICsubsequentAction.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubsequentAction.h" - -asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricSubsequentActionType), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICsubsequentActionType, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricSubsequentActionType" - }, - { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricTimeToWait), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_RICtimeToWait, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ricTimeToWait" - }, -}; -static const ber_tlv_tag_t asn_DEF_RICsubsequentAction_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_RICsubsequentAction_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricSubsequentActionType */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricTimeToWait */ -}; -asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1 = { - sizeof(struct RICsubsequentAction), - offsetof(struct RICsubsequentAction, _asn_ctx), - asn_MAP_RICsubsequentAction_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction = { - "RICsubsequentAction", - "RICsubsequentAction", - &asn_OP_SEQUENCE, - asn_DEF_RICsubsequentAction_tags_1, - sizeof(asn_DEF_RICsubsequentAction_tags_1) - /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ - asn_DEF_RICsubsequentAction_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubsequentAction_tags_1) - /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_RICsubsequentAction_1, - 2, /* Elements count */ - &asn_SPC_RICsubsequentAction_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubsequentAction.h b/e2sim/src/ASN1c/RICsubsequentAction.h deleted file mode 100644 index 250a32f..0000000 --- a/e2sim/src/ASN1c/RICsubsequentAction.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubsequentAction_H_ -#define _RICsubsequentAction_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "RICsubsequentActionType.h" -#include "RICtimeToWait.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* RICsubsequentAction */ -typedef struct RICsubsequentAction { - RICsubsequentActionType_t ricSubsequentActionType; - RICtimeToWait_t ricTimeToWait; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} RICsubsequentAction_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction; -extern asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1; -extern asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubsequentAction_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICsubsequentActionType.c b/e2sim/src/ASN1c/RICsubsequentActionType.c deleted file mode 100644 index c9842af..0000000 --- a/e2sim/src/ASN1c/RICsubsequentActionType.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICsubsequentActionType.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICsubsequentActionType_value2enum_1[] = { - { 0, 8, "continue" }, - { 1, 4, "wait" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICsubsequentActionType_enum2value_1[] = { - 0, /* continue(0) */ - 1 /* wait(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1 = { - asn_MAP_RICsubsequentActionType_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICsubsequentActionType_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICsubsequentActionType_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType = { - "RICsubsequentActionType", - "RICsubsequentActionType", - &asn_OP_NativeEnumerated, - asn_DEF_RICsubsequentActionType_tags_1, - sizeof(asn_DEF_RICsubsequentActionType_tags_1) - /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ - asn_DEF_RICsubsequentActionType_tags_1, /* Same as above */ - sizeof(asn_DEF_RICsubsequentActionType_tags_1) - /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICsubsequentActionType_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICsubsequentActionType_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICsubsequentActionType.h b/e2sim/src/ASN1c/RICsubsequentActionType.h deleted file mode 100644 index 52adf9d..0000000 --- a/e2sim/src/ASN1c/RICsubsequentActionType.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICsubsequentActionType_H_ -#define _RICsubsequentActionType_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICsubsequentActionType { - RICsubsequentActionType_continue = 0, - RICsubsequentActionType_wait = 1 - /* - * Enumeration is extensible - */ -} e_RICsubsequentActionType; - -/* RICsubsequentActionType */ -typedef long RICsubsequentActionType_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType; -extern const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1; -asn_struct_free_f RICsubsequentActionType_free; -asn_struct_print_f RICsubsequentActionType_print; -asn_constr_check_f RICsubsequentActionType_constraint; -ber_type_decoder_f RICsubsequentActionType_decode_ber; -der_type_encoder_f RICsubsequentActionType_encode_der; -xer_type_decoder_f RICsubsequentActionType_decode_xer; -xer_type_encoder_f RICsubsequentActionType_encode_xer; -per_type_decoder_f RICsubsequentActionType_decode_uper; -per_type_encoder_f RICsubsequentActionType_encode_uper; -per_type_decoder_f RICsubsequentActionType_decode_aper; -per_type_encoder_f RICsubsequentActionType_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICsubsequentActionType_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/RICtimeToWait.c b/e2sim/src/ASN1c/RICtimeToWait.c deleted file mode 100644 index 265d710..0000000 --- a/e2sim/src/ASN1c/RICtimeToWait.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "RICtimeToWait.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 16 } /* (0..16,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_RICtimeToWait_value2enum_1[] = { - { 0, 4, "w1ms" }, - { 1, 4, "w2ms" }, - { 2, 4, "w5ms" }, - { 3, 5, "w10ms" }, - { 4, 5, "w20ms" }, - { 5, 5, "w30ms" }, - { 6, 5, "w40ms" }, - { 7, 5, "w50ms" }, - { 8, 6, "w100ms" }, - { 9, 6, "w200ms" }, - { 10, 6, "w500ms" }, - { 11, 3, "w1s" }, - { 12, 3, "w2s" }, - { 13, 3, "w5s" }, - { 14, 4, "w10s" }, - { 15, 4, "w20s" }, - { 16, 4, "w60s" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_RICtimeToWait_enum2value_1[] = { - 8, /* w100ms(8) */ - 3, /* w10ms(3) */ - 14, /* w10s(14) */ - 0, /* w1ms(0) */ - 11, /* w1s(11) */ - 9, /* w200ms(9) */ - 4, /* w20ms(4) */ - 15, /* w20s(15) */ - 1, /* w2ms(1) */ - 12, /* w2s(12) */ - 5, /* w30ms(5) */ - 6, /* w40ms(6) */ - 10, /* w500ms(10) */ - 7, /* w50ms(7) */ - 2, /* w5ms(2) */ - 13, /* w5s(13) */ - 16 /* w60s(16) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1 = { - asn_MAP_RICtimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_RICtimeToWait_enum2value_1, /* N => "tag"; sorted by N */ - 17, /* Number of elements in the maps */ - 18, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_RICtimeToWait_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_RICtimeToWait = { - "RICtimeToWait", - "RICtimeToWait", - &asn_OP_NativeEnumerated, - asn_DEF_RICtimeToWait_tags_1, - sizeof(asn_DEF_RICtimeToWait_tags_1) - /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ - asn_DEF_RICtimeToWait_tags_1, /* Same as above */ - sizeof(asn_DEF_RICtimeToWait_tags_1) - /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_RICtimeToWait_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_RICtimeToWait_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/RICtimeToWait.h b/e2sim/src/ASN1c/RICtimeToWait.h deleted file mode 100644 index 12bf29f..0000000 --- a/e2sim/src/ASN1c/RICtimeToWait.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _RICtimeToWait_H_ -#define _RICtimeToWait_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum RICtimeToWait { - RICtimeToWait_w1ms = 0, - RICtimeToWait_w2ms = 1, - RICtimeToWait_w5ms = 2, - RICtimeToWait_w10ms = 3, - RICtimeToWait_w20ms = 4, - RICtimeToWait_w30ms = 5, - RICtimeToWait_w40ms = 6, - RICtimeToWait_w50ms = 7, - RICtimeToWait_w100ms = 8, - RICtimeToWait_w200ms = 9, - RICtimeToWait_w500ms = 10, - RICtimeToWait_w1s = 11, - RICtimeToWait_w2s = 12, - RICtimeToWait_w5s = 13, - RICtimeToWait_w10s = 14, - RICtimeToWait_w20s = 15, - RICtimeToWait_w60s = 16 - /* - * Enumeration is extensible - */ -} e_RICtimeToWait; - -/* RICtimeToWait */ -typedef long RICtimeToWait_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_RICtimeToWait; -extern const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1; -asn_struct_free_f RICtimeToWait_free; -asn_struct_print_f RICtimeToWait_print; -asn_constr_check_f RICtimeToWait_constraint; -ber_type_decoder_f RICtimeToWait_decode_ber; -der_type_encoder_f RICtimeToWait_encode_der; -xer_type_decoder_f RICtimeToWait_decode_xer; -xer_type_encoder_f RICtimeToWait_encode_xer; -per_type_decoder_f RICtimeToWait_decode_uper; -per_type_encoder_f RICtimeToWait_encode_uper; -per_type_decoder_f RICtimeToWait_decode_aper; -per_type_encoder_f RICtimeToWait_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _RICtimeToWait_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ResetRequest.c b/e2sim/src/ASN1c/ResetRequest.c deleted file mode 100644 index 78e7d4c..0000000 --- a/e2sim/src/ASN1c/ResetRequest.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ResetRequest.h" - -asn_TYPE_member_t asn_MBR_ResetRequest_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetRequest, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P21, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetRequest_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1 = { - sizeof(struct ResetRequest), - offsetof(struct ResetRequest, _asn_ctx), - asn_MAP_ResetRequest_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetRequest = { - "ResetRequest", - "ResetRequest", - &asn_OP_SEQUENCE, - asn_DEF_ResetRequest_tags_1, - sizeof(asn_DEF_ResetRequest_tags_1) - /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ - asn_DEF_ResetRequest_tags_1, /* Same as above */ - sizeof(asn_DEF_ResetRequest_tags_1) - /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetRequest_1, - 1, /* Elements count */ - &asn_SPC_ResetRequest_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/ResetRequest.h b/e2sim/src/ASN1c/ResetRequest.h deleted file mode 100644 index a9a145e..0000000 --- a/e2sim/src/ASN1c/ResetRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ResetRequest_H_ -#define _ResetRequest_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ResetRequest */ -typedef struct ResetRequest { - ProtocolIE_Container_1917P21_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetRequest_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ResetRequest; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_ResetRequest_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ResetRequest_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/ResetResponse.c b/e2sim/src/ASN1c/ResetResponse.c deleted file mode 100644 index 898bc27..0000000 --- a/e2sim/src/ASN1c/ResetResponse.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "ResetResponse.h" - -asn_TYPE_member_t asn_MBR_ResetResponse_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ResetResponse, protocolIEs), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProtocolIE_Container_1917P22, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "protocolIEs" - }, -}; -static const ber_tlv_tag_t asn_DEF_ResetResponse_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ -}; -asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1 = { - sizeof(struct ResetResponse), - offsetof(struct ResetResponse, _asn_ctx), - asn_MAP_ResetResponse_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_ResetResponse = { - "ResetResponse", - "ResetResponse", - &asn_OP_SEQUENCE, - asn_DEF_ResetResponse_tags_1, - sizeof(asn_DEF_ResetResponse_tags_1) - /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ - asn_DEF_ResetResponse_tags_1, /* Same as above */ - sizeof(asn_DEF_ResetResponse_tags_1) - /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_ResetResponse_1, - 1, /* Elements count */ - &asn_SPC_ResetResponse_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/ResetResponse.h b/e2sim/src/ASN1c/ResetResponse.h deleted file mode 100644 index 10a78cb..0000000 --- a/e2sim/src/ASN1c/ResetResponse.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Contents" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _ResetResponse_H_ -#define _ResetResponse_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProtocolIE-Container.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* ResetResponse */ -typedef struct ResetResponse { - ProtocolIE_Container_1917P22_t protocolIEs; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} ResetResponse_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_ResetResponse; -extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1; -extern asn_TYPE_member_t asn_MBR_ResetResponse_1[1]; - -#ifdef __cplusplus -} -#endif - -#endif /* _ResetResponse_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/SuccessfulOutcome.c b/e2sim/src/ASN1c/SuccessfulOutcome.c deleted file mode 100644 index f9001b5..0000000 --- a/e2sim/src/ASN1c/SuccessfulOutcome.c +++ /dev/null @@ -1,400 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "SuccessfulOutcome.h" - -static const long asn_VAL_1_id_RICsubscription = 8; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_2_id_RICsubscriptionDelete = 9; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_3_id_RICserviceUpdate = 7; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_4_id_RICcontrol = 4; -static const long asn_VAL_4_reject = 0; -static const long asn_VAL_5_id_E2setup = 1; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_6_id_E2nodeConfigurationUpdate = 10; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_7_id_E2connectionUpdate = 11; -static const long asn_VAL_7_reject = 0; -static const long asn_VAL_8_id_Reset = 3; -static const long asn_VAL_8_reject = 0; -static const long asn_VAL_9_id_RICindication = 5; -static const long asn_VAL_9_ignore = 1; -static const long asn_VAL_10_id_RICserviceQuery = 6; -static const long asn_VAL_10_ignore = 1; -static const long asn_VAL_11_id_ErrorIndication = 2; -static const long asn_VAL_11_ignore = 1; -static const long asn_VAL_12_id_RICsubscriptionDeleteRequired = 12; -static const long asn_VAL_12_ignore = 1; -static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2nodeConfigurationUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_E2nodeConfigurationUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2connectionUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_E2connectionUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_Reset }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_RICindication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_RICserviceQuery }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ErrorIndication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequired }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_RICsubscriptionDeleteRequired }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore } -}; -static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { - { 12, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } -}; -static int -memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_SuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 4; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_SuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 1; /* &SuccessfulOutcome */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionResponse" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionDeleteResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteResponse" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICserviceUpdateAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceUpdateAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICcontrolAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2setupResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2setupResponse" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2nodeConfigurationUpdateAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdateAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeConfigurationUpdateAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2connectionUpdateAcknowledge), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateAcknowledge, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdateAcknowledge" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResetResponse), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_ResetResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "ResetResponse" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 7 }, /* RICsubscriptionResponse */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 6 }, /* RICsubscriptionDeleteResponse */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 5 }, /* RICserviceUpdateAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 4 }, /* RICcontrolAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 3 }, /* E2setupResponse */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 2 }, /* E2nodeConfigurationUpdateAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 1 }, /* E2connectionUpdateAcknowledge */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 0 } /* ResetResponse */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct SuccessfulOutcome__value), - offsetof(struct SuccessfulOutcome__value, _asn_ctx), - offsetof(struct SuccessfulOutcome__value, present), - sizeof(((struct SuccessfulOutcome__value *)0)->present), - asn_MAP_value_tag2el_4, - 8, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 8, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_SuccessfulOutcome_criticality_type, - { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_SuccessfulOutcome_value_type, - { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = { - sizeof(struct SuccessfulOutcome), - offsetof(struct SuccessfulOutcome, _asn_ctx), - asn_MAP_SuccessfulOutcome_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = { - "SuccessfulOutcome", - "SuccessfulOutcome", - &asn_OP_SEQUENCE, - asn_DEF_SuccessfulOutcome_tags_1, - sizeof(asn_DEF_SuccessfulOutcome_tags_1) - /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ - asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */ - sizeof(asn_DEF_SuccessfulOutcome_tags_1) - /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_SuccessfulOutcome_1, - 3, /* Elements count */ - &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/SuccessfulOutcome.h b/e2sim/src/ASN1c/SuccessfulOutcome.h deleted file mode 100644 index 972e53a..0000000 --- a/e2sim/src/ASN1c/SuccessfulOutcome.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _SuccessfulOutcome_H_ -#define _SuccessfulOutcome_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICsubscriptionRequest.h" -#include "RICsubscriptionResponse.h" -#include "RICsubscriptionFailure.h" -#include "RICsubscriptionDeleteRequest.h" -#include "RICsubscriptionDeleteResponse.h" -#include "RICsubscriptionDeleteFailure.h" -#include "RICserviceUpdate.h" -#include "RICserviceUpdateAcknowledge.h" -#include "RICserviceUpdateFailure.h" -#include "RICcontrolRequest.h" -#include "RICcontrolAcknowledge.h" -#include "RICcontrolFailure.h" -#include "E2setupRequest.h" -#include "E2setupResponse.h" -#include "E2setupFailure.h" -#include "E2nodeConfigurationUpdate.h" -#include "E2nodeConfigurationUpdateAcknowledge.h" -#include "E2nodeConfigurationUpdateFailure.h" -#include "E2connectionUpdate.h" -#include "E2connectionUpdateAcknowledge.h" -#include "E2connectionUpdateFailure.h" -#include "ResetRequest.h" -#include "ResetResponse.h" -#include "RICindication.h" -#include "RICserviceQuery.h" -#include "ErrorIndication.h" -#include "RICsubscriptionDeleteRequired.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum SuccessfulOutcome__value_PR { - SuccessfulOutcome__value_PR_NOTHING, /* No components present */ - SuccessfulOutcome__value_PR_RICsubscriptionResponse, - SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse, - SuccessfulOutcome__value_PR_RICserviceUpdateAcknowledge, - SuccessfulOutcome__value_PR_RICcontrolAcknowledge, - SuccessfulOutcome__value_PR_E2setupResponse, - SuccessfulOutcome__value_PR_E2nodeConfigurationUpdateAcknowledge, - SuccessfulOutcome__value_PR_E2connectionUpdateAcknowledge, - SuccessfulOutcome__value_PR_ResetResponse -} SuccessfulOutcome__value_PR; - -/* SuccessfulOutcome */ -typedef struct SuccessfulOutcome { - ProcedureCode_t procedureCode; - Criticality_t criticality; - struct SuccessfulOutcome__value { - SuccessfulOutcome__value_PR present; - union SuccessfulOutcome__value_u { - RICsubscriptionResponse_t RICsubscriptionResponse; - RICsubscriptionDeleteResponse_t RICsubscriptionDeleteResponse; - RICserviceUpdateAcknowledge_t RICserviceUpdateAcknowledge; - RICcontrolAcknowledge_t RICcontrolAcknowledge; - E2setupResponse_t E2setupResponse; - E2nodeConfigurationUpdateAcknowledge_t E2nodeConfigurationUpdateAcknowledge; - E2connectionUpdateAcknowledge_t E2connectionUpdateAcknowledge; - ResetResponse_t ResetResponse; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} SuccessfulOutcome_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome; -extern asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1; -extern asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _SuccessfulOutcome_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/TNLinformation.c b/e2sim/src/ASN1c/TNLinformation.c deleted file mode 100644 index bead0bd..0000000 --- a/e2sim/src/ASN1c/TNLinformation.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "TNLinformation.h" - -static int -memb_tnlAddress_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size >= 1 && size <= 160)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_tnlPort_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - size_t size; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if(st->size > 0) { - /* Size in bits */ - size = 8 * st->size - (st->bits_unused & 0x07); - } else { - size = 0; - } - - if((size == 16)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_per_constraints_t asn_PER_memb_tnlAddress_constr_2 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 160 } /* (SIZE(1..160,...)) */, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_tnlPort_constr_3 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, - 0, 0 /* No PER value map */ -}; -asn_TYPE_member_t asn_MBR_TNLinformation_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct TNLinformation, tnlAddress), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_tnlAddress_constr_2, memb_tnlAddress_constraint_1 }, - 0, 0, /* No default value */ - "tnlAddress" - }, - { ATF_POINTER, 1, offsetof(struct TNLinformation, tnlPort), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_BIT_STRING, - 0, - { 0, &asn_PER_memb_tnlPort_constr_3, memb_tnlPort_constraint_1 }, - 0, 0, /* No default value */ - "tnlPort" - }, -}; -static const int asn_MAP_TNLinformation_oms_1[] = { 1 }; -static const ber_tlv_tag_t asn_DEF_TNLinformation_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_TNLinformation_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tnlAddress */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tnlPort */ -}; -asn_SEQUENCE_specifics_t asn_SPC_TNLinformation_specs_1 = { - sizeof(struct TNLinformation), - offsetof(struct TNLinformation, _asn_ctx), - asn_MAP_TNLinformation_tag2el_1, - 2, /* Count of tags in the map */ - asn_MAP_TNLinformation_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 2, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_TNLinformation = { - "TNLinformation", - "TNLinformation", - &asn_OP_SEQUENCE, - asn_DEF_TNLinformation_tags_1, - sizeof(asn_DEF_TNLinformation_tags_1) - /sizeof(asn_DEF_TNLinformation_tags_1[0]), /* 1 */ - asn_DEF_TNLinformation_tags_1, /* Same as above */ - sizeof(asn_DEF_TNLinformation_tags_1) - /sizeof(asn_DEF_TNLinformation_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_TNLinformation_1, - 2, /* Elements count */ - &asn_SPC_TNLinformation_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/TNLinformation.h b/e2sim/src/ASN1c/TNLinformation.h deleted file mode 100644 index 492177b..0000000 --- a/e2sim/src/ASN1c/TNLinformation.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _TNLinformation_H_ -#define _TNLinformation_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "BIT_STRING.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* TNLinformation */ -typedef struct TNLinformation { - BIT_STRING_t tnlAddress; - BIT_STRING_t *tnlPort; /* OPTIONAL */ - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} TNLinformation_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_TNLinformation; -extern asn_SEQUENCE_specifics_t asn_SPC_TNLinformation_specs_1; -extern asn_TYPE_member_t asn_MBR_TNLinformation_1[2]; - -#ifdef __cplusplus -} -#endif - -#endif /* _TNLinformation_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/TNLusage.c b/e2sim/src/ASN1c/TNLusage.c deleted file mode 100644 index 005ec78..0000000 --- a/e2sim/src/ASN1c/TNLusage.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "TNLusage.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_TNLusage_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TNLusage_value2enum_1[] = { - { 0, 11, "ric-service" }, - { 1, 16, "support-function" }, - { 2, 4, "both" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_TNLusage_enum2value_1[] = { - 2, /* both(2) */ - 0, /* ric-service(0) */ - 1 /* support-function(1) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_TNLusage_specs_1 = { - asn_MAP_TNLusage_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TNLusage_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 4, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TNLusage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TNLusage = { - "TNLusage", - "TNLusage", - &asn_OP_NativeEnumerated, - asn_DEF_TNLusage_tags_1, - sizeof(asn_DEF_TNLusage_tags_1) - /sizeof(asn_DEF_TNLusage_tags_1[0]), /* 1 */ - asn_DEF_TNLusage_tags_1, /* Same as above */ - sizeof(asn_DEF_TNLusage_tags_1) - /sizeof(asn_DEF_TNLusage_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_TNLusage_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TNLusage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/TNLusage.h b/e2sim/src/ASN1c/TNLusage.h deleted file mode 100644 index a0b9aeb..0000000 --- a/e2sim/src/ASN1c/TNLusage.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _TNLusage_H_ -#define _TNLusage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TNLusage { - TNLusage_ric_service = 0, - TNLusage_support_function = 1, - TNLusage_both = 2 - /* - * Enumeration is extensible - */ -} e_TNLusage; - -/* TNLusage */ -typedef long TNLusage_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_TNLusage_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_TNLusage; -extern const asn_INTEGER_specifics_t asn_SPC_TNLusage_specs_1; -asn_struct_free_f TNLusage_free; -asn_struct_print_f TNLusage_print; -asn_constr_check_f TNLusage_constraint; -ber_type_decoder_f TNLusage_decode_ber; -der_type_encoder_f TNLusage_encode_der; -xer_type_decoder_f TNLusage_decode_xer; -xer_type_encoder_f TNLusage_encode_xer; -per_type_decoder_f TNLusage_decode_uper; -per_type_encoder_f TNLusage_encode_uper; -per_type_decoder_f TNLusage_decode_aper; -per_type_encoder_f TNLusage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TNLusage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/TimeToWait.c b/e2sim/src/ASN1c/TimeToWait.c deleted file mode 100644 index 21e2e2c..0000000 --- a/e2sim/src/ASN1c/TimeToWait.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "TimeToWait.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_TimeToWait_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TimeToWait_value2enum_1[] = { - { 0, 3, "v1s" }, - { 1, 3, "v2s" }, - { 2, 3, "v5s" }, - { 3, 4, "v10s" }, - { 4, 4, "v20s" }, - { 5, 4, "v60s" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_TimeToWait_enum2value_1[] = { - 3, /* v10s(3) */ - 0, /* v1s(0) */ - 4, /* v20s(4) */ - 1, /* v2s(1) */ - 2, /* v5s(2) */ - 5 /* v60s(5) */ - /* This list is extensible */ -}; -static const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1 = { - asn_MAP_TimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TimeToWait_enum2value_1, /* N => "tag"; sorted by N */ - 6, /* Number of elements in the maps */ - 7, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TimeToWait_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TimeToWait = { - "TimeToWait", - "TimeToWait", - &asn_OP_NativeEnumerated, - asn_DEF_TimeToWait_tags_1, - sizeof(asn_DEF_TimeToWait_tags_1) - /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ - asn_DEF_TimeToWait_tags_1, /* Same as above */ - sizeof(asn_DEF_TimeToWait_tags_1) - /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_TimeToWait_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TimeToWait_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/TimeToWait.h b/e2sim/src/ASN1c/TimeToWait.h deleted file mode 100644 index 9cc05a3..0000000 --- a/e2sim/src/ASN1c/TimeToWait.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _TimeToWait_H_ -#define _TimeToWait_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TimeToWait { - TimeToWait_v1s = 0, - TimeToWait_v2s = 1, - TimeToWait_v5s = 2, - TimeToWait_v10s = 3, - TimeToWait_v20s = 4, - TimeToWait_v60s = 5 - /* - * Enumeration is extensible - */ -} e_TimeToWait; - -/* TimeToWait */ -typedef long TimeToWait_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_TimeToWait; -asn_struct_free_f TimeToWait_free; -asn_struct_print_f TimeToWait_print; -asn_constr_check_f TimeToWait_constraint; -ber_type_decoder_f TimeToWait_decode_ber; -der_type_encoder_f TimeToWait_encode_der; -xer_type_decoder_f TimeToWait_decode_xer; -xer_type_encoder_f TimeToWait_encode_xer; -per_type_decoder_f TimeToWait_decode_uper; -per_type_encoder_f TimeToWait_encode_uper; -per_type_decoder_f TimeToWait_decode_aper; -per_type_encoder_f TimeToWait_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TimeToWait_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/TransactionID.c b/e2sim/src/ASN1c/TransactionID.c deleted file mode 100644 index 3cb38cd..0000000 --- a/e2sim/src/ASN1c/TransactionID.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "TransactionID.h" - -int -TransactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static asn_per_constraints_t asn_PER_type_TransactionID_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 0, 255 } /* (0..255,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const ber_tlv_tag_t asn_DEF_TransactionID_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TransactionID = { - "TransactionID", - "TransactionID", - &asn_OP_NativeInteger, - asn_DEF_TransactionID_tags_1, - sizeof(asn_DEF_TransactionID_tags_1) - /sizeof(asn_DEF_TransactionID_tags_1[0]), /* 1 */ - asn_DEF_TransactionID_tags_1, /* Same as above */ - sizeof(asn_DEF_TransactionID_tags_1) - /sizeof(asn_DEF_TransactionID_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_TransactionID_constr_1, TransactionID_constraint }, - 0, 0, /* No members */ - 0 /* No specifics */ -}; - diff --git a/e2sim/src/ASN1c/TransactionID.h b/e2sim/src/ASN1c/TransactionID.h deleted file mode 100644 index 92dbf69..0000000 --- a/e2sim/src/ASN1c/TransactionID.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _TransactionID_H_ -#define _TransactionID_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeInteger.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* TransactionID */ -typedef long TransactionID_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_TransactionID; -asn_struct_free_f TransactionID_free; -asn_struct_print_f TransactionID_print; -asn_constr_check_f TransactionID_constraint; -ber_type_decoder_f TransactionID_decode_ber; -der_type_encoder_f TransactionID_encode_der; -xer_type_decoder_f TransactionID_decode_xer; -xer_type_encoder_f TransactionID_encode_xer; -per_type_decoder_f TransactionID_decode_uper; -per_type_encoder_f TransactionID_encode_uper; -per_type_decoder_f TransactionID_decode_aper; -per_type_encoder_f TransactionID_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TransactionID_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/TriggeringMessage.c b/e2sim/src/ASN1c/TriggeringMessage.c deleted file mode 100644 index 7eb8ba2..0000000 --- a/e2sim/src/ASN1c/TriggeringMessage.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "TriggeringMessage.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = { - { 0, 18, "initiating-message" }, - { 1, 18, "successful-outcome" }, - { 2, 21, "unsuccessfull-outcome" } -}; -static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = { - 0, /* initiating-message(0) */ - 1, /* successful-outcome(1) */ - 2 /* unsuccessfull-outcome(2) */ -}; -const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = { - asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */ - 3, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = { - "TriggeringMessage", - "TriggeringMessage", - &asn_OP_NativeEnumerated, - asn_DEF_TriggeringMessage_tags_1, - sizeof(asn_DEF_TriggeringMessage_tags_1) - /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ - asn_DEF_TriggeringMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_TriggeringMessage_tags_1) - /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_TriggeringMessage_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/TriggeringMessage.h b/e2sim/src/ASN1c/TriggeringMessage.h deleted file mode 100644 index 3a7beee..0000000 --- a/e2sim/src/ASN1c/TriggeringMessage.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-CommonDataTypes" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _TriggeringMessage_H_ -#define _TriggeringMessage_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TriggeringMessage { - TriggeringMessage_initiating_message = 0, - TriggeringMessage_successful_outcome = 1, - TriggeringMessage_unsuccessfull_outcome = 2 -} e_TriggeringMessage; - -/* TriggeringMessage */ -typedef long TriggeringMessage_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage; -extern const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1; -asn_struct_free_f TriggeringMessage_free; -asn_struct_print_f TriggeringMessage_print; -asn_constr_check_f TriggeringMessage_constraint; -ber_type_decoder_f TriggeringMessage_decode_ber; -der_type_encoder_f TriggeringMessage_encode_der; -xer_type_decoder_f TriggeringMessage_decode_xer; -xer_type_encoder_f TriggeringMessage_encode_xer; -per_type_decoder_f TriggeringMessage_decode_uper; -per_type_encoder_f TriggeringMessage_encode_uper; -per_type_decoder_f TriggeringMessage_decode_aper; -per_type_encoder_f TriggeringMessage_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TriggeringMessage_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/TypeOfError.c b/e2sim/src/ASN1c/TypeOfError.c deleted file mode 100644 index a97e64c..0000000 --- a/e2sim/src/ASN1c/TypeOfError.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "TypeOfError.h" - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = { - { 0, 14, "not-understood" }, - { 1, 7, "missing" } - /* This list is extensible */ -}; -static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = { - 1, /* missing(1) */ - 0 /* not-understood(0) */ - /* This list is extensible */ -}; -const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = { - asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ - asn_MAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */ - 2, /* Number of elements in the maps */ - 3, /* Extensions before this member */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static const ber_tlv_tag_t asn_DEF_TypeOfError_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_TypeOfError = { - "TypeOfError", - "TypeOfError", - &asn_OP_NativeEnumerated, - asn_DEF_TypeOfError_tags_1, - sizeof(asn_DEF_TypeOfError_tags_1) - /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ - asn_DEF_TypeOfError_tags_1, /* Same as above */ - sizeof(asn_DEF_TypeOfError_tags_1) - /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ - { 0, &asn_PER_type_TypeOfError_constr_1, NativeEnumerated_constraint }, - 0, 0, /* Defined elsewhere */ - &asn_SPC_TypeOfError_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/TypeOfError.h b/e2sim/src/ASN1c/TypeOfError.h deleted file mode 100644 index 1c5f44f..0000000 --- a/e2sim/src/ASN1c/TypeOfError.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-IEs" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _TypeOfError_H_ -#define _TypeOfError_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "NativeEnumerated.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum TypeOfError { - TypeOfError_not_understood = 0, - TypeOfError_missing = 1 - /* - * Enumeration is extensible - */ -} e_TypeOfError; - -/* TypeOfError */ -typedef long TypeOfError_t; - -/* Implementation */ -extern asn_per_constraints_t asn_PER_type_TypeOfError_constr_1; -extern asn_TYPE_descriptor_t asn_DEF_TypeOfError; -extern const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1; -asn_struct_free_f TypeOfError_free; -asn_struct_print_f TypeOfError_print; -asn_constr_check_f TypeOfError_constraint; -ber_type_decoder_f TypeOfError_decode_ber; -der_type_encoder_f TypeOfError_encode_der; -xer_type_decoder_f TypeOfError_decode_xer; -xer_type_encoder_f TypeOfError_encode_xer; -per_type_decoder_f TypeOfError_decode_uper; -per_type_encoder_f TypeOfError_encode_uper; -per_type_decoder_f TypeOfError_decode_aper; -per_type_encoder_f TypeOfError_encode_aper; - -#ifdef __cplusplus -} -#endif - -#endif /* _TypeOfError_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/UnsuccessfulOutcome.c b/e2sim/src/ASN1c/UnsuccessfulOutcome.c deleted file mode 100644 index f7d0b2e..0000000 --- a/e2sim/src/ASN1c/UnsuccessfulOutcome.c +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#include "UnsuccessfulOutcome.h" - -static const long asn_VAL_1_id_RICsubscription = 8; -static const long asn_VAL_1_reject = 0; -static const long asn_VAL_2_id_RICsubscriptionDelete = 9; -static const long asn_VAL_2_reject = 0; -static const long asn_VAL_3_id_RICserviceUpdate = 7; -static const long asn_VAL_3_reject = 0; -static const long asn_VAL_4_id_RICcontrol = 4; -static const long asn_VAL_4_reject = 0; -static const long asn_VAL_5_id_E2setup = 1; -static const long asn_VAL_5_reject = 0; -static const long asn_VAL_6_id_E2nodeConfigurationUpdate = 10; -static const long asn_VAL_6_reject = 0; -static const long asn_VAL_7_id_E2connectionUpdate = 11; -static const long asn_VAL_7_reject = 0; -static const long asn_VAL_8_id_Reset = 3; -static const long asn_VAL_8_reject = 0; -static const long asn_VAL_9_id_RICindication = 5; -static const long asn_VAL_9_ignore = 1; -static const long asn_VAL_10_id_RICserviceQuery = 6; -static const long asn_VAL_10_ignore = 1; -static const long asn_VAL_11_id_ErrorIndication = 2; -static const long asn_VAL_11_ignore = 1; -static const long asn_VAL_12_id_RICsubscriptionDeleteRequired = 12; -static const long asn_VAL_12_ignore = 1; -static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2nodeConfigurationUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2nodeConfigurationUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_E2nodeConfigurationUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_E2connectionUpdate }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateAcknowledge }, - { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2connectionUpdateFailure }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_E2connectionUpdate }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, - { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_Reset }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_RICindication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_RICserviceQuery }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ErrorIndication }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, - { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequired }, - { "&SuccessfulOutcome", }, - { "&UnsuccessfulOutcome", }, - { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_RICsubscriptionDeleteRequired }, - { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore } -}; -static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { - { 12, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } -}; -static int -memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 255)) { - /* Constraint check succeeded */ - return 0; - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_type_selector_result_t -select_UnsuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 4; /* &criticality */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_type_selector_result_t -select_UnsuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { - asn_type_selector_result_t result = {0, 0}; - const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; - size_t constraining_column = 3; /* &procedureCode */ - size_t for_column = 2; /* &UnsuccessfulOutcome */ - size_t row, presence_index = 0; - const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); - - for(row=0; row < itable->rows_count; row++) { - const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; - const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; - - if(type_cell->cell_kind == aioc__undefined) - continue; - - presence_index++; - if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { - result.type_descriptor = type_cell->type_descriptor; - result.presence_index = presence_index; - break; - } - } - - return result; -} - -static int -memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - - if(1 /* No applicable constraints whatsoever */) { - /* Nothing is here. See below */ - } - - return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); -} - -static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { - { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { - { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - { APC_UNCONSTRAINED, -1, -1, 0, 0 }, - 0, 0 /* No PER value map */ -}; -static asn_TYPE_member_t asn_MBR_value_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionDeleteFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICsubscriptionDeleteFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICsubscriptionDeleteFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICserviceUpdateFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICserviceUpdateFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICserviceUpdateFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICcontrolFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_RICcontrolFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "RICcontrolFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2setupFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2setupFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2setupFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2nodeConfigurationUpdateFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2nodeConfigurationUpdateFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2nodeConfigurationUpdateFailure" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2connectionUpdateFailure), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), - 0, - &asn_DEF_E2connectionUpdateFailure, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "E2connectionUpdateFailure" - }, -}; -static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 6 }, /* RICsubscriptionFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 5 }, /* RICsubscriptionDeleteFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 4 }, /* RICserviceUpdateFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 3 }, /* RICcontrolFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 2 }, /* E2setupFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 1 }, /* E2nodeConfigurationUpdateFailure */ - { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 0 } /* E2connectionUpdateFailure */ -}; -static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { - sizeof(struct UnsuccessfulOutcome__value), - offsetof(struct UnsuccessfulOutcome__value, _asn_ctx), - offsetof(struct UnsuccessfulOutcome__value, present), - sizeof(((struct UnsuccessfulOutcome__value *)0)->present), - asn_MAP_value_tag2el_4, - 7, /* Count of tags in the map */ - 0, 0, - -1 /* Extensions start */ -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_value_4 = { - "value", - "value", - &asn_OP_OPEN_TYPE, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - { 0, 0, OPEN_TYPE_constraint }, - asn_MBR_value_4, - 7, /* Elements count */ - &asn_SPC_value_specs_4 /* Additional specs */ -}; - -asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_ProcedureCode, - 0, - { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, - 0, 0, /* No default value */ - "procedureCode" - }, - { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_Criticality, - select_UnsuccessfulOutcome_criticality_type, - { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, - 0, 0, /* No default value */ - "criticality" - }, - { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value), - (ASN_TAG_CLASS_CONTEXT | (2 << 2)), - +1, /* EXPLICIT tag at current level */ - &asn_DEF_value_4, - select_UnsuccessfulOutcome_value_type, - { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, - 0, 0, /* No default value */ - "value" - }, -}; -static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ -}; -asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = { - sizeof(struct UnsuccessfulOutcome), - offsetof(struct UnsuccessfulOutcome, _asn_ctx), - asn_MAP_UnsuccessfulOutcome_tag2el_1, - 3, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* First extension addition */ -}; -asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = { - "UnsuccessfulOutcome", - "UnsuccessfulOutcome", - &asn_OP_SEQUENCE, - asn_DEF_UnsuccessfulOutcome_tags_1, - sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) - /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ - asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */ - sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) - /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ - { 0, 0, SEQUENCE_constraint }, - asn_MBR_UnsuccessfulOutcome_1, - 3, /* Elements count */ - &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */ -}; - diff --git a/e2sim/src/ASN1c/UnsuccessfulOutcome.h b/e2sim/src/ASN1c/UnsuccessfulOutcome.h deleted file mode 100644 index 3ad8cf6..0000000 --- a/e2sim/src/ASN1c/UnsuccessfulOutcome.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - * From ASN.1 module "E2AP-PDU-Descriptions" - * found in "e2ap-v2.asn" - * `asn1c -pdu=auto -fincludes-quoted -fcompound-names -findirect-choice -fno-include-deps -gen-PER -no-gen-example -no-gen-OER` - */ - -#ifndef _UnsuccessfulOutcome_H_ -#define _UnsuccessfulOutcome_H_ - - -#include "asn_application.h" - -/* Including external dependencies */ -#include "ProcedureCode.h" -#include "Criticality.h" -#include "ANY.h" -#include "asn_ioc.h" -#include "RICsubscriptionRequest.h" -#include "RICsubscriptionResponse.h" -#include "RICsubscriptionFailure.h" -#include "RICsubscriptionDeleteRequest.h" -#include "RICsubscriptionDeleteResponse.h" -#include "RICsubscriptionDeleteFailure.h" -#include "RICserviceUpdate.h" -#include "RICserviceUpdateAcknowledge.h" -#include "RICserviceUpdateFailure.h" -#include "RICcontrolRequest.h" -#include "RICcontrolAcknowledge.h" -#include "RICcontrolFailure.h" -#include "E2setupRequest.h" -#include "E2setupResponse.h" -#include "E2setupFailure.h" -#include "E2nodeConfigurationUpdate.h" -#include "E2nodeConfigurationUpdateAcknowledge.h" -#include "E2nodeConfigurationUpdateFailure.h" -#include "E2connectionUpdate.h" -#include "E2connectionUpdateAcknowledge.h" -#include "E2connectionUpdateFailure.h" -#include "ResetRequest.h" -#include "ResetResponse.h" -#include "RICindication.h" -#include "RICserviceQuery.h" -#include "ErrorIndication.h" -#include "RICsubscriptionDeleteRequired.h" -#include "OPEN_TYPE.h" -#include "constr_CHOICE.h" -#include "constr_SEQUENCE.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dependencies */ -typedef enum UnsuccessfulOutcome__value_PR { - UnsuccessfulOutcome__value_PR_NOTHING, /* No components present */ - UnsuccessfulOutcome__value_PR_RICsubscriptionFailure, - UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure, - UnsuccessfulOutcome__value_PR_RICserviceUpdateFailure, - UnsuccessfulOutcome__value_PR_RICcontrolFailure, - UnsuccessfulOutcome__value_PR_E2setupFailure, - UnsuccessfulOutcome__value_PR_E2nodeConfigurationUpdateFailure, - UnsuccessfulOutcome__value_PR_E2connectionUpdateFailure -} UnsuccessfulOutcome__value_PR; - -/* UnsuccessfulOutcome */ -typedef struct UnsuccessfulOutcome { - ProcedureCode_t procedureCode; - Criticality_t criticality; - struct UnsuccessfulOutcome__value { - UnsuccessfulOutcome__value_PR present; - union UnsuccessfulOutcome__value_u { - RICsubscriptionFailure_t RICsubscriptionFailure; - RICsubscriptionDeleteFailure_t RICsubscriptionDeleteFailure; - RICserviceUpdateFailure_t RICserviceUpdateFailure; - RICcontrolFailure_t RICcontrolFailure; - E2setupFailure_t E2setupFailure; - E2nodeConfigurationUpdateFailure_t E2nodeConfigurationUpdateFailure; - E2connectionUpdateFailure_t E2connectionUpdateFailure; - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } value; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; -} UnsuccessfulOutcome_t; - -/* Implementation */ -extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome; -extern asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1; -extern asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[3]; - -#ifdef __cplusplus -} -#endif - -#endif /* _UnsuccessfulOutcome_H_ */ -#include "asn_internal.h" diff --git a/e2sim/src/ASN1c/asn_SEQUENCE_OF.c b/e2sim/src/ASN1c/asn_SEQUENCE_OF.c deleted file mode 100644 index ec952fc..0000000 --- a/e2sim/src/ASN1c/asn_SEQUENCE_OF.c +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/asn_SEQUENCE_OF.h b/e2sim/src/ASN1c/asn_SEQUENCE_OF.h deleted file mode 100644 index e35bc44..0000000 --- a/e2sim/src/ASN1c/asn_SEQUENCE_OF.h +++ /dev/null @@ -1,52 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/asn_SET_OF.c b/e2sim/src/ASN1c/asn_SET_OF.c deleted file mode 100644 index 944f2cb..0000000 --- a/e2sim/src/ASN1c/asn_SET_OF.c +++ /dev/null @@ -1,88 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/asn_SET_OF.h b/e2sim/src/ASN1c/asn_SET_OF.h deleted file mode 100644 index 882e1a4..0000000 --- a/e2sim/src/ASN1c/asn_SET_OF.h +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/asn_application.c b/e2sim/src/ASN1c/asn_application.c deleted file mode 100644 index 2bff460..0000000 --- a/e2sim/src/ASN1c/asn_application.c +++ /dev/null @@ -1,481 +0,0 @@ -/* - * Copyright (c) 2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_app_consume_bytes_f *callback, - void *callback_key); - - -struct callback_count_bytes_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - size_t computed_size; -}; - -/* - * Encoder which just counts bytes that come through it. - */ -static int -callback_count_bytes_cb(const void *data, size_t size, void *keyp) { - struct callback_count_bytes_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret >= 0) { - key->computed_size += size; - } - - return ret; -} - -struct overrun_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct dynamic_encoder_key { - void *buffer; - size_t buffer_size; - size_t computed_size; -}; - -struct callback_failure_catch_key { - asn_app_consume_bytes_f *callback; - void *callback_key; - int callback_failed; -}; - -/* - * Encoder which doesn't stop counting bytes - * even if it reaches the end of the buffer. - */ -static int -overrun_encoder_cb(const void *data, size_t size, void *keyp) { - struct overrun_encoder_key *key = keyp; - - if(key->computed_size + size > key->buffer_size) { - /* - * Avoid accident on the next call: - * stop adding bytes to the buffer. - */ - key->buffer_size = 0; - } else { - memcpy((char *)key->buffer + key->computed_size, data, size); - } - key->computed_size += size; - - return 0; -} - -/* - * Encoder which dynamically allocates output, and continues - * to count even if allocation failed. - */ -static int -dynamic_encoder_cb(const void *data, size_t size, void *keyp) { - struct dynamic_encoder_key *key = keyp; - - if(key->buffer) { - if(key->computed_size + size >= key->buffer_size) { - void *p; - size_t new_size = key->buffer_size; - - do { - new_size *= 2; - } while(new_size <= key->computed_size + size); - - p = REALLOC(key->buffer, new_size); - if(p) { - key->buffer = p; - key->buffer_size = new_size; - } else { - FREEMEM(key->buffer); - key->buffer = 0; - key->buffer_size = 0; - key->computed_size += size; - return 0; - } - } - memcpy((char *)key->buffer + key->computed_size, data, size); - } - - key->computed_size += size; - - return 0; -} - -/* - * Encoder which help convert the application level encoder failure into EIO. - */ -static int -callback_failure_catch_cb(const void *data, size_t size, void *keyp) { - struct callback_failure_catch_key *key = keyp; - int ret; - - ret = key->callback(data, size, key->callback_key); - if(ret < 0) { - key->callback_failed = 1; - } - - return ret; -} - -asn_enc_rval_t -asn_encode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { - struct callback_failure_catch_key cb_key; - asn_enc_rval_t er = {0,0,0}; - - if(!callback) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.callback_failed = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - callback_failure_catch_cb, &cb_key); - if(cb_key.callback_failed) { - assert(er.encoded == -1); - assert(errno == EBADF); - errno = EIO; - } - - return er; -} - -asn_enc_rval_t -asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - void *buffer, size_t buffer_size) { - struct overrun_encoder_key buf_key; - asn_enc_rval_t er = {0,0,0}; - - if(buffer_size > 0 && !buffer) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - buf_key.buffer = buffer; - buf_key.buffer_size = buffer_size; - buf_key.computed_size = 0; - - er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - overrun_encoder_cb, &buf_key); - - if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - er.encoded, buf_key.computed_size); - assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); - } - - return er; -} - -asn_encode_to_new_buffer_result_t -asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr) { - struct dynamic_encoder_key buf_key; - asn_encode_to_new_buffer_result_t res; - - buf_key.buffer_size = 16; - buf_key.buffer = MALLOC(buf_key.buffer_size); - buf_key.computed_size = 0; - - res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, - dynamic_encoder_cb, &buf_key); - - if(res.result.encoded >= 0 - && (size_t)res.result.encoded != buf_key.computed_size) { - ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE - " yet produced %" ASN_PRI_SIZE " bytes", - res.result.encoded, buf_key.computed_size); - assert(res.result.encoded < 0 - || (size_t)res.result.encoded == buf_key.computed_size); - } - - res.buffer = buf_key.buffer; - - /* 0-terminate just in case. */ - if(res.buffer) { - assert(buf_key.computed_size < buf_key.buffer_size); - ((char *)res.buffer)[buf_key.computed_size] = '\0'; - } - - return res; -} - -static asn_enc_rval_t -asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, - const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_consume_bytes_f *callback, void *callback_key) { - asn_enc_rval_t er = {0,0,0}; - enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; - - (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ - - if(!td || !sptr) { - errno = EINVAL; - ASN__ENCODE_FAILED; - } - - switch(syntax) { - case ATS_NONSTANDARD_PLAINTEXT: - if(td->op->print_struct) { - struct callback_count_bytes_key cb_key; - cb_key.callback = callback; - cb_key.callback_key = callback_key; - cb_key.computed_size = 0; - if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, - &cb_key) - < 0 - || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { - errno = EBADF; /* Structure has incorrect form. */ - er.encoded = -1; - er.failed_type = td; - er.structure_ptr = sptr; - } else { - er.encoded = cb_key.computed_size; - er.failed_type = 0; - er.structure_ptr = 0; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - case ATS_RANDOM: - errno = ENOENT; /* Randomization doesn't make sense on output. */ - ASN__ENCODE_FAILED; - - case ATS_BER: - /* BER is a superset of DER. */ - /* Fall through. */ - case ATS_DER: - if(td->op->der_encoder) { - er = der_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->der_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* DER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_CER: - errno = ENOENT; /* Transfer syntax is not defined for any type. */ - ASN__ENCODE_FAILED; - -#ifdef ASN_DISABLE_OER_SUPPORT - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_OER_SUPPORT */ - case ATS_BASIC_OER: - /* CANONICAL-OER is a superset of BASIC-OER. */ - /* Fall through. */ - case ATS_CANONICAL_OER: - if(td->op->oer_encoder) { - er = oer_encode(td, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->oer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* OER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_OER_SUPPORT */ - -#ifdef ASN_DISABLE_PER_SUPPORT - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: - errno = ENOENT; /* PER is not defined. */ - ASN__ENCODE_FAILED; - break; -#else /* ASN_DISABLE_PER_SUPPORT */ - case ATS_UNALIGNED_BASIC_PER: - /* CANONICAL-UPER is a superset of BASIC-UPER. */ - /* Fall through. */ - case ATS_UNALIGNED_CANONICAL_PER: - if(td->op->uper_encoder) { - er = uper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->uper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* UPER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - case ATS_ALIGNED_BASIC_PER: - /* CANONICAL-APER is a superset of BASIC-APER. */ - /* Fall through. */ - case ATS_ALIGNED_CANONICAL_PER: - if(td->op->aper_encoder) { - er = aper_encode(td, 0, sptr, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->aper_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* APER is not defined for this type. */ - } - } else { - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - if(er.encoded == 0) { - /* Enforce "Complete Encoding" of X.691 #11.1 */ - if(callback("\0", 1, callback_key) < 0) { - errno = EBADF; - ASN__ENCODE_FAILED; - } - er.encoded = 8; /* Exactly 8 zero bits is added. */ - } - /* Convert bits into bytes */ - er.encoded = (er.encoded + 7) >> 3; - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; -#endif /* ASN_DISABLE_PER_SUPPORT */ - - case ATS_BASIC_XER: - /* CANONICAL-XER is a superset of BASIC-XER. */ - xer_flags &= ~XER_F_CANONICAL; - xer_flags |= XER_F_BASIC; - /* Fall through. */ - case ATS_CANONICAL_XER: - if(td->op->xer_encoder) { - er = xer_encode(td, sptr, xer_flags, callback, callback_key); - if(er.encoded == -1) { - if(er.failed_type && er.failed_type->op->xer_encoder) { - errno = EBADF; /* Structure has incorrect form. */ - } else { - errno = ENOENT; /* XER is not defined for this type. */ - } - } - } else { - errno = ENOENT; /* Transfer syntax is not defined for this type. */ - ASN__ENCODE_FAILED; - } - break; - - default: - errno = ENOENT; - ASN__ENCODE_FAILED; - } - - return er; -} - -asn_dec_rval_t -asn_decode(const asn_codec_ctx_t *opt_codec_ctx, - enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, - void **sptr, const void *buffer, size_t size) { - if(!td || !td->op || !sptr || (size && !buffer)) { - ASN__DECODE_FAILED; - } - - switch(syntax) { - case ATS_CER: - case ATS_NONSTANDARD_PLAINTEXT: - default: - errno = ENOENT; - ASN__DECODE_FAILED; - - case ATS_RANDOM: - if(!td->op->random_fill) { - ASN__DECODE_FAILED; - } else { - if(asn_random_fill(td, sptr, 16000) == 0) { - asn_dec_rval_t ret = {RC_OK, 0}; - return ret; - } else { - ASN__DECODE_FAILED; - } - } - break; - - case ATS_DER: - case ATS_BER: - return ber_decode(opt_codec_ctx, td, sptr, buffer, size); - - case ATS_BASIC_OER: - case ATS_CANONICAL_OER: -#ifdef ASN_DISABLE_OER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return oer_decode(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_UNALIGNED_BASIC_PER: - case ATS_UNALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_ALIGNED_BASIC_PER: - case ATS_ALIGNED_CANONICAL_PER: -#ifdef ASN_DISABLE_PER_SUPPORT - errno = ENOENT; - ASN__DECODE_FAILED; -#else - return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); -#endif - - case ATS_BASIC_XER: - case ATS_CANONICAL_XER: - return xer_decode(opt_codec_ctx, td, sptr, buffer, size); - } -} - diff --git a/e2sim/src/ASN1c/asn_application.h b/e2sim/src/ASN1c/asn_application.h deleted file mode 100644 index 034f646..0000000 --- a/e2sim/src/ASN1c/asn_application.h +++ /dev/null @@ -1,171 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Application-level ASN.1 callbacks. - */ -#ifndef ASN_APPLICATION_H -#define ASN_APPLICATION_H - -#include "asn_system.h" /* for platform-dependent types */ -#include "asn_codecs.h" /* for ASN.1 codecs specifics */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * A selection of ASN.1 Transfer Syntaxes to use with generalized - * encoders and decoders declared further in this .h file. - */ -enum asn_transfer_syntax { - /* Avoid appearance of a default transfer syntax. */ - ATS_INVALID = 0, - /* Plaintext output (not conforming to any standard), for debugging. */ - ATS_NONSTANDARD_PLAINTEXT, - /* Returns a randomly generated structure. */ - ATS_RANDOM, - /* - * X.690: - * BER: Basic Encoding Rules. - * DER: Distinguished Encoding Rules. - * CER: Canonical Encoding Rules. - * DER and CER are more strict variants of BER. - */ - ATS_BER, - ATS_DER, - ATS_CER, /* Only decoding is supported */ - /* - * X.696: - * OER: Octet Encoding Rules. - * CANONICAL-OER is a more strict variant of BASIC-OER. - */ - ATS_BASIC_OER, - ATS_CANONICAL_OER, - /* - * X.691: - * PER: Packed Encoding Rules. - * CANONICAL-PER is a more strict variant of BASIC-PER. - * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). - */ - ATS_UNALIGNED_BASIC_PER, - ATS_UNALIGNED_CANONICAL_PER, - ATS_ALIGNED_BASIC_PER, - ATS_ALIGNED_CANONICAL_PER, - /* - * X.693: - * XER: XML Encoding Rules. - * CANONICAL-XER is a more strict variant of BASIC-XER. - */ - ATS_BASIC_XER, - ATS_CANONICAL_XER -}; - -/* - * A generic encoder for any supported transfer syntax. - * RETURN VALUES: - * The (.encoded) field of the return value is REDEFINED to mean the following: - * >=0: The computed size of the encoded data. Can exceed the (buffer_size). - * -1: Error encoding the structure. See the error code in (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate - * values at the place of failure, if at all possible. - * WARNING: The (.encoded) field of the return value can exceed the buffer_size. - * This is similar to snprintf(3) contract which might return values - * greater than the buffer size. - */ -asn_enc_rval_t asn_encode_to_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, void *buffer, size_t buffer_size); - -/* - * A variant of asn_encode_to_buffer() with automatically allocated buffer. - * RETURN VALUES: - * On success, returns a newly allocated (.buffer) containing the whole message. - * The message size is returned in (.result.encoded). - * On failure: - * (.buffer) is NULL, - * (.result.encoded) as in asn_encode_to_buffer(), - * The errno codes as in asn_encode_to_buffer(), plus the following: - * ENOMEM: Memory allocation failed due to system or internal limits. - * The user is responsible for freeing the (.buffer). - */ -typedef struct asn_encode_to_new_buffer_result_s { - void *buffer; /* NULL if failed to encode. */ - asn_enc_rval_t result; -} asn_encode_to_new_buffer_result_t; -asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode); - - -/* - * Generic type of an application-defined callback to return various - * types of data to the application. - * EXPECTED RETURN VALUES: - * -1: Failed to consume bytes. Abort the mission. - * Non-negative return values indicate success, and ignored. - */ -typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, - void *application_specific_key); - - -/* - * A generic encoder for any supported transfer syntax. - * Returns the comprehensive encoding result descriptor (see asn_codecs.h). - * RETURN VALUES: - * The negative (.encoded) field of the return values is accompanied with the - * following error codes (errno): - * EINVAL: Incorrect parameters to the function, such as NULLs. - * ENOENT: Encoding transfer syntax is not defined (for this type). - * EBADF: The structure has invalid form or content constraint failed. - * EIO: The (callback) has returned negative value during encoding. - */ -asn_enc_rval_t asn_encode( - const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ - enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_encode, - const void *structure_to_encode, - asn_app_consume_bytes_f *callback, void *callback_key); - - -/* - * A generic decoder for any supported transfer syntax. - */ -asn_dec_rval_t asn_decode( - const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, - const struct asn_TYPE_descriptor_s *type_to_decode, - void **structure_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ -); - - -/* - * A callback of this type is called whenever constraint validation fails - * on some ASN.1 type. See "constraints.h" for more details on constraint - * validation. - * This callback specifies a descriptor of the ASN.1 type which failed - * the constraint check, as well as human readable message on what - * particular constraint has failed. - */ -typedef void (asn_app_constraint_failed_f)(void *application_specific_key, - const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, - const void *structure_which_failed_ptr, - const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); - - -#ifdef __cplusplus -} -#endif - -#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ - -#endif /* ASN_APPLICATION_H */ diff --git a/e2sim/src/ASN1c/asn_bit_data.c b/e2sim/src/ASN1c/asn_bit_data.c deleted file mode 100644 index fe4b89b..0000000 --- a/e2sim/src/ASN1c/asn_bit_data.c +++ /dev/null @@ -1,333 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/asn_bit_data.h b/e2sim/src/ASN1c/asn_bit_data.h deleted file mode 100644 index 59de7af..0000000 --- a/e2sim/src/ASN1c/asn_bit_data.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/asn_codecs.h b/e2sim/src/ASN1c/asn_codecs.h deleted file mode 100644 index e75c270..0000000 --- a/e2sim/src/ASN1c/asn_codecs.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/asn_codecs_prim.c b/e2sim/src/ASN1c/asn_codecs_prim.c deleted file mode 100644 index fc24247..0000000 --- a/e2sim/src/ASN1c/asn_codecs_prim.c +++ /dev/null @@ -1,317 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Decode an always-primitive type. - */ -asn_dec_rval_t -ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buf_ptr, size_t size, int tag_mode) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; - asn_dec_rval_t rval; - ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ - - /* - * If the structure is not there, allocate it. - */ - if(st == NULL) { - st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) ASN__DECODE_FAILED; - *sptr = (void *)st; - } - - ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", - td->name, tag_mode); - - /* - * Check tags and extract value length. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - st->size = (int)length; - /* The following better be optimized away. */ - if(sizeof(st->size) != sizeof(length) - && (ber_tlv_len_t)st->size != length) { - st->size = 0; - ASN__DECODE_FAILED; - } - - st->buf = (uint8_t *)MALLOC(length + 1); - if(!st->buf) { - st->size = 0; - ASN__DECODE_FAILED; - } - - memcpy(st->buf, buf_ptr, length); - st->buf[length] = '\0'; /* Just in case */ - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s", - (long)rval.consumed, - (long)length, td->name); - - return rval; -} - -/* - * Encode an always-primitive type using DER. - */ -asn_enc_rval_t -der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t erval = {0,0,0}; - const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; - - ASN_DEBUG("%s %s as a primitive type (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, - cb, app_key); - ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); - if(erval.encoded == -1) { - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - - if(cb && st->buf) { - if(cb(st->buf, st->size, app_key) < 0) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - } else { - assert(st->buf || st->size == 0); - } - - erval.encoded += st->size; - ASN__ENCODED_OK(erval); -} - -void -ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as a primitive type", td->name); - - if(st->buf) - FREEMEM(st->buf); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); - break; - } -} - - -/* - * Local internal type passed around as an argument. - */ -struct xdp_arg_s { - const asn_TYPE_descriptor_t *type_descriptor; - void *struct_key; - xer_primitive_body_decoder_f *prim_body_decoder; - int decoded_something; - int want_more; -}; - -/* - * Since some kinds of primitive values can be encoded using value-specific - * tags (, , etc), the primitive decoder must - * be supplied with such tags to parse them as needed. - */ -static int -xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - - /* - * The chunk_buf is guaranteed to start at '<'. - */ - assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); - - /* - * Decoding was performed once already. Prohibit doing it again. - */ - if(arg->decoded_something) - return -1; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return 0; - } - - return -1; -} - -static ssize_t -xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - size_t lead_wsp_size; - - if(arg->decoded_something) { - if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { - /* - * Example: - * "123 " - * ^- chunk_buf position. - */ - return chunk_size; - } - /* - * Decoding was done once already. Prohibit doing it again. - */ - return -1; - } - - if(!have_more) { - /* - * If we've received something like "1", we can't really - * tell whether it is really `1` or `123`, until we know - * that there is no more data coming. - * The have_more argument will be set to 1 once something - * like this is available to the caller of this callback: - * "1want_more = 1; - return -1; - } - - lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); - chunk_buf = (const char *)chunk_buf + lead_wsp_size; - chunk_size -= lead_wsp_size; - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return lead_wsp_size + chunk_size; - } - - return -1; -} - - -asn_dec_rval_t -xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - size_t struct_size, const char *opt_mname, - const void *buf_ptr, size_t size, - xer_primitive_body_decoder_f *prim_body_decoder) { - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t s_ctx; - struct xdp_arg_s s_arg; - asn_dec_rval_t rc; - - /* - * Create the structure if does not exist. - */ - if(!*sptr) { - *sptr = CALLOC(1, struct_size); - if(!*sptr) ASN__DECODE_FAILED; - } - - memset(&s_ctx, 0, sizeof(s_ctx)); - s_arg.type_descriptor = td; - s_arg.struct_key = *sptr; - s_arg.prim_body_decoder = prim_body_decoder; - s_arg.decoded_something = 0; - s_arg.want_more = 0; - - rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, - xml_tag, buf_ptr, size, - xer_decode__unexpected_tag, xer_decode__primitive_body); - switch(rc.code) { - case RC_OK: - if(!s_arg.decoded_something) { - char ch; - ASN_DEBUG("Primitive body is not recognized, " - "supplying empty one"); - /* - * Decoding opportunity has come and gone. - * Where's the result? - * Try to feed with empty body, see if it eats it. - */ - if(prim_body_decoder(s_arg.type_descriptor, - s_arg.struct_key, &ch, 0) - != XPBD_BODY_CONSUMED) { - /* - * This decoder does not like empty stuff. - */ - ASN__DECODE_FAILED; - } - } - break; - case RC_WMORE: - /* - * Redo the whole thing later. - * We don't have a context to save intermediate parsing state. - */ - rc.consumed = 0; - break; - case RC_FAIL: - rc.consumed = 0; - if(s_arg.want_more) - rc.code = RC_WMORE; - else - ASN__DECODE_FAILED; - break; - } - return rc; -} - diff --git a/e2sim/src/ASN1c/asn_codecs_prim.h b/e2sim/src/ASN1c/asn_codecs_prim.h deleted file mode 100644 index fbc5576..0000000 --- a/e2sim/src/ASN1c/asn_codecs_prim.h +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/asn_constant.h b/e2sim/src/ASN1c/asn_constant.h deleted file mode 100644 index b850c56..0000000 --- a/e2sim/src/ASN1c/asn_constant.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) - */ - -#ifndef _ASN_CONSTANT_H -#define _ASN_CONSTANT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define maxProtocolIEs (65535) -#define maxnoofErrors (256) -#define maxofE2nodeComponents (1024) -#define maxofRANfunctionID (256) -#define maxofRICactionID (16) -#define maxofTNLA (32) -#define maxofRICrequestID (4294967295) - - -#ifdef __cplusplus -} -#endif - -#endif /* _ASN_CONSTANT_H */ diff --git a/e2sim/src/ASN1c/asn_internal.c b/e2sim/src/ASN1c/asn_internal.c deleted file mode 100644 index 004660b..0000000 --- a/e2sim/src/ASN1c/asn_internal.c +++ /dev/null @@ -1,49 +0,0 @@ -#include - -ssize_t -asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, - const char *fmt, ...) { - char scratch[64]; - char *buf = scratch; - size_t buf_size = sizeof(scratch); - int wrote; - int cb_ret; - - do { - va_list args; - va_start(args, fmt); - - wrote = vsnprintf(buf, buf_size, fmt, args); - if(wrote < (ssize_t)buf_size) { - if(wrote < 0) { - if(buf != scratch) FREEMEM(buf); - va_end(args); - return -1; - } - break; - } - - buf_size <<= 1; - if(buf == scratch) { - buf = MALLOC(buf_size); - if(!buf) { va_end(args); return -1; } - } else { - void *p = REALLOC(buf, buf_size); - if(!p) { - FREEMEM(buf); - va_end(args); - 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/e2sim/src/ASN1c/asn_internal.h b/e2sim/src/ASN1c/asn_internal.h deleted file mode 100644 index c4105ad..0000000 --- a/e2sim/src/ASN1c/asn_internal.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Declarations internally useful for the ASN.1 support code. - */ -#ifndef ASN_INTERNAL_H -#define ASN_INTERNAL_H -#define __EXTENSIONS__ /* for Sun */ - -#include "asn_application.h" /* Application-visible API */ - -#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ -#include /* for assert() macro */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Environment version might be used to avoid running with the old library */ -#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ -int get_asn1c_environment_version(void); /* Run-time version */ - -#define CALLOC(nmemb, size) calloc(nmemb, size) -#define MALLOC(size) malloc(size) -#define REALLOC(oldptr, size) realloc(oldptr, size) -#define FREEMEM(ptr) free(ptr) - -#define asn_debug_indent 0 -#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) - -#ifdef EMIT_ASN_DEBUG -#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" -#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG -#endif - -/* - * A macro for debugging the ASN.1 internals. - * You may enable or override it. - */ -#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ -#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ -#if !defined(BELL_LABS) /* Bell Labs */ - //#if __STDC_VERSION__ >= 199901L -#ifdef ASN_THREAD_SAFE -/* Thread safety requires sacrifice in output indentation: - * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ -#else /* !ASN_THREAD_SAFE */ -#undef ASN_DEBUG_INDENT_ADD -#undef asn_debug_indent -int asn_debug_indent; -#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) -#endif /* ASN_THREAD_SAFE */ -#if defined(BELL_LABS) /* Bell Labs version */ -extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); -#define ASN_DEBUG(fmt, args...) do { \ - (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ - } while(0) -#else -#define ASN_DEBUG(fmt, args...) do { \ - int adi = asn_debug_indent; \ - while(adi--) fprintf(stderr, " "); \ - fprintf(stderr, fmt, ##args); \ - fprintf(stderr, " (%s:%d)\n", \ - __FILE__, __LINE__); \ - } while(0) -#endif /* BELL_LABS */ -#else /* !C99 */ -void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); -#define ASN_DEBUG ASN_DEBUG_f -#endif /* C99 */ -#else /* ASN_EMIT_DEBUG != 1 */ -#if __STDC_VERSION__ >= 199901L -#define ASN_DEBUG(...) do{}while(0) -#else /* not C99 */ -static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } -#endif /* C99 or better */ -#endif /* ASN_EMIT_DEBUG */ -#endif /* ASN_DEBUG */ - -/* - * Print to a callback. - * The callback is expected to return negative values on error. - * 0 and positive values are treated as success. - * RETURN VALUES: - * -1: Failed to format or invoke the callback. - * >0: Size of the data that got delivered to the callback. - */ -ssize_t CC_PRINTFLIKE(3, 4) -asn__format_to_callback( - int (*callback)(const void *, size_t, void *key), void *key, - const char *fmt, ...); - -/* - * Invoke the application-supplied callback and fail, if something is wrong. - */ -#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) -#define ASN__E_CALLBACK(size, foo) \ - do { \ - if(foo) goto cb_failed; \ - er.encoded += (size); \ - } while(0) -#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) -#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ - ASN__E_CALLBACK((size1) + (size2), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) -#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ - ASN__E_CALLBACK((size1) + (size2) + (size3), \ - ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ - || ASN__E_cbc(buf3, size3)) - -#define ASN__TEXT_INDENT(nl, level) \ - do { \ - int tmp_level = (level); \ - int tmp_nl = ((nl) != 0); \ - int tmp_i; \ - if(tmp_nl) ASN__CALLBACK("\n", 1); \ - if(tmp_level < 0) tmp_level = 0; \ - for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ - } while(0) - -#define _i_INDENT(nl) do { \ - int tmp_i; \ - if((nl) && cb("\n", 1, app_key) < 0) \ - return -1; \ - for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ - if(cb(" ", 4, app_key) < 0) \ - return -1; \ - } while(0) - -/* - * Check stack against overflow, if limit is set. - */ -#define ASN__DEFAULT_STACK_MAX (30000) -static int CC_NOTUSED -ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { - if(ctx && ctx->max_stack_size) { - - /* ctx MUST be allocated on the stack */ - ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); - if(usedstack > 0) usedstack = -usedstack; /* grows up! */ - - /* double negative required to avoid int wrap-around */ - if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { - ASN_DEBUG("Stack limit %ld reached", - (long)ctx->max_stack_size); - return -1; - } - } - return 0; -} - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_INTERNAL_H */ diff --git a/e2sim/src/ASN1c/asn_ioc.h b/e2sim/src/ASN1c/asn_ioc.h deleted file mode 100644 index 7de210e..0000000 --- a/e2sim/src/ASN1c/asn_ioc.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/asn_random_fill.c b/e2sim/src/ASN1c/asn_random_fill.c deleted file mode 100644 index 819cf70..0000000 --- a/e2sim/src/ASN1c/asn_random_fill.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/asn_random_fill.h b/e2sim/src/ASN1c/asn_random_fill.h deleted file mode 100644 index 47f9b8a..0000000 --- a/e2sim/src/ASN1c/asn_random_fill.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/asn_system.h b/e2sim/src/ASN1c/asn_system.h deleted file mode 100644 index fa8cf11..0000000 --- a/e2sim/src/ASN1c/asn_system.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/ber_decoder.c b/e2sim/src/ASN1c/ber_decoder.c deleted file mode 100644 index 75d6016..0000000 --- a/e2sim/src/ASN1c/ber_decoder.c +++ /dev/null @@ -1,283 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/ber_decoder.h b/e2sim/src/ASN1c/ber_decoder.h deleted file mode 100644 index 1ac2a5e..0000000 --- a/e2sim/src/ASN1c/ber_decoder.h +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/ber_tlv_length.c b/e2sim/src/ASN1c/ber_tlv_length.c deleted file mode 100644 index 0a0deec..0000000 --- a/e2sim/src/ASN1c/ber_tlv_length.c +++ /dev/null @@ -1,168 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/ber_tlv_length.h b/e2sim/src/ASN1c/ber_tlv_length.h deleted file mode 100644 index d1e4d48..0000000 --- a/e2sim/src/ASN1c/ber_tlv_length.h +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/ber_tlv_tag.c b/e2sim/src/ASN1c/ber_tlv_tag.c deleted file mode 100644 index 4a7d732..0000000 --- a/e2sim/src/ASN1c/ber_tlv_tag.c +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/ber_tlv_tag.h b/e2sim/src/ASN1c/ber_tlv_tag.h deleted file mode 100644 index ce227ad..0000000 --- a/e2sim/src/ASN1c/ber_tlv_tag.h +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/constr_CHOICE.c b/e2sim/src/ASN1c/constr_CHOICE.c deleted file mode 100644 index 86dcbb0..0000000 --- a/e2sim/src/ASN1c/constr_CHOICE.c +++ /dev/null @@ -1,1533 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * See the definitions. - */ -static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, - unsigned size); -static void _set_present_idx(void *sptr, unsigned offset, unsigned size, - unsigned pres); -static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, - const void *sptr, asn_TYPE_member_t **elm, - unsigned *present); - -/* - * Tags are canonically sorted in the tag to member table. - */ -static int -_search4tag(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) - return 0; - else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - -/* - * The decoder of the CHOICE type. - */ -asn_dec_rval_t -CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - ssize_t tag_len; /* Length of TLV's T */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as CHOICE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - if(tag_mode || td->tags_count) { - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, -1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) { - /* ?Substracted below! */ - ctx->left += rval.consumed; - } - ADVANCE(rval.consumed); - } else { - ctx->left = -1; - } - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - do { - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key; - - key.el_tag = tlv_tag; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _search4tag); - if(t2m) { - /* - * Found the element corresponding to the tag. - */ - NEXT_PHASE(ctx); - ctx->step = t2m->el_no; - break; - } else if(specs->ext_start == -1) { - ASN_DEBUG("Unexpected tag %s " - "in non-extensible CHOICE %s", - ber_tlv_tag_string(tlv_tag), td->name); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - - ASN_DEBUG("Skipping unknown tag %s", - ber_tlv_tag_string(tlv_tag)); - - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - RETURN(RC_OK); - } - } while(0); - - case 2: - /* - * PHASE 2. - * Read in the element. - */ - do { - asn_TYPE_member_t *elm;/* CHOICE's element */ - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &elements[ctx->step]; - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - /* Set presence to be able to free it properly at any time */ - _set_present_idx(st, specs->pres_offset, - specs->pres_size, ctx->step + 1); - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, - memb_ptr2, ptr, LEFT, elm->tag_mode); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - RETURN(RC_FAIL); - case RC_FAIL: /* Fatal error */ - RETURN(rval.code); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } while(0); - - NEXT_PHASE(ctx); - - /* Fall through */ - case 3: - ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", - td->name, (long)ctx->left, (long)size, - tag_mode, td->tags_count); - - if(ctx->left > 0) { - /* - * The type must be fully decoded - * by the CHOICE member-specific decoder. - */ - RETURN(RC_FAIL); - } - - if(ctx->left == -1 - && !(tag_mode || td->tags_count)) { - /* - * This is an untagged CHOICE. - * It doesn't contain nothing - * except for the member itself, including all its tags. - * The decoding is completed. - */ - NEXT_PHASE(ctx); - break; - } - - /* - * Read in the "end of data chunks"'s. - */ - while(ctx->left < 0) { - ssize_t tl; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * Expected <0><0>... - */ - if(((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - continue; - } - } else { - ASN_DEBUG("Unexpected continuation in %s", - td->name); - RETURN(RC_FAIL); - } - - /* UNREACHABLE */ - } - - NEXT_PHASE(ctx); - case 4: - /* No meaningful work here */ - break; - } - - RETURN(RC_OK); -} - -asn_enc_rval_t -CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE element */ - asn_enc_rval_t erval = {0,0,0}; - const void *memb_ptr; - size_t computed_size = 0; - unsigned present; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("%s %s as CHOICE", - cb?"Encoding":"Estimating", td->name); - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) { - if(present == 0 && td->elements_count == 0) { - /* The CHOICE is empty?! */ - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - ASN__ENCODE_FAILED; - } - - /* - * Seek over the present member of the structure. - */ - elm = &td->elements[present-1]; - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(memb_ptr == 0) { - if(elm->optional) { - erval.encoded = 0; - ASN__ENCODED_OK(erval); - } - /* Mandatory element absent */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* - * If the CHOICE itself is tagged EXPLICIT: - * T ::= [2] EXPLICIT CHOICE { ... } - * Then emit the appropriate tags. - */ - if(tag_mode == 1 || td->tags_count) { - /* - * For this, we need to pre-compute the member. - */ - ssize_t ret; - - /* Encode member with its tag */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, 0, 0); - if(erval.encoded == -1) - return erval; - - /* Encode CHOICE with parent or my own tag */ - ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, - cb, app_key); - if(ret == -1) - ASN__ENCODE_FAILED; - computed_size += ret; - } - - /* - * Encode the single underlying member. - */ - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, cb, app_key); - if(erval.encoded == -1) - return erval; - - ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", - (long)erval.encoded, (long)computed_size); - - erval.encoded += computed_size; - - return erval; -} - -ber_tlv_tag_t -CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - assert(tag_mode == 0); (void)tag_mode; - assert(tag == 0); (void)tag; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - if(present > 0 && present <= td->elements_count) { - const asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *) - ((const char *)ptr + elm->memb_offset); - } else { - memb_ptr = (const void *) - ((const char *)ptr + elm->memb_offset); - } - - return asn_TYPE_outmost_tag(elm->type, memb_ptr, - elm->tag_mode, elm->tag); - } else { - return (ber_tlv_tag_t)-1; - } -} - -int -CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - return 0; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory CHOICE element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } else { - ASN__CTFAIL(app_key, td, sptr, - "%s: no CHOICE element given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value of a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - if(ctx->phase == 0 && !*xml_tag) - ctx->phase = 1; /* Skip the outer tag checking phase */ - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Only waiting for closing tag. - * Phase 4: Skipping unknown extensions. - * Phase 5: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 4;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the member. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - unsigned old_present; - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Start/Continue decoding the inner member */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - buf_ptr, size); - XER_ADVANCE(tmprval.consumed); - ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", - elm->type->name, tmprval.code); - old_present = _fetch_present_idx(st, - specs->pres_offset, specs->pres_size); - assert(old_present == 0 || old_present == edx + 1); - /* Record what we've got */ - _set_present_idx(st, - specs->pres_offset, specs->pres_size, edx + 1); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 3; - /* Fall through */ - } - - /* No need to wait for closing tag; special mode. */ - if(ctx->phase == 3 && !*xml_tag) { - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - xml_tag, tcv); - - /* Skip the extensions section */ - if(ctx->phase == 4) { - ASN_DEBUG("skip_unknown(%d, %ld)", - tcv, (long)ctx->left); - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 5; - RETURN(RC_FAIL); - case 1: - ctx->phase = 3; - /* Fall through */ - case 0: - XER_ADVANCE(ch_size); - continue; - case 2: - ctx->phase = 3; - break; - } - } - - switch(tcv) { - case XCT_BOTH: - break; /* No CHOICE? */ - case XCT_CLOSING: - if(ctx->phase != 3) - break; - XER_ADVANCE(ch_size); - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - if(ctx->phase != 1) - break; /* Really unexpected */ - - /* - * Search which inner member corresponds to this tag. - */ - for(edx = 0; edx < td->elements_count; edx++) { - elm = &td->elements[edx]; - tcv = xer_check_tag(buf_ptr,ch_size,elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - edx = td->elements_count; - break; /* Phase out */ - } - break; - } - if(edx != td->elements_count) - continue; - - /* It is expected extension */ - if(specs->ext_start != -1) { - ASN_DEBUG("Got anticipated extension"); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - ctx->phase = 3; /* Terminating */ - } else { - ctx->left = 1; - ctx->phase = 4; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" - " (ph=%d, tag=%s)", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - td->name, ctx->phase, xml_tag); - break; - } - - ctx->phase = 5; /* Phase out, just in case */ - RETURN(RC_FAIL); -} - - -asn_enc_rval_t -CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - unsigned present = 0; - - if(!sptr) - ASN__ENCODE_FAILED; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - if(present == 0 || present > td->elements_count) { - ASN__ENCODE_FAILED; - } else { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr = NULL; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - er.encoded = 0; - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + 1, flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -asn_dec_rval_t -CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted */ - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = uper_get_nsnnwn(pd); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) { - ASN_DEBUG("CHOICE presence from wire %d", value); - value = specs->from_canonical_order[value]; - ASN_DEBUG("CHOICE presence index effective %d", value); - } - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct; - const void *memb_ptr; - unsigned present; - int present_enc; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present == 0 || present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present_enc = specs->to_canonical_order[present]; - else - present_enc = present; - - if(ct && ct->range_bits >= 0) { - if(present_enc < ct->lower_bound - || present_enc > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG( - "CHOICE member %d (enc %d) is an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 1, 1)) - ASN__ENCODE_FAILED; - } else { - ASN__ENCODE_FAILED; - } - ct = 0; - } - } - if(ct && ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - if(per_put_few_bits(po, 0, 1)) - ASN__ENCODE_FAILED; - } - - - elm = &td->elements[present]; - ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, - present_enc); - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, present_enc, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) ASN__ENCODE_FAILED; - if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) - ASN__ENCODE_FAILED; - if(uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -asn_dec_rval_t -CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - const asn_per_constraint_t *ct; - const asn_per_constraint_t *ext_ct = NULL; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) { - ext_ct = ct; - ct = 0; /* Not restricted */ - } - } - - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - ASN__DECODE_FAILED; - } else { - if(specs->ext_start == -1) - ASN__DECODE_FAILED; - value = aper_get_nsnnwn(pd, ext_ct->range_bits); - if(value < 0) ASN__DECODE_STARVED; - value += specs->ext_start; - if((unsigned)value >= td->elements_count) - ASN__DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->from_canonical_order) - value = specs->from_canonical_order[value]; - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } else { - rv = aper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm; /* CHOICE's element */ - const asn_per_constraint_t *ct = NULL; - const asn_per_constraint_t *ext_ct = NULL; - const void *memb_ptr; - unsigned present; - int present_enc; - - if(!sptr) ASN__ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); - - if(constraints) ct = &constraints->value; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->value; - else ct = NULL; - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present <= 0 || (unsigned)present > td->elements_count) - ASN__ENCODE_FAILED; - else - present--; - - /* Adjust if canonical order is different from natural order */ - if(specs->to_canonical_order) - present_enc = specs->to_canonical_order[present]; - else - present_enc = present; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - if(ct && (ct->range_bits >= 0)) { - // Value is not within the range of the primary values ? - if(present < ct->lower_bound || present > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - ASN_DEBUG("CHOICE member %d (enc %d) is an extension (%ld..%ld)", - present, present_enc, ct->lower_bound, ct->upper_bound); - // X691/23.5 Extension marker = 1 - if(per_put_few_bits(po, 1, 1)) { - ASN__ENCODE_FAILED; - } - } else { - ASN__ENCODE_FAILED; - } - // no more need of constraint. - ext_ct = ct; - ct = NULL; - } - } - - if(ct && (ct->flags & APC_EXTENSIBLE)) { - ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", - present, present, ct->lower_bound, ct->upper_bound); - // X691.23.5 Extension marker = 0 - if(per_put_few_bits(po, 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) ASN__ENCODE_FAILED; - } else { - memb_ptr = (const char *)sptr + elm->memb_offset; - } - - if(ct && (ct->range_bits >= 0)) { - // By construction (ct != 0), the alternative value is a non extended one. - // X691/23.7 X691/23.6 alternative value encoded as a range_bits bits value. - if(per_put_few_bits(po, present_enc, ct->range_bits)) - ASN__ENCODE_FAILED; - - return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po); - } else { - asn_enc_rval_t rval = {0,0,0}; - if(specs->ext_start == -1) - ASN__ENCODE_FAILED; - // X691/23.8 normally encoded as a small non negative whole number - - if(ext_ct && aper_put_nsnnwn(po, ext_ct->range_bits, present_enc - specs->ext_start)) - ASN__ENCODE_FAILED; - if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, - memb_ptr, po)) - ASN__ENCODE_FAILED; - rval.encoded = 0; - ASN__ENCODED_OK(rval); - } -} - -int -CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - /* - * Print that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Print member's name and stuff */ - if(0) { - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - } - - return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, - cb, app_key); - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as CHOICE", td->name); - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - /* - * Free that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)ptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)ptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } -} - - -/* - * The following functions functions offer protection against -fshort-enums, - * compatible with little- and big-endian machines. - * If assertion is triggered, either disable -fshort-enums, or add an entry - * here with the ->pres_size of your target stracture. - * Unless the target structure is packed, the ".present" member - * is guaranteed to be aligned properly. ASN.1 compiler itself does not - * produce packed code. - */ -static unsigned -_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, - unsigned pres_size) { - const void *present_ptr; - unsigned present; - - present_ptr = ((const char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): present = *(const unsigned int *)present_ptr; break; - case sizeof(short): present = *(const unsigned short *)present_ptr; break; - case sizeof(char): present = *(const unsigned char *)present_ptr; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - return 0; /* If not aborted, pass back safe value */ - } - - return present; -} - -static void -_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, - unsigned present) { - void *present_ptr; - present_ptr = ((char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): *(unsigned int *)present_ptr = present; break; - case sizeof(short): *(unsigned short *)present_ptr = present; break; - case sizeof(char): *(unsigned char *)present_ptr = present; break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - } -} - -static const void * -_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_TYPE_member_t **elm_ptr, unsigned *present_out) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned present; - - if(!sptr) { - *elm_ptr = NULL; - *present_out = 0; - return NULL; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - *present_out = present; - - /* - * The presence index is intentionally 1-based to avoid - * treating zeroed structure as a valid one. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *const elm = &td->elements[present - 1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - *elm_ptr = elm; - return memb_ptr; - } else { - *elm_ptr = NULL; - return NULL; - } - -} - -int -CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { - asn_TYPE_member_t *aelm; - asn_TYPE_member_t *belm; - unsigned apresent = 0; - unsigned bpresent = 0; - const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); - const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); - - if(amember && bmember) { - if(apresent == bpresent) { - assert(aelm == belm); - return aelm->type->op->compare_struct(aelm->type, amember, bmember); - } else if(apresent < bpresent) { - return -1; - } else { - return 1; - } - } else if(!amember) { - return -1; - } else { - return 1; - } -} - -/* - * Return the 1-based choice variant presence index. - * Returns 0 in case of error. - */ -unsigned -CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); -} - -/* - * Sets or resets the 1-based choice variant presence index. - * In case a previous index is not zero, the currently selected structure - * member is freed and zeroed-out first. - * Returns 0 on success and -1 on error. - */ -int -CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, - unsigned present) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - unsigned old_present; - - if(!sptr) { - return -1; - } - - if(present > td->elements_count) - return -1; - - old_present = - _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); - if(present == old_present) - return 0; - - if(old_present != 0) { - assert(old_present <= td->elements_count); - ASN_STRUCT_RESET(*td, sptr); - } - - _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); - - return 0; -} - - -asn_random_fill_result_t -CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_CHOICE_specifics_t *specs = - (const asn_CHOICE_specifics_t *)td->specifics; - asn_random_fill_result_t res; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm; - unsigned present; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - void *st = *sptr; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - present = asn_random_between(1, td->elements_count); - elm = &td->elements[present - 1]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - res = elm->type->op->random_fill(elm->type, memb_ptr2, - &elm->encoding_constraints, max_length); - _set_present_idx(st, specs->pres_offset, specs->pres_size, present); - if(res.code == ARFILL_OK) { - *sptr = st; - } else { - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - } - - return res; -} - - -asn_TYPE_operation_t asn_OP_CHOICE = { - CHOICE_free, - CHOICE_print, - CHOICE_compare, - CHOICE_decode_ber, - CHOICE_encode_der, - CHOICE_decode_xer, - CHOICE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - CHOICE_decode_oer, - CHOICE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - CHOICE_decode_uper, - CHOICE_encode_uper, - CHOICE_decode_aper, - CHOICE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - CHOICE_random_fill, - CHOICE_outmost_tag -}; diff --git a/e2sim/src/ASN1c/constr_CHOICE.h b/e2sim/src/ASN1c/constr_CHOICE.h deleted file mode 100644 index a1999ed..0000000 --- a/e2sim/src/ASN1c/constr_CHOICE.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/constr_SEQUENCE.c b/e2sim/src/ASN1c/constr_SEQUENCE.c deleted file mode 100644 index 43dcac7..0000000 --- a/e2sim/src/ASN1c/constr_SEQUENCE.c +++ /dev/null @@ -1,2059 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * Check whether we are inside the extensions group. - */ -#define IN_EXTENSION_GROUP(specs, memb_idx) \ - ((specs)->first_extension >= 0 \ - && (unsigned)(specs)->first_extension <= (memb_idx)) - -/* - * Tags are canonically sorted in the tag2element map. - */ -static int -_t2e_cmp(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) { - if(a->el_no > b->el_no) - return 1; - /* - * Important: we do not check - * for a->el_no <= b->el_no! - */ - return 0; - } else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - - -/* - * The decoder of the SEQUENCE type. - */ -asn_dec_rval_t -SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - const asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* SEQUENCE element's index */ - - ASN_DEBUG("Decoding %s as SEQUENCE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next member from the list of - * this structure's elements. - * (ctx->step) stores the member being processed - * between invocations and the microphase {0,1} of parsing - * that member: - * step = ( * 2 + ). - */ - for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; - edx++, ctx->step = (ctx->step & ~1) + 2) { - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - ssize_t tag_len; /* Length of TLV's T */ - size_t opt_edx_end; /* Next non-optional element */ - size_t n; - int use_bsearch; - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" - " opt=%d ec=%d", - td->name, (int)ctx->left, edx, - elements[edx].flags, elements[edx].optional, - td->elements_count); - - if(ctx->left == 0 /* No more stuff is expected */ - && ( - /* Explicit OPTIONAL specification reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx))) { - ASN_DEBUG("End of SEQUENCE %s", td->name); - /* - * Found the legitimate end of the structure. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " - "(%s) is %s encoded in %d bytes, of frame %ld", - td->name, edx, elements[edx].name, - ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) { - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } else if(((const uint8_t *)ptr)[1] == 0) { - ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, - elements[edx].optional, td->elements_count); - if((edx + elements[edx].optional == td->elements_count) - || IN_EXTENSION_GROUP(specs, edx)) { - /* - * Yeah, baby! Found the terminator - * of the indefinite length structure. - */ - /* - * Proceed to the canonical - * finalization function. - * No advancing is necessary. - */ - goto phase3; - } - } - } - - /* - * Find the next available type with this tag. - */ - use_bsearch = 0; - opt_edx_end = edx + elements[edx].optional + 1; - if(opt_edx_end > td->elements_count) - opt_edx_end = td->elements_count; /* Cap */ - else if(opt_edx_end - edx > 8) { - /* Limit the scope of linear search... */ - opt_edx_end = edx + 8; - use_bsearch = 1; - /* ... and resort to bsearch() */ - } - for(n = edx; n < opt_edx_end; n++) { - if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { - /* - * Found element corresponding to the tag - * being looked at. - * Reposition over the right element. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].flags & ATF_ANY_TYPE) { - /* - * This is the ANY type, which may bear - * any flag whatsoever. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].tag == (ber_tlv_tag_t)-1) { - use_bsearch = 1; - break; - } - } - if(use_bsearch) { - /* - * Resort to a binary search over - * sorted array of tags. - */ - const asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key = {0, 0, 0, 0}; - key.el_tag = tlv_tag; - key.el_no = edx; - t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _t2e_cmp); - if(t2m) { - const asn_TYPE_tag2member_t *best = 0; - const asn_TYPE_tag2member_t *t2m_f, *t2m_l; - size_t edx_max = edx + elements[edx].optional; - /* - * Rewind to the first element with that tag, - * `cause bsearch() does not guarantee order. - */ - t2m_f = t2m + t2m->toff_first; - t2m_l = t2m + t2m->toff_last; - for(t2m = t2m_f; t2m <= t2m_l; t2m++) { - if(t2m->el_no > edx_max) break; - if(t2m->el_no < edx) continue; - best = t2m; - } - if(best) { - edx = best->el_no; - ctx->step = 1 + 2 * edx; - goto microphase2; - } - } - n = opt_edx_end; - } - if(n == opt_edx_end) { - /* - * If tag is unknown, it may be either - * an unknown (thus, incorrect) tag, - * or an extension (...), - * or an end of the indefinite-length structure. - */ - if(!IN_EXTENSION_GROUP(specs, - edx + elements[edx].optional)) { - ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - ASN_DEBUG("Expected tag %s (%s)%s", - ber_tlv_tag_string(elements[edx].tag), - elements[edx].name, - elements[edx].optional - ?" or alternatives":""); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - edx += elements[edx].optional; - - ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", - ber_tlv_tag_string(tlv_tag), edx); - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - ASN_DEBUG("Skip length %d in %s", - (int)skip, td->name); - switch(skip) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - ctx->step -= 2; - edx--; - continue; /* Try again with the next tag */ - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elements[edx].flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elements[edx].memb_offset; - memb_ptr2 = &memb_ptr; - } - /* - * Invoke the member fetch routine according to member's type - */ - if(elements[edx].flags & ATF_OPEN_TYPE) { - rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); - } else { - rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, - elements[edx].type, - memb_ptr2, ptr, LEFT, - elements[edx].tag_mode); - } - ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " - "in %d bytes rval.code %d, size=%d", - td->name, edx, elements[edx].type->name, - (int)LEFT, (int)rval.consumed, rval.code, (int)size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", - (long)ctx->left, (long)size); - /* Fall through */ - case RC_FAIL: /* Fatal error */ - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all structure members) */ - - phase3: - ctx->phase = 3; - /* Fall through */ - case 3: /* 00 and other tags expected */ - case 4: /* only 00's expected */ - - ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", - td->name, (long)ctx->left, (long)size); - - /* - * Skip everything until the end of the SEQUENCE. - */ - while(ctx->left) { - ssize_t tl, ll; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - /* - * If expected <0><0>... - */ - if(ctx->left < 0 - && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - ctx->phase = 4; - continue; - } - } - - if(!IN_EXTENSION_GROUP(specs, td->elements_count) - || ctx->phase == 4) { - ASN_DEBUG("Unexpected continuation " - "of a non-extensible type " - "%s (SEQUENCE): %s", - td->name, - ber_tlv_tag_string(tlv_tag)); - RETURN(RC_FAIL); - } - - ll = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tl, LEFT - tl); - switch(ll) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - ADVANCE(tl + ll); - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - - -/* - * The DER encoder of the SEQUENCE type. - */ -asn_enc_rval_t -SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t computed_size = 0; - asn_enc_rval_t erval = {0,0,0}; - ssize_t ret; - size_t edx; - - ASN_DEBUG("%s %s as SEQUENCE", - cb?"Encoding":"Estimating", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", - edx, elm->name, (long)erval.encoded); - } - - /* - * Encode the TLV for the sequence itself. - */ - ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); - if(ret == -1) - ASN__ENCODE_FAILED; - erval.encoded = computed_size + ret; - - if(!cb) ASN__ENCODED_OK(erval); - - /* - * Encode all members. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - asn_enc_rval_t tmperval = {0,0,0}; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) continue; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, - elm->tag_mode, elm->tag, cb, app_key); - if(tmperval.encoded == -1) - return tmperval; - computed_size -= tmperval.encoded; - ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", - edx, elm->name, td->name, (long)tmperval.encoded); - } - - if(computed_size != 0) - /* - * Encoded size is not equal to the computed size. - */ - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(erval); -} - - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) \ - do { \ - size_t num = (num_bytes); \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - size_t edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Skipping unknown extensions. - * Phase 4: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 3;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the inner member of a sequence. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr_dontuse; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr_dontuse = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ - } - - if(elm->flags & ATF_OPEN_TYPE) { - tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); - } else { - /* Invoke the inner type decoder, m.b. multiple times */ - tmprval = elm->type->op->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - ptr, size); - } - XER_ADVANCE(tmprval.consumed); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 1; /* Back to body processing */ - ctx->step = ++edx; - ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", - ctx->phase, ctx->step); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", - tcv, ctx->phase, xml_tag); - - /* Skip the extensions section */ - if(ctx->phase == 3) { - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 4; - RETURN(RC_FAIL); - case 0: - XER_ADVANCE(ch_size); - continue; - case 1: - XER_ADVANCE(ch_size); - ctx->phase = 1; - continue; - case 2: - ctx->phase = 1; - break; - } - } - - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - if(edx >= td->elements_count || - /* Explicit OPTIONAL specs reaches the end */ - (edx + elements[edx].optional == td->elements_count) || - /* All extensions are optional */ - IN_EXTENSION_GROUP(specs, edx)) { - XER_ADVANCE(ch_size); - ctx->phase = 4; /* Phase out */ - RETURN(RC_OK); - } else { - ASN_DEBUG("Premature end of XER SEQUENCE"); - RETURN(RC_FAIL); - } - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", - tcv, ctx->phase, edx); - if(ctx->phase != 1) { - break; /* Really unexpected */ - } - - if(edx < td->elements_count) { - /* - * Search which member corresponds to this tag. - */ - size_t n; - size_t edx_end = edx + elements[edx].optional + 1; - if(edx_end > td->elements_count) - edx_end = td->elements_count; - for(n = edx; n < edx_end; n++) { - elm = &td->elements[n]; - tcv = xer_check_tag(ptr, ch_size, elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx = n; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - n = edx_end; - break; /* Phase out */ - } - break; - } - if(n != edx_end) - continue; - } else { - ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", - edx, td->elements_count); - } - - /* It is expected extension */ - if(IN_EXTENSION_GROUP(specs, - edx + (edx < td->elements_count - ? elements[edx].optional : 0))) { - ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", - edx); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - } else { - ctx->left = 1; - ctx->phase = 3; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", - size>0?((const char *)ptr)[0]:'.', - size>1?((const char *)ptr)[1]:'.', - size>2?((const char *)ptr)[2]:'.', - size>3?((const char *)ptr)[3]:'.', - size>4?((const char *)ptr)[4]:'.', - size>5?((const char *)ptr)[5]:'.'); - break; - } - - ctx->phase = 4; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - -asn_enc_rval_t -SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - int xcan = (flags & XER_F_CANONICAL); - asn_TYPE_descriptor_t *tmp_def_val_td = 0; - void *tmp_def_val = 0; - size_t edx; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_enc_rval_t tmper = {0,0,0}; - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = - *(const void *const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - assert(tmp_def_val == 0); - if(elm->default_value_set) { - if(elm->default_value_set(&tmp_def_val)) { - ASN__ENCODE_FAILED; - } else { - memb_ptr = tmp_def_val; - tmp_def_val_td = elm->type; - } - } else if(elm->optional) { - continue; - } else { - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - /* Print the member itself */ - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmp_def_val) { - ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - tmp_def_val = 0; - } - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("", 1); - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); - ASN__ENCODE_FAILED; -} - -int -SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t edx; - int ret; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) continue; - /* Print line */ - /* Fall through */ - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Indentation */ - _i_INDENT(1); - - /* Print the member's name and stuff */ - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - - /* Print the member itself */ - ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, - cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, - enum asn_struct_free_method method) { - size_t edx; - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_struct_ctx_t *ctx; /* Decoder context */ - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as SEQUENCE", td->name); - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - /* Clean parsing context */ - ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); - FREEMEM(ctx->ptr); - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(sptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset( - sptr, 0, - ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); - break; - } -} - -int -SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - size_t edx; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Iterate over structure members and check their validity. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - continue; - ASN__CTFAIL(app_key, td, sptr, - "%s: mandatory element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->encoding_constraints.general_constraints) { - int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - if(ret) return ret; - } else { - return elm->type->encoding_constraints.general_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - } - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; - edx < (specs->first_extension < 0 ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - assert(!IN_EXTENSION_GROUP(specs, edx)); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = uper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, (long)bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, - *memb_ptr2); - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: break; - case 0: continue; - default: - if(uper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - ASN_DEBUG("Skipped overflow extension"); - continue; - } - break; - } - - FREEMEM(epres); - } - - if(specs->first_extension >= 0) { - unsigned i; - /* Fill DEFAULT members in extensions */ - for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; - i++) { - asn_TYPE_member_t *elm; - void **memb_ptr2; /* Pointer to member pointer */ - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) { - return -1; - } - /* Encode as open type field */ - if(po2 && present - && uper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, - *memb_ptr2, po2)) - return -1; - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(*memb_ptr2) == 0) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void *const *memb_ptr2; /* Pointer to that pointer */ - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = - (const void *const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) - continue; - - ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, - po); - if(er.encoded == -1) return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of extensions %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(uper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -asn_dec_rval_t -SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - size_t edx; - - (void)constraints; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); - - /* Handle extensions */ - if(specs->first_extension < 0) { - extpresent = 0; - } else { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) ASN__DECODE_STARVED; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) ASN__DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - ASN__DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ -#if 0 - int padding; -#endif - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } -#if 0 - /* Get Padding */ - padding = (8 - (pd->moved % 8)) % 8; - if(padding > 0) - ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); -#if 0 /* old way of removing padding */ - per_get_few_bits(pd, padding); -#else /* Experimental fix proposed by @mhanna123 */ - if(edx != (td->elements_count-1)) - per_get_few_bits(pd, padding); - else { - if(specs->roms_count && (padding > 0)) - ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); - else - per_get_few_bits(pd, padding); - } -#endif /* dealing with padding */ -#endif - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value_set) { - /* Fill-in DEFAULT */ - if(elm->default_value_set(memb_ptr2)) { - FREEMEM(opres); - ASN__DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); - - if(elm->flags & ATF_OPEN_TYPE) { - rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); - } else { - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - } - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = aper_get_nslength(pd); - if(bmlength < 0) ASN__DECODE_STARVED; - - ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) ASN__DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) - ASN__DECODE_STARVED; - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%ld is not extension", edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); - rv = aper_open_type_get(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: - break; - case 0: - continue; - default: - if(aper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - ASN__DECODE_STARVED; - } - } - break; - } - - FREEMEM(epres); - } - - /* Fill DEFAULT members in extensions */ - for(edx = specs->roms_count; edx < specs->roms_count - + specs->aoms_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void **memb_ptr2; /* Pointer to member pointer */ - - if(!elm->default_value_set) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value_set(memb_ptr2)) { - ASN__DECODE_FAILED; - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, - const void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - size_t edx; - - if(specs->first_extension < 0) { - return 0; - } - - /* Find out which extensions are present */ - for(edx = specs->first_extension; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s (@%ld) present => %d", - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) - return -1; - /* Encode as open type field */ - if(po2 && present && aper_open_type_put(elm->type, - elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) - return -1; - - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_SEQUENCE_specifics_t *specs - = (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er = {0,0,0}; - int n_extensions; - size_t edx; - size_t i; - - (void)constraints; - - if(!sptr) - ASN__ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->first_extension < 0) { - n_extensions = 0; /* There are no extensions to encode */ - } else { - n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); - if(n_extensions < 0) ASN__ENCODE_FAILED; - if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { - ASN__ENCODE_FAILED; - } - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value_cmp - && elm->default_value_cmp(memb_ptr2) == 1) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value_cmp ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - ASN__ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, - td->elements_count); - for(edx = 0; - edx < ((specs->first_extension < 0) ? td->elements_count - : (size_t)specs->first_extension); - edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; /* Pointer to the member */ - const void * const *memb_ptr2; /* Pointer to that pointer */ - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %ld not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - ASN__ENCODE_FAILED; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) - continue; - - ASN_DEBUG("Encoding %s->%s", td->name, elm->name); - er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, - *memb_ptr2, po); - if(er.encoded == -1) - return er; - } - - /* No extensions to encode */ - if(!n_extensions) ASN__ENCODED_OK(er); - - ASN_DEBUG("Length of %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(aper_put_nslength(po, n_extensions)) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) - ASN__ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) - ASN__ENCODE_FAILED; - - ASN__ENCODED_OK(er); -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - size_t edx; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *amemb; - const void *bmemb; - int ret; - - if(elm->flags & ATF_POINTER) { - amemb = - *(const void *const *)((const char *)aptr + elm->memb_offset); - bmemb = - *(const void *const *)((const char *)bptr + elm->memb_offset); - if(!amemb) { - if(!bmemb) continue; - if(elm->default_value_cmp - && elm->default_value_cmp(bmemb) == 0) { - /* A is absent, but B is present and equal to DEFAULT */ - continue; - } - return -1; - } else if(!bmemb) { - if(elm->default_value_cmp - && elm->default_value_cmp(amemb) == 0) { - /* B is absent, but A is present and equal to DEFAULT */ - continue; - } - return 1; - } - } else { - amemb = (const void *)((const char *)aptr + elm->memb_offset); - bmemb = (const void *)((const char *)bptr + elm->memb_offset); - } - - ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); - if(ret != 0) return ret; - } - - return 0; -} - -asn_TYPE_operation_t asn_OP_SEQUENCE = { - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_compare, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_decode_oer, - SEQUENCE_encode_oer, -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_decode_uper, - SEQUENCE_encode_uper, - SEQUENCE_decode_aper, - SEQUENCE_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constr, - size_t max_length) { - const asn_SEQUENCE_specifics_t *specs = - (const asn_SEQUENCE_specifics_t *)td->specifics; - asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - void *st = *sptr; - size_t edx; - - if(max_length == 0) return result_skipped; - - (void)constr; - - if(st == NULL) { - st = CALLOC(1, specs->struct_size); - if(st == NULL) { - return result_failed; - } - } - - for(edx = 0; edx < td->elements_count; edx++) { - const asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - asn_random_fill_result_t tmpres; - - if(elm->optional && asn_random_between(0, 4) == 2) { - /* Sometimes decide not to fill the optional value */ - continue; - } - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - tmpres = elm->type->op->random_fill( - elm->type, memb_ptr2, &elm->encoding_constraints, - max_length > result_ok.length ? max_length - result_ok.length : 0); - switch(tmpres.code) { - case ARFILL_OK: - result_ok.length += tmpres.length; - continue; - case ARFILL_SKIPPED: - assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); - continue; - case ARFILL_FAILED: - if(st == *sptr) { - ASN_STRUCT_RESET(*td, st); - } else { - ASN_STRUCT_FREE(*td, st); - } - return tmpres; - } - } - - *sptr = st; - - return result_ok; -} - diff --git a/e2sim/src/ASN1c/constr_SEQUENCE.h b/e2sim/src/ASN1c/constr_SEQUENCE.h deleted file mode 100644 index a22ed3a..0000000 --- a/e2sim/src/ASN1c/constr_SEQUENCE.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/constr_SEQUENCE_OF.c b/e2sim/src/ASN1c/constr_SEQUENCE_OF.c deleted file mode 100644 index 10f18cf..0000000 --- a/e2sim/src/ASN1c/constr_SEQUENCE_OF.c +++ /dev/null @@ -1,358 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The DER encoder of the SEQUENCE OF type. - */ -asn_enc_rval_t -SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - asn_enc_rval_t erval = {0,0,0}; - int edx; - - ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - } - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, - cb, app_key); - if(encoding_size == -1) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - return erval; - } - - computed_size += encoding_size; - if(!cb) { - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->op->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - cb, app_key); - if(erval.encoded == -1) - return erval; - encoding_size += erval.encoded; - } - - if(computed_size != (size_t)encoding_size) { - /* - * Encoded size is not equal to the computed size. - */ - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - } else { - erval.encoded = computed_size; - erval.structure_ptr = 0; - erval.failed_type = 0; - } - - return erval; -} - -asn_enc_rval_t -SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 - : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_enc_rval_t -SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - const asn_TYPE_member_t *elm = td->elements; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->uper_encoder( - elm->type, elm->encoding_constraints.per_constraints, memb_ptr, - po); - if(er.encoded == -1) ASN__ENCODE_FAILED; - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - ASN__ENCODED_OK(er); -} - -asn_enc_rval_t -SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - const asn_anonymous_sequence_ *list; - const asn_per_constraint_t *ct; - asn_enc_rval_t er = {0,0,0}; - asn_TYPE_member_t *elm = td->elements; - int seq; - - if(!sptr) ASN__ENCODE_FAILED; - list = _A_CSEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = (list->count < ct->lower_bound - || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", - ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) - ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) - ASN__ENCODE_FAILED; - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ -/* if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; -*/ - if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) - ASN__ENCODE_FAILED; - } - - for(seq = -1; seq < list->count;) { - ssize_t mayEncode; - if(seq < 0) seq = 0; - if(ct && ct->effective_bits >= 0) { - mayEncode = list->count; - } else { - mayEncode = aper_put_length(po, -1, list->count - seq); - if(mayEncode < 0) ASN__ENCODE_FAILED; - } - - while(mayEncode--) { - void *memb_ptr = list->array[seq++]; - if(!memb_ptr) ASN__ENCODE_FAILED; - er = elm->type->op->aper_encoder(elm->type, - elm->encoding_constraints.per_constraints, memb_ptr, po); - if(er.encoded == -1) - ASN__ENCODE_FAILED; - } - } - - ASN__ENCODED_OK(er); -} -#endif /* ASN_DISABLE_PER_SUPPORT */ - -int -SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); - const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); - ssize_t idx; - - if(a && b) { - ssize_t common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, a->array[idx], b->array[idx]); - if(ret) return ret; - } - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { - SEQUENCE_OF_free, - SEQUENCE_OF_print, - SEQUENCE_OF_compare, - SEQUENCE_OF_decode_ber, - SEQUENCE_OF_encode_der, - SEQUENCE_OF_decode_xer, - SEQUENCE_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ - SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ -#endif /* ASN_DISABLE_OER_SUPPORT */ -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ - SEQUENCE_OF_encode_uper, - SEQUENCE_OF_decode_aper, - SEQUENCE_OF_encode_aper, -#endif /* ASN_DISABLE_PER_SUPPORT */ - SEQUENCE_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - diff --git a/e2sim/src/ASN1c/constr_SEQUENCE_OF.h b/e2sim/src/ASN1c/constr_SEQUENCE_OF.h deleted file mode 100644 index 6857f0f..0000000 --- a/e2sim/src/ASN1c/constr_SEQUENCE_OF.h +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/constr_SET_OF.c b/e2sim/src/ASN1c/constr_SET_OF.c deleted file mode 100644 index bf1dc27..0000000 --- a/e2sim/src/ASN1c/constr_SET_OF.c +++ /dev/null @@ -1,1441 +0,0 @@ -/* - * Copyright (c) 2003-2017 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * The decoder of the SET OF type. - */ -asn_dec_rval_t -SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as SET OF", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - ASN_DEBUG("Structure consumes %ld bytes, " - "buffer %ld", (long)ctx->left, (long)size); - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next item. - */ - for(;; ctx->step = 0) { - ssize_t tag_len; /* Length of TLV's T */ - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - - if(ctx->left == 0) { - ASN_DEBUG("End of SET OF %s", td->name); - /* - * No more things to decode. - * Exit out of here. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tag_len) { - case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Found the terminator of the - * indefinite length structure. - */ - break; - } - } - - /* Outmost tag may be unknown and cannot be fetched/compared */ - if(elm->tag != (ber_tlv_tag_t)-1) { - if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { - /* - * The new list member of expected type has arrived. - */ - } else { - ASN_DEBUG("Unexpected tag %s fixed SET OF %s", - ber_tlv_tag_string(tlv_tag), td->name); - ASN_DEBUG("%s SET OF has tag %s", - td->name, ber_tlv_tag_string(elm->tag)); - RETURN(RC_FAIL); - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ - microphase2: - - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->op->ber_decoder(opt_codec_ctx, - elm->type, &ctx->ptr, ptr, LEFT, 0); - ASN_DEBUG("In %s SET OF %s code %d consumed %d", - td->name, elm->type->name, - rval.code, (int)rval.consumed); - switch(rval.code) { - case RC_OK: - { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - else - ctx->ptr = 0; - } - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - /* Fall through */ - case RC_FAIL: /* Fatal error */ - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all list members) */ - - NEXT_PHASE(ctx); - case 2: - /* - * Read in all "end of content" TLVs. - */ - while(ctx->left < 0) { - if(LEFT < 2) { - if(LEFT > 0 && ((const char *)ptr)[0] != 0) { - /* Unexpected tag */ - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } - if(((const char *)ptr)[0] == 0 - && ((const char *)ptr)[1] == 0) { - ADVANCE(2); - ctx->left++; - } else { - RETURN(RC_FAIL); - } - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - -/* - * Internally visible buffer holding a single encoded element. - */ -struct _el_buffer { - uint8_t *buf; - size_t length; - size_t allocated_size; - unsigned bits_unused; -}; -/* Append bytes to the above structure */ -static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { - struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; - - if(el_buf->length + size > el_buf->allocated_size) { - size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; - void *p; - - do { - new_size <<= 2; - } while(el_buf->length + size > new_size); - - p = REALLOC(el_buf->buf, new_size); - if(p) { - el_buf->buf = p; - el_buf->allocated_size = new_size; - } else { - return -1; - } - } - - memcpy(el_buf->buf + el_buf->length, buffer, size); - - el_buf->length += size; - return 0; -} - -static void assert_unused_bits(const struct _el_buffer* p) { - if(p->length) { - assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); - } else { - assert(p->bits_unused == 0); - } -} - -static int _el_buf_cmp(const void *ap, const void *bp) { - const struct _el_buffer *a = (const struct _el_buffer *)ap; - const struct _el_buffer *b = (const struct _el_buffer *)bp; - size_t common_len; - int ret = 0; - - if(a->length < b->length) - common_len = a->length; - else - common_len = b->length; - - if (a->buf && b->buf) { - ret = memcmp(a->buf, b->buf, common_len); - } - if(ret == 0) { - if(a->length < b->length) - ret = -1; - else if(a->length > b->length) - ret = 1; - /* Ignore unused bits. */ - assert_unused_bits(a); - assert_unused_bits(b); - } - - return ret; -} - -static void -SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { - size_t i; - - for(i = 0; i < count; i++) { - FREEMEM(el_buf[i].buf); - } - - FREEMEM(el_buf); -} - -enum SET_OF__encode_method { - SOES_DER, /* Distinguished Encoding Rules */ - SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ -}; - -static struct _el_buffer * -SET_OF__encode_sorted(const asn_TYPE_member_t *elm, - const asn_anonymous_set_ *list, - enum SET_OF__encode_method method) { - struct _el_buffer *encoded_els; - int edx; - - encoded_els = - (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); - if(encoded_els == NULL) { - return NULL; - } - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - const void *memb_ptr = list->array[edx]; - struct _el_buffer *encoding_el = &encoded_els[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) break; - - /* - * Encode the member into the prepared space. - */ - switch(method) { - case SOES_DER: - erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, - _el_addbytes, encoding_el); - break; - case SOES_CUPER: - erval = uper_encode(elm->type, - elm->encoding_constraints.per_constraints, - memb_ptr, _el_addbytes, encoding_el); - if(erval.encoded != -1) { - size_t extra_bits = erval.encoded % 8; - assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); - encoding_el->bits_unused = (8 - extra_bits) & 0x7; - } - break; - default: - assert(!"Unreachable"); - break; - } - if(erval.encoded < 0) break; - } - - if(edx == list->count) { - /* - * Sort the encoded elements according to their encoding. - */ - qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); - - return encoded_els; - } else { - SET_OF__encode_sorted_free(encoded_els, edx); - return NULL; - } -} - - -/* - * The DER encoder of the SET OF type. - */ -asn_enc_rval_t -SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, - int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, - void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - struct _el_buffer *encoded_els; - int edx; - - ASN_DEBUG("Estimating size for SET OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - asn_enc_rval_t erval = {0,0,0}; - - if(!memb_ptr) ASN__ENCODE_FAILED; - - erval = - elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); - if(erval.encoded == -1) return erval; - computed_size += erval.encoded; - } - - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = - der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - if(encoding_size < 0) { - ASN__ENCODE_FAILED; - } - computed_size += encoding_size; - - if(!cb || list->count == 0) { - asn_enc_rval_t erval = {0,0,0}; - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of %s SET OF", td->name); - - /* - * DER mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the - * encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); - - /* - * Report encoded elements to the application. - * Dispose of temporary sorted members table. - */ - for(edx = 0; edx < list->count; edx++) { - struct _el_buffer *encoded_el = &encoded_els[edx]; - /* Report encoded chunks to the application */ - if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { - break; - } else { - encoding_size += encoded_el->length; - } - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if(edx == list->count) { - asn_enc_rval_t erval = {0,0,0}; - assert(computed_size == (size_t)encoding_size); - erval.encoded = computed_size; - ASN__ENCODED_OK(erval); - } else { - ASN__ENCODE_FAILED; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = ((const char *)buf_ptr) + num;\ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *element = td->elements; - const char *elm_tag; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval = {RC_OK, 0};/* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* Which tag is expected for the downstream */ - if(specs->as_XMLValueList) { - elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; - } else { - elm_tag = (*element->name) - ? element->name : element->type->xml_tag; - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - */ - for(; ctx->phase <= 2;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Go inside the inner member of a set. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval = {RC_OK, 0}; - - /* Invoke the inner type decoder, m.b. multiple times */ - ASN_DEBUG("XER/SET OF element [%s]", elm_tag); - tmprval = element->type->op->xer_decoder(opt_codec_ctx, - element->type, &ctx->ptr, elm_tag, - buf_ptr, size); - if(tmprval.code == RC_OK) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - ctx->ptr = 0; - XER_ADVANCE(tmprval.consumed); - } else { - XER_ADVANCE(tmprval.consumed); - RETURN(tmprval.code); - } - ctx->phase = 1; /* Back to body processing */ - ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, - buf_ptr, size, &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", - tcv, ctx->phase, xml_tag); - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - /* No more things to decode */ - XER_ADVANCE(ch_size); - ctx->phase = 3; /* Phase out */ - RETURN(RC_OK); - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); - if(ctx->phase == 1) { - /* - * Process a single possible member. - */ - ctx->phase = 2; - continue; - } - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SET OF"); - break; - } - - ctx->phase = 3; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - - - -typedef struct xer_tmp_enc_s { - void *buffer; - size_t offset; - size_t size; -} xer_tmp_enc_t; -static int -SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { - xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; - if(t->offset + size >= t->size) { - size_t newsize = (t->size << 2) + size; - void *p = REALLOC(t->buffer, newsize); - if(!p) return -1; - t->buffer = p; - t->size = newsize; - } - memcpy((char *)t->buffer + t->offset, buffer, size); - t->offset += size; - return 0; -} -static int -SET_OF_xer_order(const void *aptr, const void *bptr) { - const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; - const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; - size_t minlen = a->offset; - int ret; - if(b->offset < minlen) minlen = b->offset; - /* Well-formed UTF-8 has this nice lexicographical property... */ - ret = memcmp(a->buffer, b->buffer, minlen); - if(ret != 0) return ret; - if(a->offset == b->offset) - return 0; - if(a->offset == minlen) - return -1; - return 1; -} - - -asn_enc_rval_t -SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0,0,0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - xer_tmp_enc_t *encs = 0; - size_t encs_count = 0; - void *original_app_key = app_key; - asn_app_consume_bytes_f *original_cb = cb; - int i; - - if(!sptr) ASN__ENCODE_FAILED; - - if(xcan) { - encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); - if(!encs) ASN__ENCODE_FAILED; - cb = SET_OF_encode_xer_callback; - } - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper = {0,0,0}; - - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(encs) { - memset(&encs[encs_count], 0, sizeof(encs[0])); - app_key = &encs[encs_count]; - encs_count++; - } - - if(mname) { - if(!xcan) ASN__TEXT_INDENT(1, ilevel); - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - if(!xcan && specs->as_XMLValueList == 1) - ASN__TEXT_INDENT(1, ilevel + 1); - tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, - ilevel + (specs->as_XMLValueList != 2), - flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - ASN__CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - ASN__CALLBACK3("", 1); - } - - } - - if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); - - if(encs) { - xer_tmp_enc_t *enc = encs; - xer_tmp_enc_t *end = encs + encs_count; - ssize_t control_size = 0; - - er.encoded = 0; - cb = original_cb; - app_key = original_app_key; - qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); - - for(; enc < end; enc++) { - ASN__CALLBACK(enc->buffer, enc->offset); - FREEMEM(enc->buffer); - enc->buffer = 0; - control_size += enc->offset; - } - assert(control_size == er.encoded); - } - - goto cleanup; -cb_failed: - ASN__ENCODE_FAILED; -cleanup: - if(encs) { - size_t n; - for(n = 0; n < encs_count; n++) { - FREEMEM(encs[n].buffer); - } - FREEMEM(encs); - } - ASN__ENCODED_OK(er); -} - -int -SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int ret; - int i; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - _i_INDENT(1); - - ret = elm->type->op->print_struct(elm->type, memb_ptr, - ilevel + 1, cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, - enum asn_struct_free_method method) { - if(td && ptr) { - const asn_SET_OF_specifics_t *specs; - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); - asn_struct_ctx_t *ctx; /* Decoder context */ - int i; - - /* - * Could not use set_of_empty() because of (*free) - * incompatibility. - */ - for(i = 0; i < list->count; i++) { - void *memb_ptr = list->array[i]; - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } - list->count = 0; /* No meaningful elements left */ - - asn_set_empty(list); /* Remove (list->array) */ - - specs = (const asn_SET_OF_specifics_t *)td->specifics; - ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); - if(ctx->ptr) { - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - } - - switch(method) { - case ASFM_FREE_EVERYTHING: - FREEMEM(ptr); - break; - case ASFM_FREE_UNDERLYING: - break; - case ASFM_FREE_UNDERLYING_AND_RESET: - memset(ptr, 0, specs->struct_size); - break; - } - } -} - -int -SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const asn_TYPE_member_t *elm = td->elements; - asn_constr_check_f *constr; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int i; - - if(!sptr) { - ASN__CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - constr = elm->encoding_constraints.general_constraints; - if(!constr) constr = elm->type->encoding_constraints.general_constraints; - - /* - * Iterate over the members of an array. - * Validate each in turn, until one fails. - */ - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - int ret; - - if(!memb_ptr) continue; - - ret = constr(elm->type, memb_ptr, ctfailcb, app_key); - if(ret) return ret; - } - - return 0; -} - -#ifndef ASN_DISABLE_PER_SUPPORT - -asn_dec_rval_t -SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = per_get_few_bits(pd, ct->effective_bits); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = uper_get_length(pd, -1, 0, &repeat); - ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", - nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) { - if(rv.consumed == 0 && nelems > 200) { - /* Protect from SET OF NULL compression bombs. */ - ASN__DECODE_FAILED; - } - continue; - } - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -asn_enc_rval_t -SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - const asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - const asn_TYPE_member_t *elm = td->elements; - struct _el_buffer *encoded_els; - asn_enc_rval_t er = {0,0,0}; - size_t encoded_edx; - - if(!sptr) ASN__ENCODE_FAILED; - - list = _A_CSET_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = - (list->count < ct->lower_bound || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) { - ASN__ENCODE_FAILED; - } - - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - ASN__ENCODE_FAILED; - } else if(list->count == 0) { - /* When the list is empty add only the length determinant - * X.691, #20.6 and #11.9.4.1 - */ - if (uper_put_length(po, 0, 0)) { - ASN__ENCODE_FAILED; - } - ASN__ENCODED_OK(er); - } - - - /* - * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the encoded elements. - */ - encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); - - for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { - ssize_t may_encode; - size_t edx; - int need_eom = 0; - - if(ct && ct->effective_bits >= 0) { - may_encode = list->count; - } else { - may_encode = - uper_put_length(po, list->count - encoded_edx, &need_eom); - if(may_encode < 0) ASN__ENCODE_FAILED; - } - - for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { - const struct _el_buffer *el = &encoded_els[edx]; - if(asn_put_many_bits(po, el->buf, - (8 * el->length) - el->bits_unused) < 0) { - break; - } - } - - if(need_eom && uper_put_length(po, 0, 0)) - ASN__ENCODE_FAILED; /* End of Message length */ - - encoded_edx += may_encode; - } - - SET_OF__encode_sorted_free(encoded_els, list->count); - - if((ssize_t)encoded_edx == list->count) { - ASN__ENCODED_OK(er); - } else { - ASN__ENCODE_FAILED; - } -} - -asn_dec_rval_t -SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv = {RC_OK, 0}; - const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; - const asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - const asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) - ASN__DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) ASN__DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->encoding_constraints.per_constraints) - ct = &td->encoding_constraints.per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) ASN__DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) ASN__DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, - ct ? ct->effective_bits : -1, &repeat); - ASN_DEBUG("Got to decode %d elements (eff %d)", - (int)nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) ASN__DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, - elm->encoding_constraints.per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) - continue; - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - -#endif /* ASN_DISABLE_PER_SUPPORT */ - -struct comparable_ptr { - const asn_TYPE_descriptor_t *td; - const void *sptr; -}; - -static int -SET_OF__compare_cb(const void *aptr, const void *bptr) { - const struct comparable_ptr *a = aptr; - const struct comparable_ptr *b = bptr; - assert(a->td == b->td); - return a->td->op->compare_struct(a->td, a->sptr, b->sptr); -} - -int -SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, - const void *bptr) { - const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); - const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); - - if(a && b) { - struct comparable_ptr *asorted; - struct comparable_ptr *bsorted; - ssize_t common_length; - ssize_t idx; - - if(a->count == 0) { - if(b->count) return -1; - return 0; - } else if(b->count == 0) { - return 1; - } - - asorted = MALLOC(a->count * sizeof(asorted[0])); - bsorted = MALLOC(b->count * sizeof(bsorted[0])); - if(!asorted || !bsorted) { - FREEMEM(asorted); - FREEMEM(bsorted); - return -1; - } - - for(idx = 0; idx < a->count; idx++) { - asorted[idx].td = td->elements->type; - asorted[idx].sptr = a->array[idx]; - } - - for(idx = 0; idx < b->count; idx++) { - bsorted[idx].td = td->elements->type; - bsorted[idx].sptr = b->array[idx]; - } - - qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); - qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); - - common_length = (a->count < b->count ? a->count : b->count); - for(idx = 0; idx < common_length; idx++) { - int ret = td->elements->type->op->compare_struct( - td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); - if(ret) { - FREEMEM(asorted); - FREEMEM(bsorted); - return ret; - } - } - - FREEMEM(asorted); - FREEMEM(bsorted); - - if(idx < b->count) /* more elements in b */ - return -1; /* a is shorter, so put it first */ - if(idx < a->count) return 1; - } else if(!a) { - return -1; - } else if(!b) { - return 1; - } - - return 0; -} - - -asn_TYPE_operation_t asn_OP_SET_OF = { - SET_OF_free, - SET_OF_print, - SET_OF_compare, - SET_OF_decode_ber, - SET_OF_encode_der, - SET_OF_decode_xer, - SET_OF_encode_xer, -#ifdef ASN_DISABLE_OER_SUPPORT - 0, - 0, -#else - SET_OF_decode_oer, - SET_OF_encode_oer, -#endif -#ifdef ASN_DISABLE_PER_SUPPORT - 0, - 0, - 0, - 0, -#else - SET_OF_decode_uper, - SET_OF_encode_uper, - SET_OF_decode_aper, - 0, /* SET_OF_encode_aper */ -#endif /* ASN_DISABLE_PER_SUPPORT */ - SET_OF_random_fill, - 0 /* Use generic outmost tag fetcher */ -}; - - -asn_random_fill_result_t -SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, - const asn_encoding_constraints_t *constraints, - size_t max_length) { - const asn_SET_OF_specifics_t *specs = - (const asn_SET_OF_specifics_t *)td->specifics; - asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; - asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; - asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; - const asn_TYPE_member_t *elm = td->elements; - void *st = *sptr; - long max_elements = 5; - long slb = 0; /* Lower size bound */ - long sub = 0; /* Upper size bound */ - size_t rnd_len; - - if(max_length == 0) return result_skipped; - - if(st == NULL) { - st = (*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) { - return result_failed; - } - } - - switch(asn_random_between(0, 6)) { - case 0: max_elements = 0; break; - case 1: max_elements = 1; break; - case 2: max_elements = 5; break; - case 3: max_elements = max_length; break; - case 4: max_elements = max_length / 2; break; - case 5: max_elements = max_length / 4; break; - default: break; - } - sub = slb + max_elements; - - if(!constraints || !constraints->per_constraints) - constraints = &td->encoding_constraints; - if(constraints->per_constraints) { - const asn_per_constraint_t *pc = &constraints->per_constraints->size; - if(pc->flags & APC_SEMI_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->lower_bound + max_elements; - } else if(pc->flags & APC_CONSTRAINED) { - slb = pc->lower_bound; - sub = pc->upper_bound; - if(sub - slb > max_elements) sub = slb + max_elements; - } - } - - /* Bias towards edges of allowed space */ - switch(asn_random_between(-1, 4)) { - default: - case -1: - /* Prepare lengths somewhat outside of constrained range. */ - if(constraints->per_constraints - && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { - switch(asn_random_between(0, 5)) { - default: - case 0: - rnd_len = 0; - break; - case 1: - if(slb > 0) { - rnd_len = slb - 1; - } else { - rnd_len = 0; - } - break; - case 2: - rnd_len = asn_random_between(0, slb); - break; - case 3: - if(sub < (ssize_t)max_length) { - rnd_len = sub + 1; - } else { - rnd_len = max_length; - } - break; - case 4: - if(sub < (ssize_t)max_length) { - rnd_len = asn_random_between(sub + 1, max_length); - } else { - rnd_len = max_length; - } - break; - case 5: - rnd_len = max_length; - break; - } - break; - } - /* Fall through */ - case 0: - rnd_len = asn_random_between(slb, sub); - break; - case 1: - if(slb < sub) { - rnd_len = asn_random_between(slb + 1, sub); - break; - } - /* Fall through */ - case 2: - rnd_len = asn_random_between(slb, slb); - break; - case 3: - if(slb < sub) { - rnd_len = asn_random_between(slb, sub - 1); - break; - } - /* Fall through */ - case 4: - rnd_len = asn_random_between(sub, sub); - break; - } - - for(; rnd_len > 0; rnd_len--) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - void *ptr = 0; - asn_random_fill_result_t tmpres = elm->type->op->random_fill( - elm->type, &ptr, &elm->encoding_constraints, - (max_length > res_ok.length ? max_length - res_ok.length : 0) - / rnd_len); - switch(tmpres.code) { - case ARFILL_OK: - ASN_SET_ADD(list, ptr); - res_ok.length += tmpres.length; - break; - case ARFILL_SKIPPED: - break; - case ARFILL_FAILED: - assert(ptr == 0); - return tmpres; - } - } - - return res_ok; -} - diff --git a/e2sim/src/ASN1c/constr_SET_OF.h b/e2sim/src/ASN1c/constr_SET_OF.h deleted file mode 100644 index 7681062..0000000 --- a/e2sim/src/ASN1c/constr_SET_OF.h +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/constr_TYPE.c b/e2sim/src/ASN1c/constr_TYPE.c deleted file mode 100644 index aefaefd..0000000 --- a/e2sim/src/ASN1c/constr_TYPE.c +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * 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/e2sim/src/ASN1c/constr_TYPE.h b/e2sim/src/ASN1c/constr_TYPE.h deleted file mode 100644 index d80dea5..0000000 --- a/e2sim/src/ASN1c/constr_TYPE.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * 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/e2sim/src/ASN1c/constraints.c b/e2sim/src/ASN1c/constraints.c deleted file mode 100644 index df3c6c1..0000000 --- a/e2sim/src/ASN1c/constraints.c +++ /dev/null @@ -1,93 +0,0 @@ -#include -#include - -int -asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Nothing to check */ - return 0; -} - -int -asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *cb, void *key) { - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Unknown how to check */ - return 0; -} - -struct errbufDesc { - const asn_TYPE_descriptor_t *failed_type; - const void *failed_struct_ptr; - char *errbuf; - size_t errlen; -}; - -static void -_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, - const char *fmt, ...) { - struct errbufDesc *arg = key; - va_list ap; - ssize_t vlen; - ssize_t maxlen; - - arg->failed_type = td; - arg->failed_struct_ptr = sptr; - - maxlen = arg->errlen; - if(maxlen <= 0) - return; - - va_start(ap, fmt); - vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); - va_end(ap); - if(vlen >= maxlen) { - arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ - arg->errlen = maxlen - 1; /* Not counting termination */ - return; - } else if(vlen >= 0) { - arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ - arg->errlen = vlen; /* Not counting termination */ - } else { - /* - * The libc on this system is broken. - */ - vlen = sizeof("") - 1; - maxlen--; - arg->errlen = vlen < maxlen ? vlen : maxlen; - memcpy(arg->errbuf, "", arg->errlen); - arg->errbuf[arg->errlen] = 0; - } - - return; -} - -int -asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, char *errbuf, size_t *errlen) { - struct errbufDesc arg; - int ret; - - arg.failed_type = 0; - arg.failed_struct_ptr = 0; - arg.errbuf = errbuf; - arg.errlen = errlen ? *errlen : 0; - - ret = type_descriptor->encoding_constraints.general_constraints( - type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); - if(ret == -1 && errlen) *errlen = arg.errlen; - - return ret; -} - diff --git a/e2sim/src/ASN1c/constraints.h b/e2sim/src/ASN1c/constraints.h deleted file mode 100644 index 0bd86a9..0000000 --- a/e2sim/src/ASN1c/constraints.h +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN1_CONSTRAINTS_VALIDATOR_H -#define ASN1_CONSTRAINTS_VALIDATOR_H - -#include /* Platform-dependent types */ - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Validate the structure according to the ASN.1 constraints. - * If errbuf and errlen are given, they shall be pointing to the appropriate - * buffer space and its length before calling this function. Alternatively, - * they could be passed as NULL's. If constraints validation fails, - * errlen will contain the actual number of bytes taken from the errbuf - * to encode an error message (properly 0-terminated). - * - * RETURN VALUES: - * This function returns 0 in case all ASN.1 constraints are met - * and -1 if one or more constraints were failed. - */ -int asn_check_constraints( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Target language's structure */ - char *errbuf, /* Returned error description */ - size_t *errlen /* Length of the error description */ -); - - -/* - * Generic type for constraint checking callback, - * associated with every type descriptor. - */ -typedef int(asn_constr_check_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, - asn_app_constraint_failed_f *optional_callback, /* Log the error */ - void *optional_app_key /* Opaque key passed to a callback */ -); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ -asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ - -/* - * Invoke the callback with a complete error message. - */ -#define ASN__CTFAIL if(ctfailcb) ctfailcb - -#ifdef __cplusplus -} -#endif - -#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/e2sim/src/ASN1c/der_encoder.c b/e2sim/src/ASN1c/der_encoder.c deleted file mode 100644 index 2c6a6f7..0000000 --- a/e2sim/src/ASN1c/der_encoder.c +++ /dev/null @@ -1,194 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, int constructed); - -/* - * The DER encoder of any type. - */ -asn_enc_rval_t -der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, - asn_app_consume_bytes_f *consume_bytes, void *app_key) { - ASN_DEBUG("DER encoder invoked for %s", - type_descriptor->name); - - /* - * Invoke type-specific encoder. - */ - return type_descriptor->op->der_encoder( - type_descriptor, struct_ptr, /* Pointer to the destination structure */ - 0, 0, consume_bytes, app_key); -} - -/* - * Argument type and callback necessary for der_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -/* - * A variant of the der_encode() which encodes the data into the provided buffer - */ -asn_enc_rval_t -der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg arg; - asn_enc_rval_t ec; - - arg.buffer = buffer; - arg.left = buffer_size; - - ec = type_descriptor->op->der_encoder(type_descriptor, - struct_ptr, /* Pointer to the destination structure */ - 0, 0, encode_to_buffer_cb, &arg); - if(ec.encoded != -1) { - assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); - /* Return the encoded contents size */ - } - return ec; -} - - -/* - * Write out leading TL[v] sequence according to the type definition. - */ -ssize_t -der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, - int tag_mode, int last_tag_form, - ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ - asn_app_consume_bytes_f *cb, void *app_key) { -#define ASN1_DER_MAX_TAGS_COUNT 4 - ber_tlv_tag_t - tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; - ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; - const ber_tlv_tag_t *tags; /* Copy of tags stream */ - int tags_count; /* Number of tags */ - size_t overall_length; - int i; - - ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", - sd->name, tag_mode, sd->tags_count, - ber_tlv_tag_string(tag), - tag_mode - ?(sd->tags_count+1 - -((tag_mode == -1) && sd->tags_count)) - :sd->tags_count - ); - - if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { - ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); - return -1; - } - - if(tag_mode) { - /* - * Instead of doing shaman dance like we do in ber_check_tags(), - * allocate a small array on the stack - * and initialize it appropriately. - */ - int stag_offset; - ber_tlv_tag_t *tags_buf = tags_buf_scratch; - tags_count = sd->tags_count - + 1 /* EXPLICIT or IMPLICIT tag is given */ - - ((tag_mode == -1) && sd->tags_count); - /* Copy tags over */ - tags_buf[0] = tag; - stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); - for(i = 1; i < tags_count; i++) - tags_buf[i] = sd->tags[i + stag_offset]; - tags = tags_buf; - } else { - tags = sd->tags; - tags_count = sd->tags_count; - } - - /* No tags to write */ - if(tags_count == 0) - return 0; - - /* - * Array of tags is initialized. - * Now, compute the size of the TLV pairs, from right to left. - */ - overall_length = struct_length; - for(i = tags_count - 1; i >= 0; --i) { - lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); - if(lens[i] == -1) return -1; - overall_length += lens[i]; - lens[i] = overall_length - lens[i]; - } - - if(!cb) return overall_length - struct_length; - - ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, - tags_count); - - /* - * Encode the TL sequence for real. - */ - for(i = 0; i < tags_count; i++) { - ssize_t len; - int _constr; - - /* Check if this tag happens to be constructed */ - _constr = (last_tag_form || i < (tags_count - 1)); - - len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); - if(len == -1) return -1; - } - - return overall_length - struct_length; -} - -static ssize_t -der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, - int constructed) { - uint8_t buf[32]; - size_t size = 0; - int buf_size = cb?sizeof(buf):0; - ssize_t tmp; - - /* Serialize tag (T from TLV) into possibly zero-length buffer */ - tmp = ber_tlv_tag_serialize(tag, buf, buf_size); - if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; - size += tmp; - - /* Serialize length (L from TLV) into possibly zero-length buffer */ - tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); - if(tmp == -1) return -1; - size += tmp; - - if(size > sizeof(buf)) - return -1; - - /* - * If callback is specified, invoke it, and check its return value. - */ - if(cb) { - if(constructed) *buf |= 0x20; - if(cb(buf, size, app_key) < 0) - return -1; - } - - return size; -} diff --git a/e2sim/src/ASN1c/der_encoder.h b/e2sim/src/ASN1c/der_encoder.h deleted file mode 100644 index e93944e..0000000 --- a/e2sim/src/ASN1c/der_encoder.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _DER_ENCODER_H_ -#define _DER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The DER encoder of any type. May be invoked by the application. - * Produces DER- and BER-compliant encoding. (DER is a subset of BER). - * - * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data - * produced by der_encode(). - */ -asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* A variant of der_encode() which encodes data into the pre-allocated buffer */ -asn_enc_rval_t der_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (maximum) */ -); - -/* - * Type of the generic DER encoder. - */ -typedef asn_enc_rval_t(der_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Write out leading TL[v] sequence according to the type definition. - */ -ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, - size_t struct_length, - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - int last_tag_form, /* {0,!0}: prim, constructed */ - ber_tlv_tag_t tag, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _DER_ENCODER_H_ */ diff --git a/e2sim/src/ASN1c/per_decoder.c b/e2sim/src/ASN1c/per_decoder.c deleted file mode 100644 index 8a3e39d..0000000 --- a/e2sim/src/ASN1c/per_decoder.c +++ /dev/null @@ -1,185 +0,0 @@ -#include -#include -#include - -/* - * Decode a "Production of a complete encoding", X.691#10.1. - * The complete encoding contains at least one byte, and is an integral - * multiple of 8 bytes. - */ -asn_dec_rval_t -uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -uper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->uper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %ld, counted %ld", - (long)rval.consumed, (long)pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - -asn_dec_rval_t -aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, - const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -aper_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, - size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - ASN__DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - ASN__DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->op->aper_decoder) - ASN__DECODE_FAILED; /* PER is not compiled in */ - rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %zu, counted %zu", - rval.consumed, pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - diff --git a/e2sim/src/ASN1c/per_decoder.h b/e2sim/src/ASN1c/per_decoder.h deleted file mode 100644 index eea474a..0000000 --- a/e2sim/src/ASN1c/per_decoder.h +++ /dev/null @@ -1,82 +0,0 @@ -/*- - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_DECODER_H_ -#define _PER_DECODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. - * On success, this call always returns (.consumed >= 1), as per #11.1.3. - */ -asn_dec_rval_t uper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ -); - -/* - * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t uper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of the input data buffer, in bytes */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ -); - -/* - * Aligned PER decoder of a "complete encoding" as per X.691#10.1. - * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. - */ -asn_dec_rval_t aper_decode_complete( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ - ); - -/* - * Aligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ -asn_dec_rval_t aper_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of data buffer */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ - ); - -/* - * Type of the type-specific PER decoder function. - */ -typedef asn_dec_rval_t(per_type_decoder_f)( - const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, void **struct_ptr, - asn_per_data_t *per_data); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_DECODER_H_ */ diff --git a/e2sim/src/ASN1c/per_encoder.c b/e2sim/src/ASN1c/per_encoder.c deleted file mode 100644 index a35e1f0..0000000 --- a/e2sim/src/ASN1c/per_encoder.c +++ /dev/null @@ -1,265 +0,0 @@ -#include -#include -#include - -static int _uper_encode_flush_outp(asn_per_outp_t *po); - -static int -ignore_output(const void *data, size_t size, void *app_key) { - (void)data; - (void)size; - (void)app_key; - return 0; -} - -asn_enc_rval_t -uper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->uper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb ? cb : ignore_output; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->uper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; - } - - return er; -} - -/* - * Argument type and callback necessary for uper_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -asn_enc_rval_t -uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); - - return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -typedef struct enc_dyn_arg { - void *buffer; - size_t length; - size_t allocated; -} enc_dyn_arg; -static int -encode_dyn_cb(const void *buffer, size_t size, void *key) { - enc_dyn_arg *arg = key; - if(arg->length + size >= arg->allocated) { - size_t new_size = arg->allocated ? arg->allocated : 8; - void *p; - - do { - new_size <<= 2; - } while(arg->length + size >= new_size); - - p = REALLOC(arg->buffer, new_size); - if(!p) { - FREEMEM(arg->buffer); - memset(arg, 0, sizeof(*arg)); - return -1; - } - arg->buffer = p; - arg->allocated = new_size; - } - memcpy(((char *)arg->buffer) + arg->length, buffer, size); - arg->length += size; - return 0; -} -ssize_t -uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -/* - * Internally useful functions. - */ - -/* Flush partially filled buffer */ -static int -_uper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); -} - -asn_enc_rval_t -aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); - - return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); -} - -ssize_t -aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, void **buffer_r) { - asn_enc_rval_t er = {0,0,0}; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -static int -_aper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - if (po->output) { - return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); - } - return 0; -} - -asn_enc_rval_t -aper_encode(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er = {0,0,0}; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->op->aper_encoder) - ASN__ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.output = cb; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->op->aper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_aper_encode_flush_outp(&po)) - ASN__ENCODE_FAILED; - } - - return er; -} diff --git a/e2sim/src/ASN1c/per_encoder.h b/e2sim/src/ASN1c/per_encoder.h deleted file mode 100644 index b615ef0..0000000 --- a/e2sim/src/ASN1c/per_encoder.h +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_ENCODER_H_ -#define _PER_ENCODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. Use the following formula to convert to bytes: - * bytes = ((.encoded + 7) / 8) - */ -asn_enc_rval_t uper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -asn_enc_rval_t aper_encode( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ -); - -/* - * A variant of uper_encode() which encodes data into the existing buffer - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. - */ -asn_enc_rval_t uper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); - -asn_enc_rval_t aper_encode_to_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ -); -/* - * A variant of uper_encode_to_buffer() which allocates buffer itself. - * Returns the number of bytes in the buffer or -1 in case of failure. - * WARNING: This function produces a "Production of the complete encoding", - * with length of at least one octet. Contrast this to precise bit-packing - * encoding of uper_encode() and uper_encode_to_buffer(). - */ -ssize_t uper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, - const void *struct_ptr, /* Structure to be encoded */ - void **buffer_r /* Buffer allocated and returned */ -); - -ssize_t -aper_encode_to_new_buffer( - const struct asn_TYPE_descriptor_s *td, - const asn_per_constraints_t *constraints, - const void *sptr, - void **buffer_r -); - -/* - * Type of the generic PER encoder function. - */ -typedef asn_enc_rval_t(per_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const asn_per_constraints_t *constraints, const void *struct_ptr, - asn_per_outp_t *per_output); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_ENCODER_H_ */ diff --git a/e2sim/src/ASN1c/per_opentype.c b/e2sim/src/ASN1c/per_opentype.c deleted file mode 100644 index 28f3cb6..0000000 --- a/e2sim/src/ASN1c/per_opentype.c +++ /dev/null @@ -1,533 +0,0 @@ -/* - * Copyright (c) 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -typedef struct uper_ugot_key { - asn_per_data_t oldpd; /* Old per data source */ - size_t unclaimed; - size_t ot_moved; /* Number of bits moved by OT processing */ - int repeat; -} uper_ugot_key; - -static int uper_ugot_refill(asn_per_data_t *pd); -static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); -static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -/* - * Encode an "open type field". - * #10.1, #10.2 - */ -int -uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, const void *sptr, - asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, - size); - - bptr = buf; - do { - int need_eom = 0; - ssize_t may_save = uper_put_length(po, size, &need_eom); - ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE - " to %s and allowing to save %" ASN_PRI_SSIZE, - size, td->name, may_save); - if(may_save < 0) break; - if(per_put_many_bits(po, bptr, may_save * 8)) break; - bptr = (char *)bptr + may_save; - size -= may_save; - if(need_eom && uper_put_length(po, 0, 0)) { - FREEMEM(buf); - return -1; - } - } while(size); - - FREEMEM(buf); - if(size) return -1; - - return 0; -} - -static asn_dec_rval_t -uper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = uper_get_length(pd, -1, 0, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -static asn_dec_rval_t CC_NOTUSED -uper_open_type_get_complex(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - uper_ugot_key arg; - asn_dec_rval_t rv; - ssize_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s from %s", td->name, - asn_bit_data_string(pd)); - arg.oldpd = *pd; - arg.unclaimed = 0; - arg.ot_moved = 0; - arg.repeat = 1; - pd->refill = uper_ugot_refill; - pd->refill_key = &arg; - pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ - pd->moved = 0; /* This now counts the open type size in bits */ - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); - ASN_DEBUG_INDENT_ADD(-4); - -#define UPDRESTOREPD do { \ - /* buffer and nboff are valid, preserve them. */ \ - pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ - pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ - pd->refill = arg.oldpd.refill; \ - pd->refill_key = arg.oldpd.refill_key; \ - } while(0) - - if(rv.code != RC_OK) { - UPDRESTOREPD; - return rv; - } - - ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, - asn_bit_data_string(pd), - asn_bit_data_string(&arg.oldpd), - (int)arg.unclaimed, (int)arg.repeat); - - padding = pd->moved % 8; - if(padding) { - int32_t pvalue; - if(padding > 7) { - ASN_DEBUG("Too large padding %d in open type", - (int)padding); - rv.code = RC_FAIL; - UPDRESTOREPD; - return rv; - } - padding = 8 - padding; - ASN_DEBUG("Getting padding of %d bits", (int)padding); - pvalue = per_get_few_bits(pd, padding); - switch(pvalue) { - case -1: - ASN_DEBUG("Padding skip failed"); - UPDRESTOREPD; - ASN__DECODE_STARVED; - case 0: break; - default: - ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", - (int)padding, (int)pvalue); - UPDRESTOREPD; - ASN__DECODE_FAILED; - } - } - if(pd->nboff != pd->nbits) { - ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, - asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); - if(1) { - UPDRESTOREPD; - ASN__DECODE_FAILED; - } else { - arg.unclaimed += pd->nbits - pd->nboff; - } - } - - /* Adjust pd back so it points to original data */ - UPDRESTOREPD; - - /* Skip data not consumed by the decoder */ - if(arg.unclaimed) { - ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); - switch(per_skip_bits(pd, arg.unclaimed)) { - case -1: - ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); - ASN__DECODE_STARVED; - case 0: - ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); - break; - default: - /* Padding must be blank */ - ASN_DEBUG("Non-blank unconsumed padding"); - ASN__DECODE_FAILED; - } - arg.unclaimed = 0; - } - - if(arg.repeat) { - ASN_DEBUG("Not consumed the whole thing"); - rv.code = RC_FAIL; - return rv; - } - - return rv; -} - - -asn_dec_rval_t -uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_TYPE_operation_t s_op; - asn_dec_rval_t rv; - - s_td.name = ""; - s_td.op = &s_op; - s_op.uper_decoder = uper_sot_suck; - - rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - -/* - * Internal functions. - */ - -static asn_dec_rval_t -uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, - asn_per_data_t *pd) { - asn_dec_rval_t rv; - - (void)ctx; - (void)td; - (void)constraints; - (void)sptr; - - while(per_get_few_bits(pd, 1) >= 0); - - rv.code = RC_OK; - rv.consumed = pd->moved; - - return rv; -} - -static int -uper_ugot_refill(asn_per_data_t *pd) { - uper_ugot_key *arg = pd->refill_key; - ssize_t next_chunk_bytes, next_chunk_bits; - ssize_t avail; - - asn_per_data_t *oldpd = &arg->oldpd; - - ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", - (long)pd->moved, (long)oldpd->moved); - - /* Advance our position to where pd is */ - oldpd->buffer = pd->buffer; - oldpd->nboff = pd->nboff; - oldpd->nbits -= pd->moved - arg->ot_moved; - oldpd->moved += pd->moved - arg->ot_moved; - arg->ot_moved = pd->moved; - - if(arg->unclaimed) { - /* Refill the container */ - if(per_get_few_bits(oldpd, 1)) - return -1; - if(oldpd->nboff == 0) { - assert(0); - return -1; - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff - 1; - pd->nbits = oldpd->nbits; - ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", - (long)pd->moved); - return 0; - } - - if(!arg->repeat) { - ASN_DEBUG("Want more but refill doesn't have it"); - return -1; - } - - next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); - ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", - (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); - if(next_chunk_bytes < 0) return -1; - if(next_chunk_bytes == 0) { - pd->refill = 0; /* No more refills, naturally */ - assert(!arg->repeat); /* Implementation guarantee */ - } - next_chunk_bits = next_chunk_bytes << 3; - avail = oldpd->nbits - oldpd->nboff; - if(avail >= next_chunk_bits) { - pd->nbits = oldpd->nboff + next_chunk_bits; - arg->unclaimed = 0; - ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", - (long)next_chunk_bits, (long)oldpd->moved, - (long)oldpd->nboff, (long)oldpd->nbits, - (long)(oldpd->nbits - oldpd->nboff)); - } else { - pd->nbits = oldpd->nbits; - arg->unclaimed = next_chunk_bits - avail; - ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", - (long)avail, (long)next_chunk_bits, - (long)arg->unclaimed); - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff; - ASN_DEBUG("Refilled pd%s old%s", - asn_bit_data_string(pd), asn_bit_data_string(oldpd)); - return 0; -} - -static int -per_skip_bits(asn_per_data_t *pd, int skip_nbits) { - int hasNonZeroBits = 0; - while(skip_nbits > 0) { - int skip; - - /* per_get_few_bits() is more efficient when nbits <= 24 */ - if(skip_nbits < 24) - skip = skip_nbits; - else - skip = 24; - skip_nbits -= skip; - - switch(per_get_few_bits(pd, skip)) { - case -1: return -1; /* Starving */ - case 0: continue; /* Skipped empty space */ - default: hasNonZeroBits = 1; continue; - } - } - return hasNonZeroBits; -} - -static asn_dec_rval_t -aper_open_type_get_simple(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - ASN__STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = aper_get_length(pd, -1, -1, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - ASN__DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - ASN__DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - ASN_DEBUG_INDENT_ADD(+4); - rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); - ASN_DEBUG_INDENT_ADD(-4); - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if (((padding > 0 && padding < 8) || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - ASN__DECODE_FAILED; - } else { - ASN_DEBUG("No padding"); - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -int -aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - size_t toGo; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - for(bptr = buf, toGo = size; toGo;) { - ssize_t maySave = aper_put_length(po, -1, toGo); - if(maySave < 0) break; - if(per_put_many_bits(po, bptr, maySave * 8)) break; - bptr = (char *)bptr + maySave; - toGo -= maySave; - } - - FREEMEM(buf); - if(toGo) return -1; - - ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", - td->name, size); - - return 0; -} - -asn_dec_rval_t -aper_open_type_get(const asn_codec_ctx_t *ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_dec_rval_t rv; - asn_TYPE_operation_t op_t; - - memset(&op_t, 0, sizeof(op_t)); - s_td.name = ""; - s_td.op = &op_t; - s_td.op->aper_decoder = uper_sot_suck; - - rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - - diff --git a/e2sim/src/ASN1c/per_opentype.h b/e2sim/src/ASN1c/per_opentype.h deleted file mode 100644 index 1493b2d..0000000 --- a/e2sim/src/ASN1c/per_opentype.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_OPENTYPE_H_ -#define _PER_OPENTYPE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - -int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, - asn_per_data_t *pd); - -/* - * X.691 (2015/08), #11.2 - * Returns -1 if error is encountered. 0 if all OK. - */ -int uper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd); - - -int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); - -int aper_open_type_put(const asn_TYPE_descriptor_t *td, - const asn_per_constraints_t *constraints, - const void *sptr, asn_per_outp_t *po); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_OPENTYPE_H_ */ diff --git a/e2sim/src/ASN1c/per_support.c b/e2sim/src/ASN1c/per_support.c deleted file mode 100644 index 2c87a76..0000000 --- a/e2sim/src/ASN1c/per_support.c +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * X.691-201508 #10.9 General rules for encoding a length determinant. - * Get the optionally constrained length "n" from the stream. - */ -ssize_t -uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, - int *repeat) { - ssize_t value; - - *repeat = 0; - - /* #11.9.4.1 Encoding if constrained (according to effective bits) */ - if(ebits >= 0 && ebits <= 16) { - value = per_get_few_bits(pd, ebits); - if(value >= 0) value += lower_bound; - return value; - } - - value = per_get_few_bits(pd, 8); - if((value & 0x80) == 0) { /* #11.9.3.6 */ - return (value & 0x7F); - } else if((value & 0x40) == 0) { /* #11.9.3.7 */ - /* bit 8 ... set to 1 and bit 7 ... set to zero */ - value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); - return value; /* potential -1 from per_get_few_bits passes through. */ - } else if(value < 0) { - ASN_DEBUG("END of stream reached for PER"); - return -1; - } - value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ - if(value < 1 || value > 4) { - return -1; /* Prohibited by #11.9.3.8 */ - } - *repeat = 1; - return (16384 * value); -} - -/* - * Get the normally small length "n". - * This procedure used to decode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -ssize_t -uper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%d", (int)length); - return length; - } else { - int repeat; - length = uper_get_length(pd, -1, 0, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -/* - * Get the normally small non-negative whole number. - * X.691, #10.6 - */ -ssize_t -uper_get_nsnnwn(asn_per_data_t *pd) { - ssize_t value; - - value = per_get_few_bits(pd, 7); - if(value & 64) { /* implicit (value < 0) */ - value &= 63; - value <<= 2; - value |= per_get_few_bits(pd, 2); - if(value & 128) /* implicit (value < 0) */ - return -1; - if(value == 0) - return 0; - if(value >= 3) - return -1; - value = per_get_few_bits(pd, 8 * value); - return value; - } - - return value; -} - -/* - * X.691-11/2008, #11.6 - * Encoding of a normally small non-negative whole number - */ -int -uper_put_nsnnwn(asn_per_outp_t *po, int n) { - int bytes; - - if(n <= 63) { - if(n < 0) return -1; - return per_put_few_bits(po, n, 7); - } - if(n < 256) - bytes = 1; - else if(n < 65536) - bytes = 2; - else if(n < 256 * 65536) - bytes = 3; - else - return -1; /* This is not a "normally small" value */ - if(per_put_few_bits(po, bytes, 8)) - return -1; - - return per_put_few_bits(po, n, 8 * bytes); -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { - unsigned long lhalf; /* Lower half of the number*/ - long half; - - if(nbits <= 31) { - half = per_get_few_bits(pd, nbits); - if(half < 0) return -1; - *out_value = half; - return 0; - } - - if((size_t)nbits > 8 * sizeof(*out_value)) - return -1; /* RANGE */ - - half = per_get_few_bits(pd, 31); - if(half < 0) return -1; - - if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) - return -1; - - *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; - return 0; -} - - -/* X.691-2008/11, #11.5.6 -> #11.3 */ -int -uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, - int nbits) { - if(nbits <= 31) { - return per_put_few_bits(po, v, nbits); - } else { - /* Put higher portion first, followed by lower 31-bit */ - if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) - return -1; - return per_put_few_bits(po, v, 31); - } -} - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "n" (or part of it) into the stream. - */ -ssize_t -uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { - int dummy = 0; - if(!need_eom) need_eom = &dummy; - - if(length <= 127) { /* #11.9.3.6 */ - *need_eom = 0; - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } else if(length < 16384) { /* #10.9.3.7 */ - *need_eom = 0; - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - } - - *need_eom = 0 == (length & 16383); - length >>= 14; - if(length > 4) { - *need_eom = 0; - length = 4; - } - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); - -} - - -/* - * Put the normally small length "n" into the stream. - * This procedure used to encode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -int -uper_put_nslength(asn_per_outp_t *po, size_t length) { - if(length <= 64) { - /* #11.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length - 1, 7) ? -1 : 0; - } else { - int need_eom = 0; - if(uper_put_length(po, length, &need_eom) != (ssize_t)length - || need_eom) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -static int -per__long_range(long lb, long ub, unsigned long *range_r) { - unsigned long bounds_range; - if((ub < 0) == (lb < 0)) { - bounds_range = ub - lb; - } else if(lb < 0) { - assert(ub >= 0); - bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); - } else { - assert(!"Unreachable"); - return -1; - } - *range_r = bounds_range; - return 0; -} - -int -per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { - unsigned long range; - - assert(lb <= ub); - - if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { - /* Range error. */ - return -1; - } - - /* - * Fundamentally what we're doing is returning (v-lb). - * However, this triggers undefined behavior when the word width - * of signed (v) is the same as the size of unsigned (*output). - * In practice, it triggers the UndefinedSanitizer. Therefore we shall - * compute the ranges accurately to avoid C's undefined behavior. - */ - if((v < 0) == (lb < 0)) { - *output = v-lb; - return 0; - } else if(v < 0) { - unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else if(lb < 0) { - unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; - assert(rebased <= range); /* By construction */ - *output = rebased; - return 0; - } else { - assert(!"Unreachable"); - return -1; - } -} - -int -per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { - unsigned long range; - - if(per__long_range(lb, ub, &range) != 0) { - return -1; - } - - if(inp > range) { - /* - * We can encode something in the given number of bits that technically - * exceeds the range. This is an avenue for security errors, - * so we don't allow that. - */ - return -1; - } - - if(inp <= LONG_MAX) { - *outp = (long)inp + lb; - } else { - *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); - } - - return 0; -} - -int32_t -aper_get_align(asn_per_data_t *pd) { - - if(pd->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); - return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); - } - return 0; -} - -ssize_t -aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { - ssize_t value; - - *repeat = 0; - - // First check effective_bits parameter. - if (ebits >= 0) { - if (range <= 65536 && range >= 0) - return aper_get_nsnnwn(pd, range); - } - - if (aper_get_align(pd) < 0) - return -1; - - if(ebits >= 0) return per_get_few_bits(pd, ebits); - - value = per_get_few_bits(pd, 8); - if(value < 0) return -1; - if((value & 128) == 0) /* #10.9.3.6 */ - return (value & 0x7F); - if((value & 64) == 0) { /* #10.9.3.7 */ - value = ((value & 63) << 8) | per_get_few_bits(pd, 8); - if(value < 0) return -1; - return value; - } - value &= 63; /* this is "m" from X.691, #10.9.3.8 */ - if(value < 1 || value > 4) - return -1; - *repeat = 1; - return (16384 * value); -} - -ssize_t -aper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%ld", length); - return length; - } else { - int repeat; - length = aper_get_length(pd, -1, -1, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -ssize_t -aper_get_nsnnwn(asn_per_data_t *pd, int range) { - ssize_t value; - int bytes = 0; - - ASN_DEBUG("getting nsnnwn with range %d", range); - - if(range <= 255) { - int i; - - if (range < 0) return -1; - /* 1 -> 8 bits */ - for (i = 1; i <= 8; i++) { - int upper = 1 << i; - if (upper >= range) - break; - } - value = per_get_few_bits(pd, i); - return value; - } else if (range == 256){ - /* 1 byte */ - bytes = 1; - } else if (range <= 65536) { - /* 2 bytes */ - bytes = 2; - } else { - return -1; - } - if (aper_get_align(pd) < 0) - return -1; - value = per_get_few_bits(pd, 8 * bytes); - return value; -} - -int aper_put_align(asn_per_outp_t *po) { - - if(po->nboff & 0x7) { - ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); - if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) - return -1; - } - return 0; -} - -ssize_t -aper_put_length(asn_per_outp_t *po, int range, size_t length) { - - ASN_DEBUG("APER put length %zu with range %d", length, range); - - /* 10.9 X.691 Note 2 */ - if (range <= 65536 && range >= 0) - return aper_put_nsnnwn(po, range, length); - - if (aper_put_align(po) < 0) - return -1; - - if(length <= 127) /* #10.9.3.6 */{ - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - } - else if(length < 16384) /* #10.9.3.7 */ - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - - length >>= 14; - if(length > 4) length = 4; - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); -} - - -int -aper_put_nslength(asn_per_outp_t *po, size_t length) { - - if(length <= 64) { - /* #10.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length-1, 7) ? -1 : 0; - } else { - if(aper_put_length(po, -1, length) != (ssize_t)length) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - -int -aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { - int bytes; - - ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); - /* 10.5.7.1 X.691 */ - if(range < 0) { - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (number <= bits) - break; - } - bytes = i; - assert(i <= 4); - } - if(range <= 255) { - int i; - for (i = 1; i <= 8; i++) { - int bits = 1 << i; - if (range <= bits) - break; - } - return per_put_few_bits(po, number, i); - } else if(range == 256) { - bytes = 1; - } else if(range <= 65536) { - bytes = 2; - } else { /* Ranges > 64K */ - int i; - for (i = 1; ; i++) { - int bits = 1 << (8 * i); - if (range <= bits) - break; - } - assert(i <= 4); - bytes = i; - } - if(aper_put_align(po) < 0) /* Aligning on octet */ - return -1; -/* if(per_put_few_bits(po, bytes, 8)) - return -1; -*/ - return per_put_few_bits(po, number, 8 * bytes); -} diff --git a/e2sim/src/ASN1c/per_support.h b/e2sim/src/ASN1c/per_support.h deleted file mode 100644 index 23079c9..0000000 --- a/e2sim/src/ASN1c/per_support.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_SUPPORT_H_ -#define _PER_SUPPORT_H_ - -#include /* Platform-specific types */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Pre-computed PER constraints. - */ -typedef struct asn_per_constraint_s { - enum asn_per_constraint_flags { - APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ - APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ - APC_CONSTRAINED = 0x2, /* Fully constrained */ - APC_EXTENSIBLE = 0x4 /* May have extension */ - } flags; - int range_bits; /* Full number of bits in the range */ - int effective_bits; /* Effective bits */ - long lower_bound; /* "lb" value */ - long upper_bound; /* "ub" value */ -} asn_per_constraint_t; -typedef struct asn_per_constraints_s { - asn_per_constraint_t value; - asn_per_constraint_t size; - int (*value2code)(unsigned int value); - int (*code2value)(unsigned int code); -} asn_per_constraints_t; - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_data_s asn_per_data_t; -#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) -#define per_get_undo(data, bits) asn_get_undo(data, bits) -#define per_get_many_bits(data, dst, align, bits) \ - asn_get_many_bits(data, dst, align, bits) - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Get the length "n" from the Unaligned PER stream. - */ -ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, - size_t lower_bound, int *repeat); - -ssize_t aper_get_length(asn_per_data_t *pd, int range, - int effective_bound_bits, int *repeat); - -/* - * Get the normally small length "n". - */ -ssize_t uper_get_nslength(asn_per_data_t *pd); -ssize_t aper_get_nslength(asn_per_data_t *pd); - -/* - * Get the normally small non-negative whole number. - */ -ssize_t uper_get_nsnnwn(asn_per_data_t *pd); -ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); - -/* X.691-2008/11, #11.5.6 */ -int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); - - -/* Temporary compatibility layer. Will get removed. */ -typedef struct asn_bit_outp_s asn_per_outp_t; -#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) -#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) -#define per_put_aligned_flush(out) asn_put_aligned_flush(out) - - -/* - * Rebase the given value as an offset into the range specified by the - * lower bound (lb) and upper bound (ub). - * RETURN VALUES: - * -1: Conversion failed due to range problems. - * 0: Conversion was successful. - */ -int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); -/* The inverse operation: restores the value by the offset and its bounds. */ -int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); - -/* X.691-2008/11, #11.5 */ -int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); - -/* - * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" - * Put the length "whole_length" to the Unaligned PER stream. - * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. - * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. - * This function returns the number of units which may be flushed - * in the next units saving iteration. - */ -ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, - int *opt_need_eom); - -ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); - -/* Align the current bit position to octet bundary */ -int aper_put_align(asn_per_outp_t *po); -int32_t aper_get_align(asn_per_data_t *pd); - -/* - * Put the normally small length "n" to the Unaligned PER stream. - * Returns 0 or -1. - */ -int uper_put_nslength(asn_per_outp_t *po, size_t length); - -int aper_put_nslength(asn_per_outp_t *po, size_t length); - -/* - * Put the normally small non-negative whole number. - */ -int uper_put_nsnnwn(asn_per_outp_t *po, int n); - -int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_SUPPORT_H_ */ diff --git a/e2sim/src/ASN1c/xer_decoder.c b/e2sim/src/ASN1c/xer_decoder.c deleted file mode 100644 index 5b87703..0000000 --- a/e2sim/src/ASN1c/xer_decoder.c +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* XER/XML parsing support */ - - -/* - * Decode the XER encoding of a given type. - */ -asn_dec_rval_t -xer_decode(const asn_codec_ctx_t *opt_codec_ctx, - const asn_TYPE_descriptor_t *td, void **struct_ptr, - const void *buffer, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); -} - - - -struct xer__cb_arg { - pxml_chunk_type_e chunk_type; - size_t chunk_size; - const void *chunk_buf; - int callback_not_invoked; -}; - -static int -xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { - struct xer__cb_arg *arg = (struct xer__cb_arg *)key; - arg->chunk_type = type; - arg->chunk_size = _chunk_size; - arg->chunk_buf = _chunk_data; - arg->callback_not_invoked = 0; - return -1; /* Terminate the XML parsing */ -} - -/* - * Fetch the next token from the XER/XML stream. - */ -ssize_t -xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { - struct xer__cb_arg arg; - int new_stateContext = *stateContext; - ssize_t ret; - - arg.callback_not_invoked = 1; - ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); - if(ret < 0) return -1; - if(arg.callback_not_invoked) { - assert(ret == 0); /* No data was consumed */ - *ch_type = PXER_WMORE; - return 0; /* Try again with more data */ - } else { - assert(arg.chunk_size); - assert(arg.chunk_buf == buffer); - } - - /* - * Translate the XML chunk types into more convenient ones. - */ - switch(arg.chunk_type) { - case PXML_TEXT: - *ch_type = PXER_TEXT; - break; - case PXML_TAG: - *ch_type = PXER_WMORE; - return 0; /* Want more */ - case PXML_TAG_END: - *ch_type = PXER_TAG; - break; - case PXML_COMMENT: - case PXML_COMMENT_END: - *ch_type = PXER_COMMENT; - break; - } - - *stateContext = new_stateContext; - return arg.chunk_size; -} - -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define RANGLE 0x3e /* '>' */ - -xer_check_tag_e -xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { - const char *buf = (const char *)buf_ptr; - const char *end; - xer_check_tag_e ct = XCT_OPENING; - - if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { - if(size >= 2) - ASN_DEBUG("Broken XML tag: \"%c...%c\"", - buf[0], buf[size - 1]); - return XCT_BROKEN; - } - - /* - * Determine the tag class. - */ - if(buf[1] == CSLASH) { - buf += 2; /* advance past "" */ - ct = XCT_CLOSING; - if(size > 0 && buf[size-1] == CSLASH) - return XCT_BROKEN; /* */ - } else { - buf++; /* advance past "<" */ - size -= 2; /* strip "<" and ">" */ - if(size > 0 && buf[size-1] == CSLASH) { - ct = XCT_BOTH; - size--; /* One more, for "/" */ - } - } - - /* Sometimes we don't care about the tag */ - if(!need_tag || !*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - /* - * Determine the tag name. - */ - for(end = buf + size; buf < end; buf++, need_tag++) { - int b = *buf, n = *need_tag; - if(b != n) { - if(n == 0) { - switch(b) { - case 0x09: case 0x0a: case 0x0c: case 0x0d: - case 0x20: - /* "": whitespace is normal */ - return ct; - } - } - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - } - if(b == 0) - return XCT_BROKEN; /* Embedded 0 in buf?! */ - } - if(*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - return ct; -} - - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - if(rval.code != RC_OK) \ - ASN_DEBUG("Failed with %d", rval.code); \ - return rval; \ - } while(0) - -#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ - ssize_t converted_size = body_receiver \ - (struct_key, chunk_buf, chunk_size, \ - (size_t)chunk_size < size); \ - if(converted_size == -1) RETURN(RC_FAIL); \ - if(converted_size == 0 \ - && size == (size_t)chunk_size) \ - RETURN(RC_WMORE); \ - chunk_size = converted_size; \ - } while(0) -#define XER_GOT_EMPTY() do { \ - if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ - RETURN(RC_FAIL); \ - } while(0) - -/* - * Generalized function for decoding the primitive values. - */ -asn_dec_rval_t -xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, - const char *xml_tag, /* Expected XML tag */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder) - (void *struct_key, const void *chunk_buf, size_t chunk_size), - ssize_t (*body_receiver) - (void *struct_key, const void *chunk_buf, size_t chunk_size, - int have_more) - ) { - - asn_dec_rval_t rval; - ssize_t consumed_myself = 0; - - (void)opt_codec_ctx; - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - */ - if(ctx->phase > 1) RETURN(RC_FAIL); - for(;;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, - &ch_type); - if(ch_size == -1) { - RETURN(RC_FAIL); - } else { - switch(ch_type) { - case PXER_WMORE: - RETURN(RC_WMORE); - case PXER_COMMENT: /* Got XML comment */ - ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TEXT: - if(ctx->phase == 0) { - /* - * We have to ignore whitespace here, - * but in order to be forward compatible - * with EXTENDED-XER (EMBED-VALUES, #25) - * any text is just ignored here. - */ - } else { - XER_GOT_BODY(buf_ptr, ch_size, size); - } - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - assert(ch_type == PXER_TAG && size); - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - /* - * Phase 0: - * Expecting the opening tag - * for the type being processed. - * Phase 1: - * Waiting for the closing XML tag. - */ - switch(tcv) { - case XCT_BOTH: - if(ctx->phase) break; - /* Finished decoding of an empty element */ - XER_GOT_EMPTY(); - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - case XCT_CLOSING: - if(!ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_UNKNOWN_BO: - /* - * Certain tags in the body may be expected. - */ - if(opt_unexpected_tag_decoder - && opt_unexpected_tag_decoder(struct_key, - buf_ptr, ch_size) >= 0) { - /* Tag's processed fine */ - ADVANCE(ch_size); - if(!ctx->phase) { - /* We are not expecting - * the closing tag anymore. */ - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - } - continue; - } - /* Fall through */ - default: - break; /* Unexpected tag */ - } - - ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); - break; /* Dark and mysterious things have just happened */ - } - - RETURN(RC_FAIL); -} - - -size_t -xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - - for(; p < pend; p++) { - switch(*p) { - /* X.693, #8.1.4 - * HORISONTAL TAB (9) - * LINE FEED (10) - * CARRIAGE RETURN (13) - * SPACE (32) - */ - case 0x09: case 0x0a: case 0x0d: case 0x20: - continue; - default: - break; - } - break; - } - return (p - (const char *)chunk_buf); -} - -/* - * This is a vastly simplified, non-validating XML tree skipper. - */ -int -xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { - assert(*depth > 0); - switch(tcv) { - case XCT_BOTH: - case XCT_UNKNOWN_BO: - /* These negate each other. */ - return 0; - case XCT_OPENING: - case XCT_UNKNOWN_OP: - ++(*depth); - return 0; - case XCT_CLOSING: - case XCT_UNKNOWN_CL: - if(--(*depth) == 0) - return (tcv == XCT_CLOSING) ? 2 : 1; - return 0; - default: - return -1; - } -} diff --git a/e2sim/src/ASN1c/xer_decoder.h b/e2sim/src/ASN1c/xer_decoder.h deleted file mode 100644 index b951c41..0000000 --- a/e2sim/src/ASN1c/xer_decoder.h +++ /dev/null @@ -1,106 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_DECODER_H_ -#define _XER_DECODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* - * The XER decoder of any ASN.1 type. May be invoked by the application. - * Decodes CANONICAL-XER and BASIC-XER. - */ -asn_dec_rval_t xer_decode( - const struct asn_codec_ctx_s *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ -); - -/* - * Type of the type-specific XER decoder function. - */ -typedef asn_dec_rval_t(xer_type_decoder_f)( - const asn_codec_ctx_t *opt_codec_ctx, - const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, - const char *opt_mname, /* Member name */ - const void *buf_ptr, size_t size); - -/******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - -/* - * Generalized function for decoding the primitive values. - * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 - * and others. This function should not be used by applications, as its API - * is subject to changes. - */ -asn_dec_rval_t xer_decode_general( - const asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, /* Treated as opaque pointer */ - const char *xml_tag, /* Expected XML tag name */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, - size_t chunk_size), - ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, - size_t chunk_size, int have_more)); - - -/* - * Fetch the next XER (XML) token from the stream. - * The function returns the number of bytes occupied by the chunk type, - * returned in the _ch_type. The _ch_type is only set (and valid) when - * the return value is >= 0. - */ - typedef enum pxer_chunk_type { - PXER_WMORE, /* Chunk type is not clear, more data expected. */ - PXER_TAG, /* Complete XER tag */ - PXER_TEXT, /* Plain text between XER tags */ - PXER_COMMENT /* A comment, may be part of */ - } pxer_chunk_type_e; -ssize_t xer_next_token(int *stateContext, - const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); - -/* - * This function checks the buffer against the tag name is expected to occur. - */ - typedef enum xer_check_tag { - XCT_BROKEN = 0, /* The tag is broken */ - XCT_OPENING = 1, /* This is the tag */ - XCT_CLOSING = 2, /* This is the tag */ - XCT_BOTH = 3, /* This is the tag */ - XCT__UNK__MASK = 4, /* Mask of everything unexpected */ - XCT_UNKNOWN_OP = 5, /* Unexpected tag */ - XCT_UNKNOWN_CL = 6, /* Unexpected tag */ - XCT_UNKNOWN_BO = 7 /* Unexpected tag */ - } xer_check_tag_e; -xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, - const char *need_tag); - -/* - * Get the number of bytes consisting entirely of XER whitespace characters. - * RETURN VALUES: - * >=0: Number of whitespace characters in the string. - */ -size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); - -/* - * Skip the series of anticipated extensions. - */ -int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_DECODER_H_ */ diff --git a/e2sim/src/ASN1c/xer_encoder.c b/e2sim/src/ASN1c/xer_encoder.c deleted file mode 100644 index 4177ede..0000000 --- a/e2sim/src/ASN1c/xer_encoder.c +++ /dev/null @@ -1,237 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The XER encoder of any type. May be invoked by the application. - */ -asn_enc_rval_t -xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, - enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, - void *app_key) { - asn_enc_rval_t er = {0, 0, 0}; - asn_enc_rval_t tmper; - const char *mname; - size_t mlen; - int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; - - if(!td || !sptr) goto cb_failed; - - mname = td->xml_tag; - mlen = strlen(mname); - - ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - er.encoded += tmper.encoded; - - ASN__CALLBACK3("\n", xcan); - - ASN__ENCODED_OK(er); -cb_failed: - ASN__ENCODE_FAILED; -} - -/* - * This is a helper function for xer_fprint, which directs all incoming data - * into the provided file descriptor. - */ -static int -xer__print2fp(const void *buffer, size_t size, void *app_key) { - FILE *stream = (FILE *)app_key; - - if(fwrite(buffer, 1, size, stream) != size) - return -1; - - return 0; -} - -int -xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { - asn_enc_rval_t er = {0,0,0}; - - if(!stream) stream = stdout; - if(!td || !sptr) - return -1; - - er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); - if(er.encoded == -1) - return -1; - - return fflush(stream); -} - -struct xer_buffer { - char *buffer; - size_t buffer_size; - size_t allocated_size; -}; - -static int -xer__buffer_append(const void *buffer, size_t size, void *app_key) { - struct xer_buffer *xb = app_key; - - while(xb->buffer_size + size + 1 > xb->allocated_size) { - size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); - char *new_buf = MALLOC(new_size); - if(!new_buf) return -1; - if (xb->buffer) { - memcpy(new_buf, xb->buffer, xb->buffer_size); - } - FREEMEM(xb->buffer); - xb->buffer = new_buf; - xb->allocated_size = new_size; - } - - memcpy(xb->buffer + xb->buffer_size, buffer, size); - xb->buffer_size += size; - xb->buffer[xb->buffer_size] = '\0'; - return 0; -} - -enum xer_equivalence_e -xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, - const void *struct2, FILE *opt_debug_stream) { - struct xer_buffer xb1 = {0, 0, 0}; - struct xer_buffer xb2 = {0, 0, 0}; - asn_enc_rval_t e1, e2; - asn_dec_rval_t rval; - void *sptr = NULL; - - if(!td || !struct1 || !struct2) { - if(opt_debug_stream) { - if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); - if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); - if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); - } - return XEQ_FAILURE; - } - - e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); - if(e1.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of %s failed\n", td->name); - } - FREEMEM(xb1.buffer); - return XEQ_ENCODE1_FAILED; - } - - e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); - if(e2.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of %s failed\n", td->name); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ENCODE1_FAILED; - } - - if(xb1.buffer_size != xb2.buffer_size - || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structures XER-encoded into different byte streams:\n=== " - "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", - xb1.buffer, xb2.buffer); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_DIFFERENT; - } else { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Both structures encoded into the same XER byte stream " - "of size %" ASN_PRI_SIZE ":\n%s", - xb1.buffer_size, xb1.buffer); - } - } - - rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, - xb1.buffer_size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structure %s XER decode unexpectedly requires " - "more data:\n%s\n", - td->name, xb1.buffer); - } - /* Fall through */ - case RC_FAIL: - default: - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Structure %s XER decoding resulted in failure.\n", - td->name); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_DECODE_FAILED; - } - - if(rval.consumed != xb1.buffer_size - && ((rval.consumed > xb1.buffer_size) - || xer_whitespace_span(xb1.buffer + rval.consumed, - xb1.buffer_size - rval.consumed) - != (xb1.buffer_size - rval.consumed))) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " - "encoded (%" ASN_PRI_SIZE ")\n", - td->name, rval.consumed, xb1.buffer_size); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - /* - * Reuse xb2 to encode newly decoded structure. - */ - FREEMEM(xb2.buffer); - memset(&xb2, 0, sizeof(xb2)); - - e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); - if(e2.encoded == -1) { - if(opt_debug_stream) { - fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", - td->name); - } - ASN_STRUCT_FREE(*td, sptr); - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - ASN_STRUCT_FREE(*td, sptr); - sptr = 0; - - if(xb1.buffer_size != xb2.buffer_size - || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { - if(opt_debug_stream) { - fprintf(opt_debug_stream, - "XER Encoding of round-trip decode of %s resulted in " - "different byte stream:\n" - "=== Original ===\n%s\n" - "=== Round-tripped ===\n%s\n", - xb1.buffer, xb2.buffer, td->name); - } - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_ROUND_TRIP_FAILED; - } - - FREEMEM(xb1.buffer); - FREEMEM(xb2.buffer); - return XEQ_SUCCESS; -} - diff --git a/e2sim/src/ASN1c/xer_encoder.h b/e2sim/src/ASN1c/xer_encoder.h deleted file mode 100644 index 9d75922..0000000 --- a/e2sim/src/ASN1c/xer_encoder.h +++ /dev/null @@ -1,83 +0,0 @@ -/*- - * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_ENCODER_H_ -#define _XER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct asn_TYPE_descriptor_s; /* Forward declaration */ - -/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ -enum xer_encoder_flags_e { - /* Mode of encoding */ - XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ - XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ -}; - -/* - * The XER encoder of any type. May be invoked by the application. - * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). - */ -asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ -); - -/* - * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) - * output into the chosen file pointer. - * RETURN VALUES: - * 0: The structure is printed. - * -1: Problem printing the structure. - * WARNING: No sensible errno value is returned. - */ -int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, - const void *struct_ptr); - -/* - * A helper function that uses XER encoding/decoding to verify that: - * - Both structures encode into the same BASIC XER. - * - Both resulting XER byte streams can be decoded back. - * - Both decoded structures encode into the same BASIC XER (round-trip). - * All of this verifies equivalence between structures and a round-trip. - * ARGUMENTS: - * (opt_debug_stream) - If specified, prints ongoing details. - */ -enum xer_equivalence_e { - XEQ_SUCCESS, /* The only completely positive return value */ - XEQ_FAILURE, /* General failure */ - XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ - XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ - XEQ_DIFFERENT, /* Structures encoded into different XER */ - XEQ_DECODE_FAILED, /* Decode of the XER data failed */ - XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ -}; -enum xer_equivalence_e xer_equivalent( - const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, - const void *struct2, FILE *opt_debug_stream); - -/* - * Type of the generic XER encoder. - */ -typedef asn_enc_rval_t(xer_type_encoder_f)( - const struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Structure to be encoded */ - int ilevel, /* Level of indentation */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ -); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_ENCODER_H_ */ diff --git a/e2sim/src/ASN1c/xer_support.c b/e2sim/src/ASN1c/xer_support.c deleted file mode 100644 index 36b4bfb..0000000 --- a/e2sim/src/ASN1c/xer_support.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003, 2004, 2005 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* Parser states */ -typedef enum { - ST_TEXT, - ST_TAG_START, - ST_TAG_BODY, - ST_TAG_QUOTE_WAIT, - ST_TAG_QUOTED_STRING, - ST_TAG_UNQUOTED_STRING, - ST_COMMENT_WAIT_DASH1, /* ""[0] */ - ST_COMMENT_CLO_RT /* "-->"[1] */ -} pstate_e; - -static const int -_charclass[256] = { - 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, - 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ -}; -#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) -#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) -#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) - -/* Aliases for characters, ASCII/UTF-8 */ -#define EXCLAM 0x21 /* '!' */ -#define CQUOTE 0x22 /* '"' */ -#define CDASH 0x2d /* '-' */ -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define CEQUAL 0x3d /* '=' */ -#define RANGLE 0x3e /* '>' */ -#define CQUEST 0x3f /* '?' */ - -/* Invoke token callback */ -#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ - int _ret; \ - pstate_e ns = _ns; \ - ssize_t _sz = (p - chunk_start) + _current_too; \ - if (!_sz) { \ - /* Shortcut */ \ - state = _ns; \ - break; \ - } \ - _ret = cb(type, chunk_start, _sz, key); \ - if(_ret < _sz) { \ - if(_current_too && _ret == -1) \ - state = ns; \ - goto finish; \ - } \ - chunk_start = p + _current_too; \ - state = ns; \ - } while(0) - -#define TOKEN_CB(_type, _ns, _current_too) \ - TOKEN_CB_CALL(_type, _ns, _current_too, 0) - -#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END -#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END - -#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ - TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) - -/* - * Parser itself - */ -ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { - pstate_e state = (pstate_e)*stateContext; - const char *chunk_start = (const char *)xmlbuf; - const char *p = chunk_start; - const char *end = p + size; - - for(; p < end; p++) { - int C = *(const unsigned char *)p; - switch(state) { - case ST_TEXT: - /* - * Initial state: we're in the middle of some text, - * or just have started. - */ - if (C == LANGLE) - /* We're now in the tag, probably */ - TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); - break; - case ST_TAG_START: - if (ALPHA(C) || (C == CSLASH)) - state = ST_TAG_BODY; - else if (C == EXCLAM) - state = ST_COMMENT_WAIT_DASH1; - else - /* - * Not characters and not whitespace. - * Must be something like "3 < 4". - */ - TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ - break; - case ST_TAG_BODY: - switch(C) { - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - case LANGLE: - /* - * The previous tag wasn't completed, but still - * recognized as valid. (Mozilla-compatible) - */ - TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); - break; - case CEQUAL: - state = ST_TAG_QUOTE_WAIT; - break; - } - break; - case ST_TAG_QUOTE_WAIT: - /* - * State after the equal sign ("=") in the tag. - */ - switch(C) { - case CQUOTE: - state = ST_TAG_QUOTED_STRING; - break; - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - default: - if(!WHITESPACE(C)) - /* Unquoted string value */ - state = ST_TAG_UNQUOTED_STRING; - } - break; - case ST_TAG_QUOTED_STRING: - /* - * Tag attribute's string value in quotes. - */ - if(C == CQUOTE) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_TAG_UNQUOTED_STRING: - if(C == RANGLE) { - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - } else if(WHITESPACE(C)) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH1: - if(C == CDASH) { - state = ST_COMMENT_WAIT_DASH2; - } else { - /* Some ordinary tag. */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH2: - if(C == CDASH) { - /* Seen "<--" */ - state = ST_COMMENT; - } else { - /* Some ordinary tag */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT: - if(C == CDASH) { - state = ST_COMMENT_CLO_DASH2; - } - break; - case ST_COMMENT_CLO_DASH2: - if(C == CDASH) { - state = ST_COMMENT_CLO_RT; - } else { - /* This is not an end of a comment */ - state = ST_COMMENT; - } - break; - case ST_COMMENT_CLO_RT: - if(C == RANGLE) { - TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); - } else if(C == CDASH) { - /* Maintain current state, still waiting for '>' */ - } else { - state = ST_COMMENT; - } - break; - } /* switch(*ptr) */ - } /* for() */ - - /* - * Flush the partially processed chunk, state permitting. - */ - if(p - chunk_start) { - switch (state) { - case ST_COMMENT: - TOKEN_CB(PXML_COMMENT, state, 0); - break; - case ST_TEXT: - TOKEN_CB(PXML_TEXT, state, 0); - break; - default: break; /* a no-op */ - } - } - -finish: - *stateContext = (int)state; - return chunk_start - (const char *)xmlbuf; -} - diff --git a/e2sim/src/ASN1c/xer_support.h b/e2sim/src/ASN1c/xer_support.h deleted file mode 100644 index c3a36e7..0000000 --- a/e2sim/src/ASN1c/xer_support.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_SUPPORT_H_ -#define _XER_SUPPORT_H_ - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Types of data transferred to the application. - */ -typedef enum { - PXML_TEXT, /* Plain text between XML tags. */ - PXML_TAG, /* A tag, starting with '<'. */ - PXML_COMMENT, /* An XML comment, including "". */ - /* - * The following chunk types are reported if the chunk - * terminates the specified XML element. - */ - PXML_TAG_END, /* Tag ended */ - PXML_COMMENT_END /* Comment ended */ -} pxml_chunk_type_e; - -/* - * Callback function that is called by the parser when parsed data is - * available. The _opaque is the pointer to a field containing opaque user - * data specified in pxml_create() call. The chunk type is _type and the text - * data is the piece of buffer identified by _bufid (as supplied to - * pxml_feed() call) starting at offset _offset and of _size bytes size. - * The chunk is NOT '\0'-terminated. - */ -typedef int (pxml_callback_f)(pxml_chunk_type_e _type, - const void *_chunk_data, size_t _chunk_size, void *_key); - -/* - * Parse the given buffer as it were a chunk of XML data. - * Invoke the specified callback each time the meaninful data is found. - * This function returns number of bytes consumed from the bufer. - * It will always be lesser than or equal to the specified _size. - * The next invocation of this function must account the difference. - */ -ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, - pxml_callback_f *cb, void *_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_SUPPORT_H_ */ diff --git a/e2sim/src/DEF/CMakeLists.txt b/e2sim/src/DEF/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/e2sim/src/DEF/e2sim_defs.cpp b/e2sim/src/DEF/e2sim_defs.cpp old mode 100644 new mode 100755 diff --git a/e2sim/src/DEF/e2sim_defs.h b/e2sim/src/DEF/e2sim_defs.h old mode 100644 new mode 100755 index cf4a0d6..f10cebf --- a/e2sim/src/DEF/e2sim_defs.h +++ b/e2sim/src/DEF/e2sim_defs.h @@ -20,9 +20,10 @@ #ifndef E2SIM_DEFS_H #define E2SIM_DEFS_H -// #include #include #include +#include +#include #define VERSION "1.2.0" //May 2019 #define DEFAULT_SCTP_IP "127.0.0.1" @@ -38,7 +39,20 @@ char* time_stamp(void); // #define LOG_E(...) {printf("[%s]", time_stamp()); printf(__VA_ARGS__); printf("\n");} // #define LOG_D(...) {printf("[%s]", time_stamp()); printf(__VA_ARGS__); printf("\n");} -#define LOG_I(...) {printf(__VA_ARGS__); printf("\n");} +#define LOG_I(format, ...) \ + do { \ + const char *file = __FILE__; \ + const char *fileName = strrchr(file, '/'); \ + if (fileName != NULL) { \ + fileName++; \ + } \ + else { \ + fileName = file; \ + } \ + printf("[%s:%d] ", fileName, __LINE__); \ + printf(format, ##__VA_ARGS__); \ + printf("\n"); \ + } while (0); #define LOG_E(...) {printf(__VA_ARGS__); printf("\n");} #define LOG_D(...) {printf(__VA_ARGS__); printf("\n");} diff --git a/e2sim/src/SCTP/CMakeLists.txt b/e2sim/src/SCTP/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/e2sim/src/SCTP/e2sim_sctp.c b/e2sim/src/SCTP/e2sim_sctp.c old mode 100644 new mode 100755 diff --git a/e2sim/src/SCTP/e2sim_sctp.cpp b/e2sim/src/SCTP/e2sim_sctp.cpp old mode 100644 new mode 100755 index ce9d649..2c70f0e --- a/e2sim/src/SCTP/e2sim_sctp.cpp +++ b/e2sim/src/SCTP/e2sim_sctp.cpp @@ -232,10 +232,7 @@ int sctp_accept_connection(const char *server_ip_str, const int server_fd) int sctp_send_data(int &socket_fd, sctp_buffer_t &data) { - fprintf(stderr,"in sctp send data func\n"); - fprintf(stderr,"data.len is %d", data.len); int sent_len = send(socket_fd, (void*)(&(data.buffer[0])), data.len, 0); - fprintf(stderr,"after getting sent_len\n"); if(sent_len == -1) { perror("[SCTP] sctp_send_data"); @@ -269,14 +266,11 @@ Outcome of recv() int sctp_receive_data(int &socket_fd, sctp_buffer_t &data) { //clear out the data before receiving - fprintf(stderr, "receive data1\n"); memset(data.buffer, 0, sizeof(data.buffer)); - fprintf(stderr, "receive data2\n"); data.len = 0; //receive data from the socket int recv_len = recv(socket_fd, &(data.buffer), sizeof(data.buffer), 0); - fprintf(stderr, "receive data3\n"); if(recv_len == -1) { diff --git a/e2sim/src/SCTP/e2sim_sctp.h b/e2sim/src/SCTP/e2sim_sctp.h old mode 100644 new mode 100755 diff --git a/e2sim/src/SCTP/e2sim_sctp.hpp b/e2sim/src/SCTP/e2sim_sctp.hpp old mode 100644 new mode 100755 diff --git a/e2sim/src/base/CMakeLists.txt b/e2sim/src/base/CMakeLists.txt old mode 100644 new mode 100755 index 7dd379e..abda967 --- a/e2sim/src/base/CMakeLists.txt +++ b/e2sim/src/base/CMakeLists.txt @@ -21,7 +21,7 @@ add_library( base_objects OBJECT e2sim.cpp) -include_directories(../ASN1c) +include_directories(../../asn1c) target_include_directories (base_objects PUBLIC $ diff --git a/e2sim/src/base/e2sim.cpp b/e2sim/src/base/e2sim.cpp index c0abcd6..9c3ec42 100755 --- a/e2sim/src/base/e2sim.cpp +++ b/e2sim/src/base/e2sim.cpp @@ -78,6 +78,8 @@ void E2Sim::encode_and_send_sctp_data(E2AP_PDU_t* pdu) data.len = e2ap_asn1c_encode_pdu(pdu, &buf); memcpy(data.buffer, buf, min(data.len, MAX_SCTP_BUFFER)); if (buf) free(buf); + + LOG_I("Number of bytes sent via SCTP connection %d", min(data.len, MAX_SCTP_BUFFER)); sctp_send_data(client_fd, data); } @@ -221,13 +223,7 @@ int E2Sim::run_loop(int argc, char* argv[]){ memcpy(resetdata.buffer, buffer, er.encoded); - //send response data over sctp - if(sctp_send_data(client_fd, resetdata) > 0) { - LOG_I("[SCTP] Sent E2ResetRequest"); - } else { - LOG_E("[SCTP] Unable to send E2ResetRequest to RIC"); - } - + LOG_I("Test to delete ReSet code"); sctp_buffer_t recv_buf; diff --git a/e2sim/src/base/e2sim.hpp b/e2sim/src/base/e2sim.hpp old mode 100644 new mode 100755 diff --git a/e2sim/src/encoding/CMakeLists.txt b/e2sim/src/encoding/CMakeLists.txt old mode 100644 new mode 100755 index 755d00f..3b87db1 --- a/e2sim/src/encoding/CMakeLists.txt +++ b/e2sim/src/encoding/CMakeLists.txt @@ -21,7 +21,7 @@ # add_library( encoding_objects OBJECT encode_e2apv1.cpp) -include_directories(../ASN1c) +include_directories(../../asn1c) target_include_directories (encoding_objects PUBLIC $ diff --git a/e2sim/src/encoding/encode_e2apv1.cpp b/e2sim/src/encoding/encode_e2apv1.cpp index d5b0639..85d8cbf 100755 --- a/e2sim/src/encoding/encode_e2apv1.cpp +++ b/e2sim/src/encoding/encode_e2apv1.cpp @@ -929,7 +929,8 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p uint8_t *ind_message_buf, int message_length) { - fprintf(stderr, "ind1\n"); + printf("Initializing E2AP request\n"); + RICindication_IEs_t *ricind_ies = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t)); RICindication_IEs_t *ricind_ies2 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t)); RICindication_IEs_t *ricind_ies3 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t)); @@ -948,8 +949,6 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p ricind_ies->value.choice.RICrequestID.ricRequestorID = requestorId; ricind_ies->value.choice.RICrequestID.ricInstanceID = instanceId; - fprintf(stderr, "ind2\n"); - pres3 = RICindication_IEs__value_PR_RANfunctionID; ricind_ies2->id = ProtocolIE_ID_id_RANfunctionID; ricind_ies2->criticality = 0; @@ -977,8 +976,6 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p ricind_ies5->value.present = pres3; ricind_ies5->value.choice.RICindicationType = 0; - fprintf(stderr, "ind3\n"); - ricind_ies6->value.choice.RICindicationHeader.buf = (uint8_t*)calloc(1,header_length); pres3 = RICindication_IEs__value_PR_RICindicationHeader; @@ -991,30 +988,19 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p ricind_ies7->value.choice.RICindicationMessage.buf = (uint8_t*)calloc(1,8192); - - pres3 = RICindication_IEs__value_PR_RICindicationMessage; ricind_ies7->id = ProtocolIE_ID_id_RICindicationMessage; - fprintf(stderr, "after encoding message 1\n"); ricind_ies7->criticality = 0; ricind_ies7->value.present = pres3; - fprintf(stderr, "after encoding message 2\n"); - - fprintf(stderr, "after encoding message 3\n"); ricind_ies7->value.choice.RICindicationMessage.size = message_length; - fprintf(stderr, "after encoding message 4\n"); memcpy(ricind_ies7->value.choice.RICindicationMessage.buf, ind_message_buf, message_length); - fprintf(stderr, "after encoding message 5\n"); - uint8_t *cpid_buf = (uint8_t *)"cpid"; OCTET_STRING_t cpid_str; - printf("5.1\n"); - int cpid_buf_len = strlen((char*)cpid_buf); pres3 = RICindication_IEs__value_PR_RICcallProcessID; ricind_ies8->id = ProtocolIE_ID_id_RICcallProcessID; @@ -1027,39 +1013,16 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p memcpy(ricind_ies8->value.choice.RICcallProcessID.buf, cpid_buf, cpid_buf_len); - printf("5.2\n"); - RICindication_t *ricindication = (RICindication_t*)calloc(1, sizeof(RICindication_t)); - - int ret; - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies2); - - printf("5.3\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies3); - - printf("5.35\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies4); - - printf("5.36\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies5); - - printf("5.4\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies6); - - printf("5.5\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies7); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies8); - + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies2); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies3); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies4); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies5); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies6); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies7); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies8); InitiatingMessage__value_PR pres4; pres4 = InitiatingMessage__value_PR_RICindication; @@ -1078,11 +1041,13 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p char error_buf[300] = {0, }; size_t errlen = 0; - asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); + int ret = asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen); + + if(ret) { + fprintf(stderr, "Constraint validation of E2AP PDU message failed: %s\n", error_buf); + } - xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu); + //xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu); } diff --git a/e2sim/src/encoding/encode_e2apv1.hpp b/e2sim/src/encoding/encode_e2apv1.hpp old mode 100644 new mode 100755 diff --git a/e2sim/src/messagerouting/CMakeLists.txt b/e2sim/src/messagerouting/CMakeLists.txt old mode 100644 new mode 100755 index 9f85be9..dbdb6ec --- a/e2sim/src/messagerouting/CMakeLists.txt +++ b/e2sim/src/messagerouting/CMakeLists.txt @@ -24,12 +24,12 @@ add_library( messagerouting_objects OBJECT e2ap_asn1c_codec.c ) -include_directories(../ASN1c) +include_directories(../../asn1c) include_directories(../encoding) target_include_directories (messagerouting_objects PUBLIC $ - $ + $ $ PRIVATE src) diff --git a/e2sim/src/messagerouting/e2ap_asn1c_codec.h b/e2sim/src/messagerouting/e2ap_asn1c_codec.h old mode 100644 new mode 100755 diff --git a/e2sim/src/messagerouting/e2ap_message_handler.hpp b/e2sim/src/messagerouting/e2ap_message_handler.hpp old mode 100644 new mode 100755 -- 2.16.6

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 literal 401840 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